docker创建jenkins容器,配置python自动化测试流水线流
- 下载jenkins镜像
docker pull jenkins/jenkins:lts - 创建容器
docker run -id -p 8080:8080 -u root -p 50000:50000 --name jenkins -v jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock --restart=always jenkins/jenkins:lts
- docker用户运行容器:-u root
- jenkins容器持久化:-v jenkins_home:/var/jenkins_home
- 容器与宿主机时间同步:-v /etc/localtime:/etc/localtime
- 共享docker命令:-v /usr/bin/docker:/usr/bin/docker
- 共享守护进程-v /var/run/docker.sock:/var/run/docker.sock
- 如何配置拉取gitee代码
- 如果只拉取代码,安装Git plugin插件也够了
- 有其他用途,如推送结果、评论等,等可以安装gitee插件
- 去docker容器内部生成ssh密钥
ssh-keygen -t rsa -C "email.com" -f filename_rsa - 公钥配置到gitee
- 到容器验证一下gitee指纹即运行代码:
ssh -T git@gitee.com,之后会有一个gitee的确认信息输入yes,通过后~/.ssh目录会多一个known_host - 私钥配置到jenkins--job的Git设置上
- 将known_host内容配置到Dashboard >>> Manage Jenkins >>> Security >>> Git Host Key Verification Configuration >>> Manually provided keys
- 构建后操作
-
通过容器运行python代码,下面代码可以放入start.sh中,在容器中执行sh start.sh
echo "运行容器python代码" docker run --rm -w=$WORKSPACE --volumes-from=jenkins python:lable echo "python代码执行成功"- -w=$WORKSPACE:WORKSPACE为jenkins容器的环境变量,-w指定执行命令时所在的目录,一般是jenkins的item目录
- --volumes-from=jenkins:将jenkins容器卷挂载到python容器中实现了数据共享
由于上面指定了工作目录,那这里创建容器后会在,item目录执行命令:python main.py python:lable镜像的Dockerfile: CMD是容器创建后会自动运行的命令,创建容器时如果传入了命令则会被覆盖 FROM python:alpine3.20 WORKDIR /app ADD ./requests.txt /app RUN pip install -r requests.txt -i https://pypi.tuna.tsinghua.edu.cn/simple CMD ["python","main.py"]
- jenkins测试报告展示
- 安装HTML Publisher plugin插件
- 配置报告目录(项目根目录相对路径)
- 修改index.html为*.html
- html报告样式丢失解决方案
- 可以安装Groovy插件,配置job设置Execute system Groovy script:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","") - 也可以安装Global Pre Script Plugin插件,配置system设置:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","") - 第一次运行会有
In-process Script Approval安全提示,点击approve批准签名,再次运行即可
- 可以安装Groovy插件,配置job设置Execute system Groovy script:
- WebHook配置
- 安装gitee插件
- Build Triggers下勾选Gitee webhook,这里显示的URL复制到Gitee
- gitee中WebHooks位置:仓库-->管理-->WebHooks
- Gitee 触发构建策略:Pull Requests
- 更新 Pull Requests:Both XXXX 勾选:接受 Pull Requests
- 允许触发构建的分支 > 根据分支名过滤 > 包括:[分支名称如:master]
- Gitee WebHook 密码:点击生成后,复制到Gitee
- Gitee WebHook选择事件:Push、Pull Request和激活,点击更新
- pipeline项目使用
- 安装插件 pipeline
- jenkins创建pipeline项目
- 项目配置
- git仓库配置
- 不修改Jenkinsfile文件,其他的也不需要配置了
- HTML报告样式修正
- 可以安装Global Pre Script Plugin插件,配置system设置:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
- 可以安装Global Pre Script Plugin插件,配置system设置:
- allure插件配置
- python中allure不支持unittest,所以首先项目是要支持pytest的
- 上述python镜像需要加入pytest和插件allure-pytest重新build一下
- 如果镜像已经有了依赖模块,修改start.sh,在docker run 最后面添加 /python main_pytest.py 覆盖镜像原有操作
- jenkins中allure插件安装
- jenkins容器中allure服务安装
- 安装jdk并配置到环境变量,因为这里是在jenkins环境中,原本就已经java环境,这里不需要配置
- allure官方仓库下载安装包到服务器,解压
- 配置环境变量:在/etc/profile最后追加
export PATH=$PATH:/mnt/allure-2.30.0/bin(这里是自己的allure解压的bin目录)配置后使用source /etc/profile将配置的环境变量读取到环境中来 - 查看allure命令执行权限
ls -l /mnt/allure-2.30.0/bin,没有执行权限的话去bin目录加一下chmod 750 allure*
- jenkins配置
- Manage Jenkins --> Tools --> Allure Commandline installations --> Name:自己取名字,Installation directory:Jenkins容器中allure安装目录如:/mnt/allure-2.30.0,不要配bin目录
- item --> Configure --> 最下面Add post-build action --> Allure Report --> Path里面配置python项目中allure测试报告生成相对路径,如:
reports/allure_reports
- jenkins构建历史时间修正
- 容器的时间之前已经有设置和宿主机同步,这里是由时区设置不对导致
- 进入jenkins容器修改时区设置:
sed -i 's/Etc\/UTC/Asia\/Shanghai/g' /etc/timezone或者用编辑器修改文件内容为Asia/Shanghai - 重启容器:
docker restart jenkins

浙公网安备 33010602011771号