1、docker部署jenkins

docker run -d -p 7000:8080 --name py42jenkins -u root -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker詹金斯/詹金斯:高山

部署成功图如下:

命令解释:

docker run:通过镜像运行容器

– name:启动容器的名称,如culture py42jenkins

-u:指定启动用户为root(需要在启动参数中添加root权限,否则会遇到启动jenkins报权限不足的错误)

-p:容器的8080端口映射到虚拟机的7000端口,浏览器访问7000端口即可访问jenkins

-v:目录映射的目的是为了让jenkins能够执行宿主机的docker命令

-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:alpine

-d 作为守护线程运行。没有这个参数,关闭命令行,docker的jenkins就会停止。

2、检查Jenkins是否启动

执行命令:docker ps -a

status状态:up表示jenkins服务已经启动成功,显示启动端口7000

3、在浏览器中访问

通过 7000 端口

http://localhost:7000

来到jenkins配置界面

获取密码有两种方式:

第一个是:/var/jenkins_home/secrets/initialAdminPassword

二是查看容器日志命令:

码头工人日志 py42jenkins

输入管理员密码进入下一页:安装插件

下载一些依赖

下载后进入创建用户界面:

用户名和密码:admin

点击开始使用詹金斯

4、在jenkins上新建项目

1\。点击新项目

2、

然后稍等片刻:

填写git地址后会显示:无法链接

需要填写gitee仓库的用户名和密码。

点击添加:

只需选择您刚刚添加的帐户。

在这里你可以选择要拉的分支。这是主分支

这里的构建步骤是选择shell脚本

点击保存:

点击立即构建:

点击#1,回车,然后点击控制台输出:

您可以看到控制台输出:

由用户管理员启动

作为系统运行

在工作区/var/jenkins_home/workspace/py42 中构建

推荐的 git 工具是:NONE

使用凭证 7f32f8c0-75ad-4bfe-9789-cc1b0073b62f

克隆远程 Git 存储库

克隆仓库 https://gitee.com/wcystart/py42-api.git

git init /var/jenkins_home/workspace/py42 # timeoutu003d10

从 https://gitee.com/wcystart/py42-api.git 获取上游更改

git --version # timeoutu003d10

git --version # 'git 版本 2.34.1'

使用 GIT_ASKPASS 设置凭据

git fetch --tags --force --progress -- https://gitee.com/wcystart/py42-api.git +refs/heads/*:refs/remotes/origin/* # timeoutu003d10

git config remote.origin.url https://gitee.com/wcystart/py42-api.git #timeoutu003d10

git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeoutu003d10

避免第二次提取

git rev-parse refs/remotes/origin/master^{commit} # timeoutu003d10

签出修订版 b3c4e866e6077a525da4e54d066ba94f45df32bf(参考/远程/起源/主控)

git config core.sparsecheckout # timeoutu003d10

git checkout -f b3c4e866e6077a525da4e54d066ba94f45df32bf #timeoutu003d10

提交消息:“添加 dockerfile”

第一次构建。跳过更改日志。

[py42] $ /bin/sh -xe /tmp/jenkins9733523508438114569.sh

  • docker build -t py42test 。

#1 [internal] 从 Dockerfile 加载构建定义

#1粉碎机:32 dds sssssssssss0323 dds 0dbs 179465780 sssssssssssssss 0323 dds 0dbs 179465780sssssssssssss

#1 传输 dockerfile:

#1 传输 dockerfile: 188B 0.0s done

#1 完成 0.1 秒

#2 [internal] 加载 .dockerignore

#A 错误:24

#2 传输上下文:2B 完成

#2 完成 0.0 秒

#3 [internal] 为 docker.io/library/python:3-alpine 加载元数据

#prayer: 5 s.d. s.d. s.f. 19 . . . . .

#3 完成 16.6 秒

#4 [1/4] 来自 docker.io/library/python:3-alpine@sha256:dce56d40d885d2c8847aa2a278a29d50450c8e3d10f9d7ffeb2f38dcc1eb0ea4

#4 衬里:872 dd 4 dp 121345306 06 ph 434 d 13 dm s/hs 18196 sds

#4 解决 docker.io/library/python:3-alpine@sha256:dce56d40d885d2c8847aa2a278a29d50450c8e3d10f9d7ffeb2f38dcc1eb0ea4 完成

#4 sha256:eb5bc7d10d52904953df1e5f3460f4f4154b7911603a3889a35ffcb9b6e75b81 7.44kB / 7.44kB 完成

#4 sha256:dce56d40d885d2c8847aa2a278a29d50450c8e3d10f9d7ffeb2f38dcc1eb0ea4 1.65kB / 1.65kB 完成

#4 Slasher: affe0faa14e7553fc570beec3864e74b5e36f8c19b2bb49ae8ba79c0e9e7236e

#4 Slasher: d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 0B / 11.Cut 0B

#4 Slasher: c7f1ca1171d975af881f16ba8005f599918648448f8d9b0be5436dd8ba3bf1f0 0B / 231B 0.Cut

#4 Slasher: 07a400e93df3fcc09e5f874878c049b15515236f55fbf76013c0779a7cc4a301 0B / 678.30kB 0.Cut

#4 ...

#6 [internal] 加载构建上下文

#我心碎:

#6 传输上下文:224.28kB 0.4s 完成

#6 完成 0.4 秒

#4 [1/4] 来自 docker.io/library/python:3-alpine@sha256:dce56d40d885d2c8847aa2a278a29d50450c8e3d10f9d7ffeb2f38dcc1eb0ea4

