测试Jenkins环境从0搭建

现在的中高级自动化测试,测试开发工程师等招聘需求上都有写,需要会CI/CD,你真的会搭建吗?测试CI/CD环境搭建,常见的环境有两种:

  • jenkins
  • gitlab-ci欢迎加入测试交流群:夜行者自动化测试(816489363)进行交流学习QAQ

成都-阿木木

上一篇文章讲了gitlab-ci环境搭建,这一篇作为姊妹篇,补充Jenkins环境搭建专题:

Jenkins是作什么的,此处不再赘述,本专题还是采用docker进行环境搭建,这也是市面上最主流的容器技术,然后指定另外一个docker容器运行测试脚本。

搭建过程如下:

  • 选择一台centos服务器(内存不小于4G)安装docker环境(其他服务器也可以,详情查看docker官方支持)安装教程
  • 安装docker-compose安装教程
  • 可选操作(修改国内下载镜像源,可以使用阿里云提供的镜像加速服务,不然下载会很慢)修改教程
  • 搜索jenkins镜像,使用docker search jenkins搜索jenkins镜像,在列表中有三个镜像:
  • jenkins这个版本看官网已经不在维护,所以不要下载
  • jenkins/jenkins这个版本亲测可用,如果需要可视化pipline操作,需要安装Blue Ocean插件
  • jenkinsci/blueocean这是最新的版本,相比上面一个最大的亮点是可以可视化pipline管道,类似gitlab-ci的管道视图,本次专题使用此版本。
[root@chineseluo ~]# docker search jenkins
NAME                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
jenkins                                Official Jenkins Docker image                   4913                [OK]
jenkins/jenkins                        The leading open source automation server       2220
jenkinsci/blueocean                    https://jenkins.io/projects/blueocean           564
  • 拉取镜像,使用docker pull jenkinsci/blueocean
[root@chineseluo ~]# docker pull jenkinsci/blueocean
Using default tag: latest
latest: Pulling from jenkinsci/blueocean
df20fa9351a1: Already exists
1cb481a13af0: Pull complete
f5efbd400588: Pull complete
7fbf3c26ba26: Pull complete
0540047d6c9d: Pull complete
485fd6d432e9: Pull complete
2fc77091a887: Pull complete
95d0dbf9fd7a: Pull complete
c913a3090f1e: Pull complete
35d4c7fc44a1: Pull complete
56eda281c994: Pull complete
5b3037357f30: Pull complete
5f3cef00cbcf: Pull complete
c3b2457cb5fd: Pull complete
a4f7cf2c02f7: Pull complete
2aa9132881ff: Pull complete
c9742d779a7a: Pull complete
Digest: sha256:7bdd8d9d29edcf6988018c15b5c2a04691d6a7a544149d5588dc5f5509dbe7dc
Status: Downloaded newer image for jenkinsci/blueocean:latest
docker.io/jenkinsci/blueocean:latest
  • 创建桥接网络(平时我们在访问docker服务时候,通常是通过端口映射的方式,如果说服务本身需要在集群内部访问另外一个服务,我们需要通过桥接网络完成)
docker network create jenkins
  • 创建两个共享数据存储卷(ps:此处也可以直接使用本地目录映射的方式进行数据卷挂载)一个是用来保存jenkins的数据,一个是存放jenkins所需的docker的TLS证书(没有TLS证书,所有人都可以访问docker)
docker volume create jenkins-docker-certs
docker volume create jenkins-data
  • 运行docker:bind容器
docker container run \
  --name jenkins-docker \
  --rm \
  --detach \
  --privileged \
  --network jenkins \
  --network-alias docker \
  --env DOCKER_TLS_CERTDIR=/certs \
  --volume jenkins-docker-certs:/certs/client \
  --volume jenkins-data:/var/jenkins_home \
  --publish 2376:2376 \
  docker:dind
  • 运行jenkinsci/blueocean
