轻松部署Jenkins+harbor+gitlab实现docker的CICD
Posted Friends of the wind
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了轻松部署Jenkins+harbor+gitlab实现docker的CICD相关的知识,希望对你有一定的参考价值。
总述
需求:
利用Jenkins+gitlab实现代码自动上线,自动部署服务到应用服务器
难点:
如何把新构建镜像自动拉取到应用服务器并自动部署容器?
一、环境
流程:
服务器列表
提示:Jenkins、harbor、应用测试主机安装docker19.03.10。
角色 | 主机名 | IP | 软件 |
---|---|---|---|
持续集成 | jenkins | 192.168.42.4 | git、jenkins-2.222 |
代码托管 | git | 192.168.42.5 | gitlab-ce-10.2.2 |
harbor | harbor | 192.168.42.6 | harbor、docker-compose 1.18.0 |
应用测试 | app | 192.168.42.3 | 运行centos7容器 |
基础环境搭建:
1)所有服务器关闭防火墙、安全策略
systemctl stop firewalld
setenforce 0
2)ssh互信
jenkins主机操作:必须能在所有其他主机登录, git、 harbor、app
ssh-keygen -t rsa
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
scp -r /root/.ssh/ 192.168.42.5:/root
scp -r /root/.ssh/ 192.168.42.6:/root
scp -r /root/.ssh/ 192.168.42.3:/root
git主机操作:仅需要与Jenkins做ssh互信
ssh-keygen -t rsa
mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
scp -r /root/.ssh/ 192.168.42.4:/root
Git的web需要重新添加key
二、步骤
1、安装harbor
1)解压
将harbor包解压到/usr/local/下
tar -zxf harbor-offline-installer-v1.7.4.tgz -C /usr/local/
2)修改配置文件
vim habor/harbor.yml
hostname: 192.168.42.1
修改域名(由于没有做DNS,所以写IP地址)
3)安装docker-compse工具
重命名
mv docker-compose-Linux-x86_64 docker-compose
移动至系统默认搜索路径
mv docker-compose /usr/local/bin/
增加执行权
chmod +x /usr/local/bin/docker-compose
查看依赖包有无安装
rpm -q yum-utils device-mapper-persistent-data lvm2
4)安装harbor
cd /usr/local/harbor
./install.sh
启动harbor,必须在 /usr/local/harbor目录(因为需要调用此目录的yaml文件)
docker-compose start
5)创建管理用户zhangsan并加入项目仓库web
2、安装gitlab
详见Git搭建与基础用法
启动
gitlab-ctl start
3、安装Jenkins
详见Jenkins部署及操作
无需创建jenkins的项目目录(创建项目,执行build,会自动在下面路径生成目录)
/var/lib/jenkins/workspace/web
和Jenkins的item name名称一样(这也是脚本会从git下载的代码存到哪的目录)
Jenkins手动构建,手动测试脚本
注意:Jenkins、harbor、APP服务器均需要修改docker配置文件,否则,没有权限使用harbor。
1)修改docker配置文件
vim /usr/lib/systemd/system/docker.service
重启docker
systemctl daemon reload
systemctl restart docker
2)创建脚本
vim /root/auto.sh
#!/bin/bash
WORKDIR=/var/lib/jenkins/workspace/web/
WEB_DIR=/root
cangkuIP=192.168.42.6
#PORT=100
IP=192.168.42.3
TIME=`date +%F-%H-%M-%S`
cd $WORKDIR && tar zcf /tmp/web-$TIME.tar.gz ./*
scp -rp /tmp/web-$TIME.tar.gz $cangkuIP:$WEB_DIR
ssh root@$cangkuIP "cd $WEB_DIR && tar xf web-$TIME.tar.gz"
ssh root@$cangkuIP "cd $WEB_DIR && docker build -t web ."
ssh root@$cangkuIP "cd $WEB_DIR && docker login -u zhangsan -p Harbor12345 192.168.42.6"
ssh root@$cangkuIP "cd $WEB_DIR && docker tag web 192.168.42.6/web/web"
ssh root@$cangkuIP "cd $WEB_DIR && docker push 192.168.42.6/web/web"
ssh root@$IP "cd $WEB_DIR && docker pull 192.168.42.6/web/web"
ssh root@$IP "cd $WEB_DIR && docker tag 192.168.42.6/web/web web"
ssh root@$IP "docker run -dit web /bin/bash"
赋予执行权:
chmod +x /root/auto.sh
3)验证:
查看harbor仓库是否自动上传镜像:
APP服务器自动运行容器:
4、关联脚本,自动上传
1)将脚本添加到Jenkins里(省略source code management、build triggers配置)
2)在gitlab关联Jenkins(添加钩子)
3)在gitlab上push代码,测试自动构建上传
vim /var/lib/jenkins/workspace/web/dockerfile
FROM centos:7
RUN echo 123456 > /tmp/a.txt
CMD /bin/bash
4)验证:
Jenkins无人工干预执行,实现持续交付、部署
也可看到过程,最后Finished: SUCCESS
查看APP服务器:
以上是关于轻松部署Jenkins+harbor+gitlab实现docker的CICD的主要内容,如果未能解决你的问题,请参考以下文章
Docker+Harbor+Jenkins+Gitlab自动化CICD构建
Jenkins + Gitlab + harbor + Kubernetes实现CI/CD
Jenkins + Gitlab + harbor + Kubernetes实现CI/CD