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】可根据自己使用场景 选择下载自己需要的插件,比如:GitHTML 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

 五、构建任务

点击立即构建,如下

 

posted @ 2024-05-13 17:11  攻城狮-tester  阅读(496)  评论(0编辑  收藏  举报