docker container run \
  --name jenkins-blueocean \
  --rm \
  --detach \
  --network jenkins \
  --env DOCKER_HOST=tcp://docker:2376 \
  --env DOCKER_CERT_PATH=/certs/client \
  --env DOCKER_TLS_VERIFY=1 \
  --publish 8080:8080 \
  --publish 50000:50000 \
  --volume jenkins-data:/var/jenkins_home \
  --volume jenkins-docker-certs:/certs/client:ro \
  jenkinsci/blueocean
  • 容器运行起来的状态:
  • jenkins 构建状态变量_jenkins 构建状态变量


  • jenkins 构建状态变量_测试工程师_02

  • 查看管理员密码:
  • 先进入jenkinsci/blueocean容器,有两种方式,任选其一:
  • 通过jenkinsci/blueocean的id进入:docker exec -it b7f5dfb87651 /bin/bash

jenkins 构建状态变量_jenkens_03

jenkins 构建状态变量_docker_04

  • 通过jenkinsci/blueocean的别名name进入:docker exec -it jenkins-blueocean /bin/bash
  • 进入容器之后:cat /var/jenkins_home/secrets/initialAdminPassword
  • 将超管密码输入到web界面的管理员界面密码输入框中,输入新创建的管理员用户等信息保存


  • 补充说明:
  • 在前面加进行插件下载的时候,我使用了代理,所以可以正常下载,如果没有使用代理,那么你需要更换国内镜像源
  • 如果你在进行插件下载时使用了代理,那么当你需要构建项目时,请将代理删除。

gitlab项目demo演示,脚本运行于jenkins这个容器中

使用本地内网的gitlab项目进行测试,我在gitlab-ci的教程中已经说明了gitlab环境的搭建过程,如果有需要请看另外一篇教程中gitlab的搭建:

  • 新建一个自由风格的项目

jenkins 构建状态变量_jenkins 构建状态变量_05


jenkins 构建状态变量_docker_06

  • 配置源码管理,选择Git,配置仓库地址和证书,SSH和HTTP两种方式配置方法不一样,下面介绍:

jenkins 构建状态变量_docker_07

  • 第一种是通过HTTP克隆远程仓库,这种比较简单:
  • 使用我们在gitlab-ci教程中新建的仓库地址:

jenkins 构建状态变量_jenkens_08


- 配置Jenkins凭据

jenkins 构建状态变量_jenkins 构建状态变量_09


jenkins 构建状态变量_测试工程师_10


- 点击构建,选择执行shell,点击保存

jenkins 构建状态变量_jenkens_11


- 进入工程,点击立即构建

jenkins 构建状态变量_软件测试_12


- 查看工作空间,我们gitlab上的代码文件已经被拉取到本地了

jenkins 构建状态变量_jenkens_13

- 查看控制台输出,输出了python test,我这里不执行python run.py文件,是因为jenkins的docker容器中没有python环境,需要的话,可以自行进入docker中安装

jenkins 构建状态变量_软件测试_14

  • 第二种通过ssh克隆远程仓库,这里面需要配置gitlab的公钥,和jenkins的私钥
  • 进入jenkins的docker容器中,生成秘钥
  • 使用docker ps查看jenkins容器的ID

jenkins 构建状态变量_jenkins 构建状态变量_15

  • 使用docker exec -it --user root dockerId /bin/bash进入容器
  • 进入/root目录,新建一个文件夹ssh_key
  • 新建一个id_rsa文件,执行ssh-keygen -t rsa -C “chineseluo”

jenkins 构建状态变量_jenkens_16


- 在ssh_key目录下生成了两个文件,一个是id_rsa私钥,一个是id_rsa.pub公钥

- 将公钥添加到gitlab的ssh_keys中
    ![在这里插入图片描述]()

jenkins 构建状态变量_测试工程师_17

- 回到Jenkins任务配置中,添加凭证

![在这里插入图片描述]()![在这里插入图片描述]()

jenkins 构建状态变量_软件测试_18

- 点击构建,查看构建结果、控制台输出、工作空间(WorkSpace)

jenkins 构建状态变量_jenkins 构建状态变量_19

jenkins 构建状态变量_软件测试_20

jenkins 构建状态变量_测试工程师_21