#4 衬里:872 dd 4 dp 121345306 06 ph 434 d 13 dm s/hs 18196 sds

#4 提取 sha256:07a400e93df3fcc09e5f874878c049b15515236f55fbf76013c0779a7cc4a301

#4 sha256:07a400e93df3fcc09e5f874878c049b15515236f55fbf76013c0779a7cc4a301 678.30kB / 678.30kB 0.7s 完成

#4 Slasher:dc9256fcea2e541f17f0ed7d4dae23c03fb27a5ab8e7611e34f5a5e4d96d6678 0B / A. Akhab 0.Cut

#4 sha256:c7f1ca1171d975af881f16ba8005f599918648448f8d9b0be5436dd8ba3bf1f0 231B / 231B 0.8s 完成

#4 Slasher:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 1.05MB / 11.Type 1.Ezz

#4 Slasher:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 2.10MB / 11.Type 1.Sense

#4 粉碎:dc9256fcea2e541f17f0ed7d4dae23c03fb27a5ab8e7611e34f5a5e4d96d6678 851. Sahkab / A. Akhab 1. 切

#4 Slasher:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 3.15MB / 11.1.Cut 1.Cut

#4 Slasher:dc9256fcea2e541f17f0ed7d4dae23c03fb27a5ab8e7611e34f5a5e4d96d6678 1.05MB/A.Akhab 1.Cut

#4 Slasher:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 4.19mb / 11.Cut A-Cut

#4 Slasher:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 5.11MB / 11.Set。

#4 作者:dc9256fcea2e541f17f0ed7d4dae23c03fb27a5ab8e7611e34f5a5e4d96d6678 2.10MB / A. Akhab A. Khas

#4 提取 sha256:07a400e93df3fcc09e5f874878c049b15515236f55fbf76013c0779a7cc4a301 1.8s 完成

#4 镜头:dc9256fcea2e541f17f0ed7d4dae23c03fb27a5ab8e7611e34f5a5e4d96d6678

#4 Slasher:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 6. 提示 / 11. 切

#4 Slasher:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 7.34MB / 11.Tamb A. Ezz

#чша256:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 8.ШЯМБ / 11.ШЯМБ z.hs

#хша256:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 я.ЧЧМБ / 11.ШЯМБ з.штс

#4 行:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 10.49MB / 11.Type 4.0H

#4 Slasher: d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 11. Dump / 11. Dump 4. Ezz Don

#4 提取 sha256:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7

#4 提取 sha256:d8c681bc2183ac2de0b5e117ed74647ee5dfbdbf8a3730ac81c54f3b3db989f7 1.9s 完成

#4 提取 sha256:c7f1ca1171d975af881f16ba8005f599918648448f8d9b0be5436dd8ba3bf1f0 0.0s 完成

#4 提取 sha256:dc9256fcea2e541f17f0ed7d4dae23c03fb27a5ab8e7611e34f5a5e4d96d6678

#4 提取 sha256:dc9256fcea2e541f17f0ed7d4dae23c03fb27a5ab8e7611e34f5a5e4d96d6678 0.8s 完成

#4 完成 7.9 秒

#5 [2/4] 工作目录 /app

#Kh Shakht: 3950 F014 Dakhb49 第五配额49,830 不幸事件 1550416 Ysdiyi 4 S S S D Fb 4 District 4 Fahai

#5 完成 0.2 秒

#7 [3/4] 添加。 /应用程序

#H 可耻:4 D 081 sab 4 767 1 DD 00 DA 10 m o'

#7 完成 0.1 秒

#8 [4/4] RUN pip3 install -r requirements.txt -i https://pypi.douban.com/simple

#Z Shakht:3 日。

#8 4.862 查看索引:https://pypi.douban.com/simple

#8 5.391 收集美丽报告

#8 5.446 下载 https://pypi.doubanio.com/packages/b3/2c/b944e50172b72ce94f2b495a761e66ee3c4d517cee226469727749224f13/BeautifulReport-0.1.3.tar.gz (31 kB)

#8 6.567 收集 ddt

#8 6.622 下载 https://pypi.doubanio.com/packages/16/51/45518c5a2f3ffc7fa782db8e34d4c6a619765fe5d19809030c771da44cfd/ddt-1.4.4-py2.py3-none-any.whl (6.3 kB)

#8 6.996 收集冒牌货

#8 7.031 下载 https://pypi.doubanio.com/packages/33/58/02649e1b42ef4188c4a5aaec2d2ea424f50576f481646f0685e27021deb1/Faker-11.3.0-py3-none-any.whl (1.2 MB)

#8 7.399 收集 PyMySQL

#8 7.419 下载 https://pypi.doubanio.com/packages/4f/52/a115fe175028b058df353c5a3d5290b71514a83f67078a6482cff24d6137/PyMySQL-1.0.2-py3-none-any.whl (43 kB)

#8 7.683 收集 pytest

#8 7.698 下载 https://pypi.doubanio.com/packages/40/76/86f886e750b81a4357b6ed606b2bcf0ce6d6c27ad3c09ebf63ed674fc86e/pytest-6.2.5-py3-none-any.whl (280 kB)

#8 8.087 收集 PyYAML

#8 8.140 下载 https://pypi.doubanio.com/packages/36/2b/61d51a2c4f25ef062ae3f74576b01638bebad5e045f747ff12643df63844/PyYAML-6.0.tar.gz (124 kB)

#8 8.844 安装构建依赖项:开始

#8 21.95 安装构建依赖项:完成状态为“完成”

#8 21.96 获取构建轮子的要求:开始

