jenkins + gitlab + harbor 容器自动化部署

推送代码至Git服务器 => 触发Jenkins服务器配置的Git Web Hooks =>

从Git服务器中pull或clone代码 => 将代码编译成二进制可执行文件 =>

构建docker镜像 => 上传docker镜像至镜像仓库 =>

从Jenkins服务器进入远程应用服务器 => 从docker镜像仓库中拉取镜像 =>

停止并删除该项目正在运行的docker容器 => 使用该新镜像构建并启动docker容器 =>

删除其他旧版本镜像 => 完成

安装Jenkins

安装Gitlab

准备harbor仓库

  • 查看 部署Harbor镜像仓库.txt

jenkins 安装CloudBees docker Build and Publish插件

配置项目:
项目–设置–构建:
Docker Build and Publish

docker jenkins 安装go环境

jenkins安装go plugin

宿主机:

cd /data/app/jenkins &&
wget https://go.dev/dl/go1.18.linux-amd64.tar.gz &&
tar xf $_

进入容器

docker exec -it docker ps | grep jenkins | awk '{print $1}' /bin/bash
mv /var/jenkins_home/go /usr/local/
cat >> /etc/profile <<EOF
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export GOPROXY=”https://goproxy.cn,direct
EOF
source /etc/profile

容器使用公网ip SNAT

1
2
3
4
# firewall-cmd --permanent --direct --passthrough ipv4 -t nat POSTROUTING -o ens192 -j MASQUERADE -s <internal_ip|internal_net/mask>
firewall-cmd --permanent --direct --passthrough ipv4 -t nat POSTROUTING -o ens192 -j MASQUERADE -s 172.17.0.2
firewall-cmd --reload

Jenkins配置邮件告警

邮箱授权码
tab.liu@wangtengcloud.com
u0ZsTkZyLjIwAyw8
邮箱地址
tab.liu@wangtengcloud.com
收信服务器(IMAP)
imap.feishu.cn
使用 SSL,端口号:993
发信服务器(SMTP)
smtp.feishu.cn
使用 SSL,端口号:465

jenkins gitlab 密钥配对

1
2
3
4
5
## jenkins 容器生成密钥
# docker exec -it jenkins /bin/bash
# ssh-keygen -t rsa
root@d0aa882b2f43:/# ls /root/.ssh/
id_rsa id_rsa.pub

gitlab添加jenkins的公钥

web: gitlab - ssh密钥
root@d0aa882b2f43:/# cat /root/.ssh/id_rsa.pub

jenkins将私钥添加到web端

web: 系统管理 - Manage Credentials - jenkins - 添加域 - 添加凭据
root@d0aa882b2f43:/# cat /root/.ssh/id_rsa