jenkins自动构建docker镜像,并上传至harbor仓库
在jenkins的项目中
手动推送并查看
# docker images
在harbor仓库查看
上传完成
出现报错的可能:jenkins.sock文件没有给权限
认证出现报错:使用harbor用户密码
gitlab自动触发jenkins
第一:在jenkins的设置中找gitlab的插件并安装,安装完成后
第二:在gitlab主机中点击管理中心-设置-网络 打开允许webhook和服务对本地网络的请求
第三:将jenkins中的URL 和secret token写入gitlab中的Webhooks中
jenkins
在gitlab主机中
第四:测试jenkins是否可以触发,上传镜像到harbor
在jenkins中出现26次触发
在harbor仓库中查看
第五:构建好jenkins自动触发(做容器构建时需要用jenkins用户去执行,需要提升jenkins用户的权限)
测试:在gitlab中跟新index.html
未更新前jenkins中访问:
# curl localhost
在jitlab中去跟新index.html
在haobor仓库中查看
在jenkins中继续访问
# curl localhost
远程构建镜像
Jenkins使用tls方式连接docker构建主机
第一:在远程主机server2中,安装docker-ce。
第二:生成key和ca证书,然后生成server-key和csr文件,然后使用ip地址方式进行tls连接
# openssl genrsa -aes256 -out ca-key.pem 4096
# openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem 生成key和ca证书
# openssl genrsa -out server-key.pem 4096
# openssl req -subj "/CN=server2" -sha256 -new -key server-key.pem -out server.csr 生成server-key和csr文件
# echo subjectAltName = DNS:server2,IP:172.25.254.2,IP:127.0.0.1 >> extfile.cnf 使用ip地址方式进行tls连接
# echo extendedKeyUsage = serverAuth >> extfile.cnf
# openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
第三:安装docker证书
# cp /usr/lib/systemd/system/docker.service /etc/systemd/system/docker.service
# vim /etc/systemd/system/docker.service 更改配置,加入参数 启用tls校验,以及认证需要的证书。开启server端tcp连接端口2376
# cp ca.pem server-cert.pem server-key.pem /etc/docker/ 将本机用到的证书移动到/etc/docker中
# systemctl daemon-reload 重新加载
# systemctl restart docker 重启服务
# netstat -antlp 查看端口
第四:生成客户端key和证书
# openssl genrsa -out key.pem 4096
# openssl req -subj '/CN=client' -new -key key.pem -out client.csr
# echo extendedKeyUsage = clientAuth > extfile.cnf
# openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
第五:在jenkins主机server1中
第六:禁用docker项目,进行测试(注意在远程主机添加harbor主机的解析)
在远程主机中查看
在harbor仓库中
jenkins的交付
git -> gitlab -> jenkins -> 远程 -> harbor
第一:在jenkins中安装插件ssh
第二:在jenkins配置管理中找到SSH remote hosts
第三:在docker项目中,删除对本机操作的shell 添加ssh连接远程主机执行shell
测试:在gitlab中git -> gitlab -> jenkins -> 远程 -> harbor
也可以手动触发docker项目
查看获取的镜像