#8 24.04 获得制造轮子的要求:完成状态“完成”

#8 24.04 准备车轮元数据:开始

#8 24.65 准备车轮元数据:完成状态为“完成”

#8 24.84 收集请求

#8 24.89 下载 https://pypi.doubanio.com/packages/2d/61/08076519c80041bc0ffa1a8af0cbd3bf3e2b62af10435d269a9d0f40564d/requests-2.27.1-py2.py3-none-any.whl (63 kB)

#8 25.02 收集 rsa

#8 25.04 下载 https://pypi.doubanio.com/packages/30/ab/8fd9e88e6fa5ec41afca995938bbefb72195278e0cfc5bd76a4f29b23fb2/rsa-4.8-py3-none-any.whl (39 kB)

#8 25.24 收集单元测试报告

#8 25.41 下载 https://pypi.doubanio.com/packages/1f/ca/4523ea890c37b80fbf6d52222ec9a133293f0cb62cf285c1296b3f275286/unittestreport-1.4.0-py3-none-any.whl (58 kB)

#8 25.51 收集 jsonpath

#8 25.53 下载 https://pypi.doubanio.com/packages/5f/c0/b54189dfe62f1a93ba294ab53508a81d440fc63adff253db369f557a996a/jsonpath-0.82.tar.gz (9.6 kB)

#8 26.24 收集 openpyxl

#8 26.26 下载 https://pypi.doubanio.com/packages/1c/a6/8ce4d2ef2c29be3235c08bb00e0b81e29d38ebc47d82b17af681bf662b74/openpyxl-3.0.9-py2.py3-none-any.whl (242 kB)

#8 26.50 收集文本-unidecodeu003du003d1.3

#8 26.52 下载 https://pypi.doubanio.com/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl (78 kB)

#8 26.90 收集 python-dateutil>u003d2.4

#8 26.94 下载 https://pypi.doubanio.com/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)

#8 27.20 收集属性>u003d19.2.0

#8 27.23 下载 https://pypi.doubanio.com/packages/be/be/7abce643bfdf8ca01c48afa2ddf8308c2308b0c3b239a44e57d020afa0ef/attrs-21.4.0-py2.py3-none-any.whl (60 kB)

#8 27.32 收集 iniconfig

#8 27.35 下载 https://pypi.doubanio.com/packages/9b/dd/b3c12c6d707058fa947864b67f0c4e0c39ef8610988d7baea9578f3c48f3/iniconfig-1.1.1-py2.py3-none-any.whl (5.0 kB)

#8 27.46 采集插件<2.0,>u003d0.12

#8 27.48 下载 https://pypi.doubanio.com/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl (13 kB)

#8 27.61 收集包装

#8 27.64 下载 https://pypi.doubanio.com/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl (40 kB)

#8 27.71 收集 toml

#8 27.74 下载 https://pypi.doubanio.com/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl (16 kB)

#8 27.93 采集py>u003d1.8.2

#8 27.97 下载 https://pypi.doubanio.com/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl (98 kB)

#8 28.31 收集 urllib3<1.27,>u003d1.21.1

#8 28.34 下载 https://pypi.doubanio.com/packages/4e/b8/f5a25b22e803f0578e668daa33ba3701bb37858ec80e08a150bd7d2cf1b1/urllib3-1.26.8-py2.py3-none-any.whl (138 kB)

#8 28.54 收集证书>u003d2017.4.17

#8 28.57 下载 https://pypi.doubanio.com/packages/37/45/946c02767aabb873146011e665728b680884cd8fe70dde973c640e45b775/certifi-2021.10.8-py2.py3-none-any.whl (149 kB)

#8 28.79 收集 charset-normalizer~u003d2.0.0

#8 28.81 下载 https://pypi.doubanio.com/packages/84/3e/1037abe6498e65d645ce7a22d3402605d49a3b2c7f20c3abb027760da4f0/charset_normalizer-2.0.10-py3-none-any.whl (39 kB)

#8 28.91 收集 idna<4,>u003d2.5

#8 28.93 下载 https://pypi.doubanio.com/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl (61 kB)

#8 29.21 采集 pyasn1>u003d0.1.3

#8 29.26 下载 https://pypi.doubanio.com/packages/62/1e/a94a8d635fa3ce4cfc7f506003548d0a2447ae76fd5ca53932970fe3053f/pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)

#8 29.31 收集 PyYAML

#8 29.34 下载 https://pypi.doubanio.com/packages/64/c2/b80047c7ac2478f9501676c988a5411ed5572f35d1beff9cae07d321512c/PyYAML-5.3.1.tar.gz (269 kB)

#8 30.42 收集神社2u003du003d3.0.3

#8 30.46 下载 https://pypi.doubanio.com/packages/20/9a/e5d9ec41927401e41aea8af6d16e78b5e612bca4699d417f646a9610a076/Jinja2-3.0.3-py3-none-any.whl (133 kB)

#8 30.54 收集请求

#8 30.57 下载 https://pypi.doubanio.com/packages/45/1e/0c169c6a5381e241ba7404532c16a21d86ab872c9bed8bdcd4c423954103/requests-2.24.0-py2.py3-none-any.whl (61 kB)

#8 30.63 收集 idna<4,>u003d2.5

#8 30.65 下载 https://pypi.doubanio.com/packages/a2/38/928ddce2273eaa564f6f50de919327bf3a00f091b5baba8dfa9460f3a8a8/idna-2.10-py2.py3-none-any.whl (58 kB)

#8 30.70 收集 urllib3<1.27,>u003d1.21.1

