docker创建jenkins容器,配置python自动化测试流水线流

  1. 下载jenkins镜像
    docker pull jenkins/jenkins:lts
  2. 创建容器
    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
  1. 如何配置拉取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
  1. 构建后操作
  • 通过容器运行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"]
    
  1. 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批准签名,再次运行即可
  1. 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和激活,点击更新
  1. pipeline项目使用
  • 安装插件 pipeline
  • jenkins创建pipeline项目
  • 项目配置
    • git仓库配置
    • 不修改Jenkinsfile文件,其他的也不需要配置了
  • HTML报告样式修正
    • 可以安装Global Pre Script Plugin插件,配置system设置:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
  1. 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
  1. jenkins构建历史时间修正
  • 容器的时间之前已经有设置和宿主机同步,这里是由时区设置不对导致
  • 进入jenkins容器修改时区设置:sed -i 's/Etc\/UTC/Asia\/Shanghai/g' /etc/timezone或者用编辑器修改文件内容为Asia/Shanghai
  • 重启容器:docker restart jenkins
posted @ 2024-09-04 20:08  luckytian  阅读(74)  评论(0)    收藏  举报