Docker下部署Jenkins容器并构建python+pytest+allure接口自动化框架
话不多说,直接开干...
首先如果linux系统没安装docker容器的话(有则忽略这步),操作链接如下 : Linux下的Docker快速安装—指定版本安装docker
一、构建Jenkins容器
1、搜索Jenkins镜像源
docker search jenkins
2、pull(拉取)一个jenkins镜像,可拉取指定版本 或 (docker pull jenkins/jenkins:lts lts代表最新的长期支持版本。)
docker pull jenkins/jenkins:2.222.3-centos
下载完成后可以通过 docker images 查看所有镜像
3、创建挂载目录并修改权限
因为当映射本地数据卷时,/opt/wz/jenkins/ 目录的拥有者为root用户,而容器中jenkins用户的 uid 为 1000。
mkdir /opt/wz/jenkins
chown -R 1000 /opt/wz/jenkins
4、运行镜像生成容器 (运行命令后 出来一串编号(容器ID),则命令执行完毕 。 可用 docker ps 命令 查看当前容器运行情况)
docker run -d --privileged=true --name jenkins3 -p 8082:8080 -p 50000:50000 -v /opt/wz/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:2.222.3-centos
参数说明
--privileged :
大约在0.6版,privileged被引入docker。
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器。
--name:容器名称
-p 8082:8080:端口映射,宿主机端口:jenkins容器端口
-d:守护式方式创建容器在后台运行
-v /var/run/docker.sock:/var/run/docker.sock:将docker.sock映射到jenkins容器中
docker.sock文件是docker client与docker daemon通讯的文件
-v /usr/bin/docker:/usr/bin/docker:将宿主机docker客户端映射到jenkins容器中
额外:
-i:表示运行容器
-t:表示容器启动后会进入其命令行
-u=root:指定容器用户为root用户
二、Jenkins初始配置
1、输入下面命令查看文件中Jenkins密码 或 查看容器日志
cat /opt/wz/jenkins/secrets/initialAdminPassword #查看文件中的密码
docker logs jenkins #容器日志
浏览器输入 地址:8082即可:
输入密码后 点击继续
2、插件安装
如下会进行插件安装,如果报错,点重试即可:
3、创建管理员用户并进入系统
输入url访问地址 要记住上一步自己填的用户名和密码,然后保存继续
开始使用:
进入后的界面如下:
到这步就算是安装完成,进入系统界面了。
三、插件管理
1、系统管理》插件管理
点击【available plugins
】可根据自己使用场景 选择下载自己需要的插件,比如:Git、
HTML Publisher、Email Extension、JDK、Maven、SSH、Allure插件
2、系统管理》全局工具配置
一些中间件插件 可以再全局工具配置中进行配置(由于本Jenkins不需要打包部署,所以不细讲这部分内容 具体配置方法可百度)
以上步骤完成后,安装完成后重启jenkins
容器
docker restart jenkins1
四、Jenkins新建任务详细配置
1、新建任务
输入项目名称,构建方式根据自己项目选择即可,我这里选择的是流水线 ...(初学者便于理解 可以选择第一个自由风格,它的具体配置可百度)
2、配置任务
-
1.1配置构建记录保留规则
- 1.2构建触发器
-
1.3配置流水线任务
在配置流水线之前 先简单介绍下: 什么是流水线
jenkins 有 2 种流水线分为声明式流水线与脚本化流水线,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkins 推荐使用声明式流水线。 所以我采用的就是它
- 声明式流水线
在声明式流水线语法中,流水线过程定义在 Pipeline{}中,Pipeline 块定义了整个流水线中完成的所有工作,比如
参数说明:
agent any:在任何可用的代理上执行流水线或它的任何阶段,也就是执行流水线过程的位置,也可以指定到具体的节点
stage:定义流水线的执行过程(相当于一个阶段),比如下文所示的 Build、Test、Deploy, 但是这个名字是根据实际情况进行定义的
steps:执行某阶段具体的步骤。
列如:
//Jenkinsfile (Declarative Pipeline) pipeline { agent any stages { stage('Build') { steps { echo 'Build' } } stage('Test') { steps { echo 'Test' } } stage('Deploy') { steps { echo 'Deploy' } } } }
- 脚本化流水线
在脚本化流水线语法中,会有一个或多个 Node(节点)块在整个流水线中执行核心工作
参数说明:
node:在任何可用的代理上执行流水线或它的任何阶段,也可以指定到具体的节点
stage:和声明式的含义一致,定义流水线的阶段。Stage 块在脚本化流水线语法中是可选的,然而在脚本化流水线中实现 stage 块,可以清楚地在 Jenkins UI 界面中显示每个 stage 的任务子集。
//Jenkinsfile (Scripted Pipeline) node { stage('Build') { echo 'Build' } stage('Test') { echo 'Test' } stage('Deploy') { echo 'Deploy' } }
- 1.2.2流水线语法
根据上面的声明式流水线脚本的基础骨架,我们进行内容的填充。
- 先上结论
pipeline{ //配置执行环境 agent any //配置构建过程 stages{ stage('拉取代码'){ steps{ checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '4b8aabc5-1f1a-459b-a39d-7f66aaa7ff52', url: 'http://192.167.6.70:9001/test-team/pytest-api.git']]]) } }//stage stage('build'){ steps{ echo '开始执行shell脚本' sh 'sh build.sh' } }//stage stage('生成测试报告'){ steps{ echo '开始 生成测试报告' allure includeProperties: false, jdk: '', results: [[path: 'report/xml']] } }//stage stage('发送测试报告'){ steps{ echo '开始 发送钉钉测试报告' sh 'python Ding_send.py' } }//stage }//stage }
- 具体代码生成操作步骤如下图:
- a、checkout 检出代码 (Git地址为 Docker搭建Gitlab接口地址--->传送门待定。。 源 接口自动化框架的代码地址--->Gitee传送门)
生成的代码照葫芦画瓢 复制并填入 stage 内,如下:
stages{ stage('拉取代码'){ steps{ checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '4b8aabc5-1f1a-459b-a39d-7f66aaa7ff52', url: 'http://192.167.6.70:9001/test-team/pytest-api.git']]]) } }//stage
- b、生成Allure 测试报告
同上,如下:
stage('生成测试报告'){ steps{ echo '开始 生成测试报告' allure includeProperties: false, jdk: '', results: [[path: 'report/xml']] } }//stage
五、构建任务
点击立即构建,如下
本文来自博客园,作者:攻城狮-tester,转载请注明原文链接:https://www.cnblogs.com/zcjbky/p/18182488