#8 30.75 下载 https://pypi.doubanio.com/packages/56/aa/4ef5aa67a9a62505db124a5cb5262332d1d4153462eb8fd89c9fa41e5d92/urllib3-1.25.11-py2.py3-none-any.whl (127 kB)

#8 30.85 收集 chardet<4,>u003d3.0.2

#8 30.87 下载 https://pypi.doubanio.com/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133 kB)

#8 31.24 收集 MarkupSafe>u003d2.0

#8 31.27 下载 https://pypi.doubanio.com/packages/04/69/c31e837e4bb5532b02d297152464b2cb8a0edeb9bef762c015e9b4e95e16/MarkupSafe-2.0.1-cp310-cp310-musllinux_1_hl30_x86_6

#8 31.36 收集 et-xml 文件

#8 31.38 下载 https://pypi.doubanio.com/packages/96/c2/3dd434b0108730014f1b96fd286040dc3bcb70066346f7e01ec2ac95865f/et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB)

#8 31.64 收集六个>u003d1.5

#8 31.67 下载 https://pypi.doubanio.com/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl (11 kB)

#8 31.94 收集 pyparsing!u003d3.0.5,>u003d2.0.2

#8 31.97 下载 https://pypi.doubanio.com/packages/80/c1/23fd82ad3121656b585351aba6c19761926bb0db2ebed9e4ff09a43a3fcc/pyparsing-3.0.7-py3-none-any.whl (98 kB)

#8 32.04 为收集的包构建轮子:BeautifulReport、PyYAML、jsonpath

#8 32.04 BeautifulReport (setup.py) 的构建轮:开始

#8 32.70 BeautifulReport (setup.py) 的构建轮:完成状态为“完成”

#8 32.70 为 BeautifulReport 创建了轮子:filenameu003dBeautifulReport-0.1.3-py3-none-any.whl sizeu003d33101 sha256u003d80c327569e1801884ebbc292376d949364e7429805076c14dd176911a3df3d6b

#8 32.70 存储在目录:/root/.cache/pip/wheels/c7/37/fa/bfe232474a845922df6d2cc3eedcf298a7ed6f99f705c8cf81

#8 32.71 PyYAML (setup.py) 的构建轮:开始

#8 33.62 PyYAML (setup.py) 的构建轮:完成状态为“完成”

#8 33.62 为 PyYAML 创建轮子:文件名u003dPyYAML-5.3.1-cp310-cp310-linux_x86_64.whl 大小u003d44635 sha256u003d18c89b2cba0b5b138522fdf36c812707eae6de7242ee9a9c526f17a63ff4701a

#8 33.63 存储在目录:/root/.cache/pip/wheels/31/da/33/e45f5aa9bbb53552b384354ee01ed8c96a0ac3cf2ec053535d

#8 33.64 构建 jsonpath (setup.py) 的轮子:开始

#8 34.70 jsonpath (setup.py) 的构建轮:完成状态为“完成”

#8 34.70 为 jsonpath 创建轮子:filenameu003djsonpath-0.82-py3-none-any.whl sizeu003d5612 sha256u003da3966420e4054c87bcd805e93da0e6107f6781e247fa0ac7757fa5f7d926a78e

#8 34.71 存放在目录:/root/.cache/pip/wheels/fe/7b/6b/3891918a1a9627043dc05b5c045772576acff162330cbf0d99

#8 34.72 成功构建 BeautifulReport PyYAML jsonpath

#8 35.13 安装收集到的包:urllib3, 6, pyparsing, MarkupSafe, idna, chardet, certifi, toml, text-unidecode, requests, PyYAML, python-dateutil, pyasn1, py, pluggy, Packaging, Jinja2, iniconfig, et- xmlfile, attrs, unittestreport, rsa, pytest, PyMySQL, openpyxl, jsonpath, Faker, ddt, BeautifulReport

#8 42.17 成功安装 BeautifulReport-0.1.3 Faker-11.3.0 Jinja2-3.0.3 MarkupSafe-2.0.1 PyMySQL-1.0.2 PyYAML-5.3.1 attrs-21.4.0 certifi-2021.10.8 chardet-3.0。 4 ddt-1.4.4 et-xmlfile-1.1.0 idna-2.10 iniconfig-1.1.1 jsonpath-0.82 openpyxl-3.0.9 Packaging-21.3 pluggy-1.0.0 py-1.11.0 pyasn1-0.4.8 pyparsing-3.0 .7 pytest-6.2.5 python-dateutil-2.8.2 requests-2.24.0 rsa-4.8 Six-1.16.0 text-unidecode-1.3 toml-0.10.2 unittestreport-1.4.0 urllib3-1.25.11

#8 42.17 警告:以“root”用户身份运行 pip 可能会导致权限损坏以及与系统包管理器的行为冲突。建议改用虚拟环境:https://pip.pypa.io/warnings/venv

#8 42.20 警告:您使用的是 pip 版本 21.2.4;但是,版本 21.3.1 可用。

#8 42.20 您应该考虑通过“/usr/local/bin/python -m pip install --upgrade pip”命令进行升级。

#8 完成 43.3 秒

#9 导出到图像

#AM 小气:

#9 导出图层

#9 导出层 1.2s 完成

#9 写入图像 sha256:e97396f4b4caa88cf5a198d5be2e262c7159c5921553b893245fbac068e5bcc0 完成

#9 命名为 docker.io/library/py42test 完成

#9 完成 1.2 秒

  • docker 运行 --rm py42test

