一、持续集成与持续交付(2)
1.jenkins的使用
1.新建项目
2.jenkins和gitlab的整合
现在想把项目代码从项目集群中拉过来,和jenkins做整合,
在clone时 出现上述问题,是因为server3上没有下载git:
[root@server3 jenkins]# yum install -y git
下载git后重新加载git仓库,又出现了如下图所示的问题,这是因为ssh免密认证没做:
此时,gitlab上的公钥有两个 一个是server2的 一个是server3的。当然 你也可以把server2的私钥传给server3(jenkins)
然后 上传私钥:
Git提交代码到gitlab,jinkens轮询检测到代码仓库的变更,触发构建。 (2)构建触发器,就是什么时候做上面我们调试的动作:
轮询< * * * * * >表示每分钟从gitlab上刷新一下
下面当然会提示你 是不是输错了 毕竟频率太快了,但是为了演示 我们可以先设置成这样:
(3)当然,我们希望当gitlab发生变更时 自动触发jenkins。我们可以如下设置(添加插件): 下图选择红框框住的,下面有一个高级选项,。
然后添加webhook 此时,我们在gitlab端做一个测试,jenkins端会主动收到 jenkins就会收到: 在终端测试: 在gitlab客户端的项目下,新建一个文件并推送到gitlab中,检查jenkins自动同步。 由下图可以看出,随着gitlab的改变,jenkins也会收到消息。这是实时触发的
我们在这里回顾一下gitlab整合jenkins , user -> git push -> gitlab -> trigger webhook -> jenkins
2.jenkins构建
Jenkins自动构建docker镜像,并上传至harbor仓库
在jenkins主机上安装docker:(具体参考之前的博客)
启动之前安装的harbor服务器 ? 安装docker用到的镜像源已在<docker-ce.repo>和<Centos7.repo>中写好(参考之前的内容),可以直接安装,然后修改网桥策略,生效后启动docker。 ? 设置解析。 (server3 上 设置仓库 解析 reg,westos,org) ? 复制证书。复制阿里云的加速器。 scp -r certs.d/ server3:/etc/docker/ scp daemon.json server3:/etc/docker/
更改gitlab的Dockerfile文件,令其自动触发给jenkins,查看构建过程如下:
构建完成后,在jenkins的本地docker镜像中可以查看到镜像 在harbor仓库中也可以看到构建成功的镜像
3.项目自动集成与交付
上面的实验 我们将dockerfile文件push到gitlab并触发jenkins自动构建将其上传到habor仓库, 那可以把下面的实验理解成 做一个测试,就是把之前上传的镜像拉取下来,测试一下 ,看看能不能跑。
顺便要在这里提一嘴,持续集成与持续交付的意义。
1.接下来,让整个流程自动的跑一边:
修改此处错误:
如此一来,便实现了整个项目的持续集成与持续交付。
我们再来回顾一遍流程: 1.user 先push项目到gitlab 2.gitlab触发jenkins build and push 镜像到 habor 3.此时触发另一个项目 docker_project_test ,来拉取镜像 并运行容器。
2.分布式结构实现项目自动集成与交付
jenkins上会有很多任务,不能在一个结点上(server3)既干构建,又干测试等等。应该把任务分布到不同的结点上去操作。
实验操作如下:
实验需要四台虚拟机,分别为server1/2/3/4,server1为harbor仓库,server2为git客户端,server3为jenkins客户端(做构建用),server4为待部署(交付)的远程主机(做测试用)。
#在server3上
scp Centos7.repo docker-ce.repo root@172.25.254.4:/etc/yum.repos.d/ //复制docker源
scp /etc/sysctl.d/docker.conf root@172.25.254.4:/etc/sysctl.d/ //复制网桥配置
cp -r /etc/docker/certs.d/ /etc/docker/daemon.json root@172.25.254.4:/etc/docker/ //复制加速器及证书
#在server4上
yum install -y docker-ce-20.10.12-3.el7.x86_64 //安装docker
sysctl --system //载入网桥配置
vim /etc/hosts //设置harbor仓库解析
vim /etc/docker/daemon.json //更改仓库为本地仓库
systemctl start docker //启动docker
docker info
下面迎来正题: 接下来 解决jenkins主机和其他机器的认证问题:
像下图这么设置全局凭证,虽然方便,不用考虑权限问题,但是不安全,这里我们方便实验,先这么做。
server4的认证问题得以解决,然后是docker_project_test的设置:
由于我们已经在server4的daemon.json文件中设置了仓库位置,所以较之前的命令有所改变:
测试:
|