一、持续集成体系介绍
1、核心价值:
集成自动化测试,减少重复劳动
尽早发现和解决缺陷,减少风险
形成有机整体,明确阶段交付物
2、常见集成方案
a、阶段化
为不同的构建测试套件建立不同的CI循环周期
单元测试运行时间短,反馈较快,所以可以频繁进行
自动化测试的时间比较长,占用资源比较多,适当减少集成次数
b、过程式
将每一个步骤单元化并顺序执行
将构建与测试分离以节省时间
c、管道式(Pipeline)
所有的过程单元都运行在同一管道的上下文中,代码基线相同
当持续集成服务器发现有新的代码时,会创建新的一个管道
所有的过程单元都在这一个管道中运行
每个单元产生的产物也在该管道中有效
二、Jenkins 安装
1、下载镜像
docker pull jenkins/jenkins:lts
2、宿主机上创建jenkins相关目录
[root@mylinux1 ~]# mkdir jenkins
[root@mylinux1 ~]# chmod 777 jenkins/
3、运行容器
[root@mylinux1 ~]# docker run -d --name jenkins_1 -v /root/jenkins:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
b82867d9d32a43de2bd2092734991df3331edace8b83fbb32da783f5c902e480
[root@mylinux1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b82867d9d32a jenkins/jenkins:lts "/usr/bin/tini -- /u…" 3 seconds ago Up 2 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp jenkins_1
7658145222be selenium/node-chrome:4.0.0-rc-2-prerelease-20210923 "/opt/bin/entry_poin…" 19 hours ago Up 19 hours 0.0.0.0:5902->5900/tcp, :::5902->5900/tcp node
8d12663e9da0 selenium/hub:4.0.0-rc-2-prerelease-20210923 "/opt/bin/entry_poin…" 19 hours ago Up 19 hours 0.0.0.0:5442->4442/tcp, :::5442->4442/tcp, 0.0.0.0:5443->4443/tcp, :::5443->4443/tcp, 0.0.0.0:5444->4444/tcp, :::5444->4444/tcp hub
60ed0289df5b registry:2 "/entrypoint.sh /etc…" 29 hours ago Up 23 hours 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry
4、添加其他的参数
docker run -d -uroot -p 9095:8080 -p 50000:50000 --name jenkins -v /home/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime jenkins/jenkins
-p 9095:8080——》将容器内8080端口映射至宿主机9095端口,这个是访问jenkins的端口
-p 50000:50000——》将容器内50000端口映射至宿主机50000端口
-v /etc/localtime:/etc/localtime——》让容器使用和服务器同样的时间设置
-uroot——》使用 root 身份进入容器,推荐加上,避免容器内执行某些命令时报权限错误
-d——》后台运行容器,并返回容器ID
-v /home/jenkins_home:/var/jenkins_home——》:/var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录
5、访问jenkins
6、找到密码
[root@mylinux1 secrets]# docker exec -it jenkins_b bash
jenkins@64def9bd8a8a:/$ cd /var/jenkins_home/secrets/
jenkins@64def9bd8a8a:~/secrets$ cat initialAdminPassword
b1a41c7481c94421bf1498ab3e56334a