[2022-01-24 10:15:00,395-test_log-INFO-/app/tools/handle_log.py-42]:测试

[2022-01-24 10:15:01,047-test_log-INFO-/app/tools/handle_excel.py-16]:案例数据文件/app/test_data/testCase.xlsx的名称

[2022-01-24 10:15:01,050-test_log-INFO-/app/tools/handle_excel.py-17]:工作表所有名称

[2022-01-24 10:15:01,107-test_log-INFO-/app/tools/handle_excel.py-28]:从用例数据文件获得的测试数据

[{'id': 1, 'title': '登录成功', 'method': 'post', 'url': 'http://api.柠檬班。 com/futureloan/member/login', 'data': '{"mobile_phone":"18100000009","pwd":"Aa123456"}', 'replace_ sql': None, 'expected_ data' : '{"code": 0, "msg": "OK"}', 'extract_ data': '{"token":"$..token","member_id":"$..id "}', 'setup_ sql': None, 'check_ db': None, 'check_ db_ Dynamic': none}, {'ID': 2,'title':'充值成功' ,'方法':'post','URL':'http://api.lemonban.com/futureloan/member/recharge','data':'{"member_id":"#member_id#" "amount":100}', 'replace_ sql': None, 'expected_ data': '{"code": 0, "msg": "OK"}', 'extract_ data': None, 'setup_ sql': None, 'check_ db': None, 'check_ db_ Dynamic': none}, {'ID': 3,'title':'成功投资','方法':'发布','网址':'http://api.lemonban.com/futureloan/member/invest','数据':'{"loan_id":"#loan_id#"," member_id":"#member_id#","amount":100}', 'replace_ sql': '["SELECT id AS loan_id FROM loan WHERE STATUS u003d 2 ORDER BY ID DESC LIMIT 1 "]', '预期_ 数据': '{"code": 0, "msg": "OK"}', ' extract_ data': None, 'setup_ sql': '["update loan set statusu003d2 where status !u003d2 order by id desc limit 1"]', 'check_ db': None, 'check_ db_ Dynamic ': 1}, {ID': 4, 'title': '审批成功', 'method': 'patch', 'URL': ' http://api.lemonban.com /futureloan/loan/audit ', '数据': '{"loan_id":"#loan_id#", "approved_or_not":True }', 'replace_ sql': '[ "SELECT id AS loan_id FROM loan WHERE STATUSu003d1 ORDER BY id DESC LIMIT 1"]', 'expected_ data': '{"code": 0, "msg": "OK"}', ' extract_ data': None, 'setup_ sql': '["update loan set statusu003d1 where status !u003d1 order by id desc limit 1"]', 'check_ db': None, 'check_db_dynamic':none},{'ID':5,'title':'新项目成功后36个月','method':'post','URL':'http ://api.lemonban.com/futureloan/loan/add ','data': '{member_id': '#member_id#', 'title':'每月标准36个月', '金额': 1000, "loan_rate": 10.0, "loan_term": 36, "loan_date_type": 1, "bidding_days": 10} ','replace'_ sql': None, 'expected_ data': '{"code": 0, "msg": "OK"}', 'extract_ data': '{"loan_id":"$..id "}', 'setup_ sql': None, 'check_ db': '{"actual_data":"select amount from loan where id u003d #loan_id#","expect_data":1000 }', 'check_ db_ Dynamic ': none}, {ID': 6, 'title': '获取用户信息', 'method': 'get', 'URL': '/member/#member _id# / Info', 'data': none, 'replace_sql': none, 'expected_data': '{"code": 0, "MSG": "OK"}','extract '_数据':无,'setup_ sql':无,'check_ db':无,'check_ db_动态':无}]

[2022-01-24 10:15:01,270-test_log-INFO-/app/test_case/test_all.py-46]:当前执行的用例数据

[2022-01-24 10:15:01,273-test_log-INFO-/app/test_case/test_all.py-53]: setup_sql 字段为空,不需要前面的 Sql 语句

[2022-01-24 10:15:01,274-test_log-INFO-/app/tools/handle_replace.py-82]:参数替换传入的数据:

{“手机_手机”:“18100000009”,“密码”:“Aa123456”}

[2022-01-24 10:15:01,275-test_log-INFO-/app/tools/handle_replace.py-83]:用例数据字段替换_sql 传入数据:

[2022-01-24 10:15:01,275-test_log-INFO-/app/tools/handle_replace.py-86]:data数据不为空,开始参数替换

[2022-01-24 10:15:01,276-test_log-INFO-/app/tools/handle_replace.py-88]:要替换的参数字段有:

[]

[2022-01-24 10:15:01,277-test_log-INFO-/app/tools/handle_replace.py-103]:不需要参数替换,返回转换为dict类型数据

[2022-01-24 10:15:01,406-test_log-INFO-/app/test_case/test_all.py-46]:当前执行的用例数据

[2022-01-24 10:15:01,407-test_log-INFO-/app/test_case/test_all.py-53]: setup_sql 字段为空,不需要前面的 Sql 语句

[2022-01-24 10:15:01,410-test_log-INFO-/app/tools/handle_replace.py-82]:参数替换传入的数据:

{“会员_id”:“#会员_id#”,“金额”:100}

[2022-01-24 10:15:01,411-test_log-INFO-/app/tools/handle_replace.py-83]:用例数据字段替换_sql 传入数据:

[2022-01-24 10:15:01,413-test_log-INFO-/app/tools/handle_replace.py-86]:data数据不为空,开始参数替换

[2022-01-24 10:15:01,415-test_log-INFO-/app/tools/handle_replace.py-88]:要替换的参数字段有:

['会员_id']

[2022-01-24 10:15:01,415-test_log-INFO-/app/tools/handle_replace.py-90]: key_list 不为空,开始参数替换

[2022-01-24 10:15:01,416-test_log-INFO-/app/tools/handle_replace.py-91]:根据数据来源获取数据,然后设置作为类属性

[2022-01-24 10:15:01,420-test_log-INFO-/app/tools/handle_replace.py-55]:替换参数keyu003dmember_id

[2022-01-24 10:15:01,421-test_log-INFO-/app/tools/handle_replace.py-71]:暂时不支持这种替换方式。请查看更换规则

[2022-01-24 10:15:01,421-test_log-INFO-/app/tools/handle_replace.py-93]:根据数据源获取数据,设置为类属性已经完成

[2022-01-24 10:15:01,422-test_log-INFO-/app/tools/handle_replace.py-95]:开始从类属性中获取参数并替换它们

[2022-01-24 10:15:01,423-test_log-INFO-/app/tools/handle_replace.py-97]:替换参数名称keyu003dmember_id

[2022-01-24 10:15:01,424-test_log-INFO-/app/tools/handle_replace.py-98]:替换参数值值u003d770683

[2022-01-24 10:15:01,424-test_log-INFO-/app/tools/handle_replace.py-100]:参数替换后,替换后的参数为:

{"member_id":"770683","amount":100}转换为dict类型的数据并返回

[2022-01-24 10:15:01,583-test_log-INFO-/app/test_case/test_all.py-46]:当前执行的用例数据

[2022-01-24 10:15:01,584-test_log-INFO-/app/test_case/test_all.py-49]:开始预执行sql语句

[2022-01-24 10:15:01,585-test_log-INFO-/app/tools/handle_db.py-42]:执行sql语句为:

更新贷款集状态u003d2,其中状态!u003d2 按 id desc 限制 1 排序

[2022-01-24 10:15:01,646-test_log-INFO-/app/tools/handle_replace.py-82]:参数替换传入的数据:

{"loan_id":"#loan_id#","member_id":"#member_id#","amount":100}

[2022-01-24 10:15:01,647-test_log-INFO-/app/tools/handle_replace.py-83]:用例数据字段替换_sql 传入数据:

["SELECT id AS loan_id FROM loan WHERE STATUS u003d 2 ORDER BY ID DESC LIMIT 1"]

[2022-01-24 10:15:01,647-test_log-INFO-/app/tools/handle_replace.py-86]:data数据不为空,开始参数替换

[2022-01-24 10:15:01,648-test_log-INFO-/app/tools/handle_replace.py-88]:要替换的参数字段有:

['贷款_id', '会员_id']

[2022-01-24 10:15:01,650-test_log-INFO-/app/tools/handle_replace.py-90]: key_list 不为空,开始参数替换

[2022-01-24 10:15:01,650-test_log-INFO-/app/tools/handle_replace.py-91]:根据数据来源获取数据,然后设置作为类属性

[2022-01-24 10:15:01,654-test_log-INFO-/app/tools/handle_replace.py-48]:replace_sql不为空,需要执行sql语句获取参数和将它们设置为类属性

[2022-01-24 10:15:01,655-test_log-INFO-/app/tools/handle_replace.py-27]:执行sql语句:

SELECT id AS loan_id FROM loan WHERE STATUS u003d 2 ORDER BY ID DESC LIMIT 1

[2022-01-24 10:15:01,657-test_log-INFO-/app/tools/handle_db.py-42]:执行sql语句为:

SELECT id AS loan_id FROM loan WHERE STATUS u003d 2 ORDER BY ID DESC LIMIT 1

[2022-01-24 10:15:01,705-test_log-INFO-/app/tools/handle_replace.py-29]:执行sql语句的结果:

[{'贷款_id':51662}]

[2022-01-24 10:15:01,706-test_log-INFO-/app/tools/handle_replace.py-32]: 遍历 sql 执行结果并将其设置为类属性

[2022-01-24 10:15:01,708-test_log-INFO-/app/tools/handle_replace.py-21]:类属性 keyu003dloan_id,valueu003d51662

[2022-01-24 10:15:01,709-test_log-INFO-/app/tools/handle_replace.py-55]:替换参数keyu003dloan_id

[2022-01-24 10:15:01,710-test_log-INFO-/app/tools/handle_replace.py-71]:暂时不支持这种替换方式。请查看更换规则

[2022-01-24 10:15:01,710-test_log-INFO-/app/tools/handle_replace.py-55]:替换参数keyu003dmember_id

[2022-01-24 10:15:01,712-test_log-INFO-/app/tools/handle_replace.py-71]:暂时不支持这种替换方式。请查看更换规则

[2022-01-24 10:15:01,714-test_log-INFO-/app/tools/handle_replace.py-93]:根据数据源获取数据,设置为类属性。结束了

[2022-01-24 10:15:01,714-test_log-INFO-/app/tools/handle_replace.py-95]:开始从类属性中获取参数并替换它们

[2022-01-24 10:15:01,715-test_log-INFO-/app/tools/handle_replace.py-97]:替换参数名称keyu003dloan_id

[2022-01-24 10:15:01,715-test_log-INFO-/app/tools/handle_replace.py-98]:替换参数值值u003d51662

[2022-01-24 10:15:01,717-test_log-INFO-/app/tools/handle_replace.py-100]:参数替换后,替换后的参数为:

{"loan_id":"51662","member_id":"#member_id#","amount":100} 转换为dict类型的数据并返回

[2022-01-24 10:15:01,717-test_log-INFO-/app/tools/handle_replace.py-97]:替换参数名称keyu003dmember_id

[2022-01-24 10:15:01,719-test_log-INFO-/app/tools/handle_replace.py-98]:替换参数值值u003d770683

[2022-01-24 10:15:01,719-test_log-INFO-/app/tools/handle_replace.py-100]:参数替换后,替换后的参数为:

{"loan_id":"51662","member_id":"770683","amount":100} 转换为dict类型并返回

[2022-01-24 10:15:01,946-test_log-INFO-/app/test_case/test_all.py-46]:当前执行的用例数据

[2022-01-24 10:15:01,947-test_log-INFO-/app/test_case/test_all.py-49]:开始预执行sql语句

[2022-01-24 10:15:01,949-test_log-INFO-/app/tools/handle_db.py-42]:执行sql语句为:

更新贷款集状态u003d1,其中状态!u003d1 以 id desc 限制 1 排序

[2022-01-24 10:15:02,001-test_log-INFO-/app/tools/handle_replace.py-82]:参数替换传入的数据:

{"贷款_id":"#loan_id#", "批准\或\未":True }

[2022-01-24 10:15:02,001-test_log-INFO-/app/tools/handle_replace.py-83]:用例数据字段替换_sql 传入数据:

["SELECT id AS loan_id FROM loan WHERE STATUSu003d1 ORDER BY id DESC LIMIT 1"]

[2022-01-24 10:15:02,002-test_log-INFO-/app/tools/handle_replace.py-86]:data数据不为空,开始参数替换

[2022-01-24 10:15:02,003-test_log-INFO-/app/tools/handle_replace.py-88]:要替换的参数字段有:

['贷款_id']

[2022-01-24 10:15:02,004-test_log-INFO-/app/tools/handle_replace.py-90]: key_list 不为空,开始参数替换

[2022-01-24 10:15:02,004-test_log-INFO-/app/tools/handle_replace.py-91]:根据数据来源获取数据,然后设置作为类属性

[2022-01-24 10:15:02,004-test_log-INFO-/app/tools/handle_replace.py-48]:replace_sql不为空,需要执行sql语句获取参数和将它们设置为类属性

[2022-01-24 10:15:02,005-test_log-INFO-/app/tools/handle_replace.py-27]:执行sql语句:

SELECT id AS loan_id FROM loan WHERE STATUSu003d1 ORDER BY id DESC LIMIT 1

[2022-01-24 10:15:02,006-test_log-INFO-/app/tools/handle_db.py-42]:执行sql语句为:

SELECT id AS loan_id FROM loan WHERE STATUSu003d1 ORDER BY id DESC LIMIT 1

[2022-01-24 10:15:02,056-test_log-INFO-/app/tools/handle_replace.py-29]:执行sql语句的结果:

[{'贷款_id':51662}]

[2022-01-24 10:15:02,056-test_log-INFO-/app/tools/handle_replace.py-32]: 遍历 sql 执行结果并将其设置为类属性

[2022-01-24 10:15:02,056-test_log-INFO-/app/tools/handle_replace.py-21]:类属性 keyu003dloan_id,valueu003d51662

[2022-01-24 10:15:02,056-test_log-INFO-/app/tools/handle_replace.py-55]:替换参数keyu003dloan_id

[2022-01-24 10:15:02,056-test_log-INFO-/app/tools/handle_replace.py-71]:暂时不支持这种替换方式。请查看更换规则

[2022-01-24 10:15:02,056-test_log-INFO-/app/tools/handle_replace.py-93]:根据数据源获取数据,设置为类属性。结束了

[2022-01-24 10:15:02,056-test_log-INFO-/app/tools/handle_replace.py-95]:开始从类属性中获取参数并替换它们

[2022-01-24 10:15:02,056-test_log-INFO-/app/tools/handle_replace.py-97]:替换参数名称keyu003dloan_id

[2022-01-24 10:15:02,057-test_log-INFO-/app/tools/handle_replace.py-98]:替换参数值值u003d51662

[2022-01-24 10:15:02,057-test_log-INFO-/app/tools/handle_replace.py-100]:参数替换后,替换后的参数为:

{"loan_id":"51662", "approved\or\not":True }转换为dict类型并返回

[2022-01-24 10:15:02,161-test_log-INFO-/app/test_case/test_all.py-46]:当前执行的用例数据

[2022-01-24 10:15:02,162-test_log-INFO-/app/test_case/test_all.py-53]: setup_sql 字段为空,不需要前面的 Sql 语句

[2022-01-24 10:15:02,162-test_log-INFO-/app/tools/handle_replace.py-82]:参数替换传入的数据:

{"member_id":"#member_id#","title":'每月标准36个月',"amount":1000,"loan_rate":10.0,"loan_term":36,"贷款_date_type":1,"bidding_days":10}

[2022-01-24 10:15:02,163-test_log-INFO-/app/tools/handle_replace.py-83]:用例数据字段替换_sql 传入数据:

[2022-01-24 10:15:02,163-test_log-INFO-/app/tools/handle_replace.py-86]:data数据不为空,开始参数替换

[2022-01-24 10:15:02,164-test_log-INFO-/app/tools/handle_replace.py-88]:要替换的参数字段有:

['会员_id']

[2022-01-24 10:15:02,166-test_log-INFO-/app/tools/handle_replace.py-90]: key_list 不为空,开始参数替换

[2022-01-24 10:15:02,167-test_log-INFO-/app/tools/handle_replace.py-91]:根据数据来源获取数据,然后设置作为类属性

[2022-01-24 10:15:02,170-test_log-INFO-/app/tools/handle_replace.py-55]:替换参数keyu003dmember_id

[2022-01-24 10:15:02,170-test_log-INFO-/app/tools/handle_replace.py-71]:暂时不支持这种替换方式。请查看更换规则

[2022-01-24 10:15:02,171-test_log-INFO-/app/tools/handle_replace.py-93]:根据数据源获取数据并设置为类属性。结束了

[2022-01-24 10:15:02,171-test_log-INFO-/app/tools/handle_replace.py-95]:开始从类属性中获取参数并替换

[2022-01-24 10:15:02,172-test_log-INFO-/app/tools/handle_replace.py-97]:替换参数名称keyu003dmember_id

[2022-01-24 10:15:02,172-test_log-INFO-/app/tools/handle_replace.py-98]:替换参数值值u003d770683

[2022-01-24 10:15:02,173-test_log-INFO-/app/tools/handle_replace.py-100]:参数替换后,替换后的参数为:

{"member_id":"770683","title":'每月标准36个月',"amount":1000,"loan_rate":10.0,"loan_term":36,"loan_date\ _type":1,"bidding_days":10}转换为dict类型并返回

[2022-01-24 10:15:02,331-test_log-INFO-/app/test_case/test_all.py-46]:当前执行的用例数据

[2022-01-24 10:15:02,332-test_log-INFO-/app/test_case/test_all.py-53]: setup_sql 字段为空,不需要前面的 Sql 语句

[2022-01-24 10:15:02,335-test_log-INFO-/app/tools/handle_replace.py-82]:参数替换传入的数据:

[2022-01-24 10:15:02,338-test_log-INFO-/app/tools/handle_replace.py-83]:用例数据字段替换_sql 传入数据:

[2022-01-24 10:15:02,339-test_log-INFO-/app/tools/handle_replace.py-107]:data 参数为空。不需要替换参数,返回空{}

token 不,不需要认证

无需更换请求的地址

错误 V3 认证方式不需要处理

['eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjc3MDY4MywiZXhwIjoxNjQzMDE5NjAxfQ._qaV51oOi12Nke0DNhX8ck4XzNrFFe5qvLULRYBM-ItxE6FJHCCC4I3aoRRdIn1KT4GgGOlHSYDny]

[770683]

eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjc3MDY4MywiZXhwIjoxNjQzMDE5NjAxfQ._qaV51oOi12Nke0DNhX8ck4XzNrFFe5qvLULRYBM-ItxE6FJHCCC4I3aoRRdIn1KT484GGOlHSY7068gpm

不需要数据库断言

test_all_001 (test_all.TestAll)执行——>[[采用]

暂不支持此替换方式

无需更换请求的地址

extract_data Null,无需响应 Extract parameters from

不需要数据库断言

test_all_002 (test_all.TestAll)执行——>[[采用]

暂不支持此替换方式

暂不支持此替换方式

接口请求前余额:183000.0

无需更换请求的地址

提取_data Null,不需要从响应中提取参数

不需要数据库断言

接口请求后余额:182900.0

test_all_003 (test_all.TestAll)执行——>[[采用]

暂不支持此替换方式

无需更换请求的地址

提取_data Null,不需要从响应中提取参数

不需要数据库断言

test_all_004 (test_all.TestAll)执行——>[[采用]

暂不支持此替换方式

无需更换请求的地址

[51663]

eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjc3MDY4MywiZXhwIjoxNjQzMDE5NjAxfQ._qaV51oOi12Nke0DNhX8ck4XzNrFFe5qvLULRYBM-ItxE6FJHCCC4I3aoRRdIn1KT484GGOlHSY7068gpm

拓展其他渠道

从 id u003d 51663u003du003du003du003du003du003du003du003d 的贷款中选择金额

从 id u003d 51663 的贷款中选择金额--------------------

test_all_005 (test_all.TestAll)执行——>[[采用]

提取_data Null,不需要从响应中提取参数

不需要数据库断言

test_all_006 (test_all.TestAll)执行——>[[采用]

所有用例都已执行,正在生成测试报告......

测试报告已生成。报告路径为:/app/reports/report.html

完成:成功

5、总结

jenkins 容器——启动python容器——在python容器中执行自动化框架

构建过程:启动jenkins——从远程仓库拉取代码——执行Dockerfile创建镜像——启动基于镜像的容器自动化框架

1\。启动 jenkins 并配置:

1\。通过jenkins镜像启动一个jenkins容器

2\。使jenkins能够执行宿主机的docker命令

-v /var/run/docker.sock:/var/run/docker.sock

-v /usr/bin/docker:/usr/bin/docker

3\。将编写好的Dockerfile和需求Txt放入项目目录并上传到远程仓库

4\。配置jenkins构建操作命令

docker build -t py42test 。

docker run --rm py42test

2\。编写Dockerfile文件搭建python自动环境镜像

来自 python:3-alpine

工作目录 /app

添加 。 /应用程序

运行 pip3 install -r requirements.txt -i https://pypi.douban.com/simple

CMD ["python3", "main.py"]

1\。选择python图像

2\。切换工作目录

3\。将jenkins拉下来的自动化代码添加到python容器的工作目录中

4\。安装自动化环境所需的依赖包:

pip3 安装冻结> requirements.txt

pip3 install -r python.txt -i https://pypi.douban.com/simple

5\。设置容器运行后执行的默认命令

CMD ["python3", "main.py"]

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