测试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
- 容器运行起来的状态:
- 查看管理员密码:
- 先进入jenkinsci/blueocean容器,有两种方式,任选其一:
- 通过jenkinsci/blueocean的id进入:docker exec -it b7f5dfb87651 /bin/bash
- 通过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的搭建:
- 新建一个自由风格的项目
- 配置源码管理,选择Git,配置仓库地址和证书,SSH和HTTP两种方式配置方法不一样,下面介绍:
- 第一种是通过HTTP克隆远程仓库,这种比较简单:
- 使用我们在gitlab-ci教程中新建的仓库地址:
- 配置Jenkins凭据
- 点击构建,选择执行shell,点击保存
- 进入工程,点击立即构建
- 查看工作空间,我们gitlab上的代码文件已经被拉取到本地了
- 查看控制台输出,输出了python test,我这里不执行python run.py文件,是因为jenkins的docker容器中没有python环境,需要的话,可以自行进入docker中安装
- 第二种通过ssh克隆远程仓库,这里面需要配置gitlab的公钥,和jenkins的私钥
- 进入jenkins的docker容器中,生成秘钥
- 使用docker ps查看jenkins容器的ID
- 使用docker exec -it --user root dockerId /bin/bash进入容器
- 进入/root目录,新建一个文件夹ssh_key
- 新建一个id_rsa文件,执行ssh-keygen -t rsa -C “chineseluo”
- 在ssh_key目录下生成了两个文件,一个是id_rsa私钥,一个是id_rsa.pub公钥
- 将公钥添加到gitlab的ssh_keys中
![在这里插入图片描述]()
- 回到Jenkins任务配置中,添加凭证
![在这里插入图片描述]()![在这里插入图片描述]()
- 点击构建,查看构建结果、控制台输出、工作空间(WorkSpace)