利用Jenkins构建和发布Docker镜像,并在远程服务器上线
目录
- 安装和配置Jenkins
- 构建和发布Docker镜像
安装和配置Jenkins
准备一个操作系统,并安装Docker,具体可以参考Docker文档
若是Linux操作系统,应增加docker用户组并将当前作业用户添加进组,否则必须使用
sudo
升权执行sudo groupadd docker sudo usermod -aG docker ${USER}
退出登陆或重启系统后即可直接运行docker
拉取Jenkins相关Docker镜像并运行
拉取并运行
blueocean
版本的Jenkins镜像:docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean
为了支持SSH操作,拉取并运行
jenkins/ssh-agent
镜像:cat pub.key | docker run jenkins/ssh-agent
*
pub.key
为配置相关证书密钥中Jenkins容器的公钥
配置Jenkins:
- 浏览器打开Jenkins镜像宿主机IP地址所在8080端口,如:http://localhost:8080
- 使用上一步启动Jenkins获得的初始密码进入系统并创建用户
- 进入Manage Jenkins -> Manage Plugins添加
Maven Integration plugin
、GitLab Plugin
和SSH plugin
、Docker Pipeline
这些插件 - 进入Manage Jenkins -> Global Tool Configuration配置JDK、Git、Maven、Docker
配置相关证书密钥和用户名密码,为连接GitHub、Gitlab,Docker私服、远程服务器做准备:
配置Jenkins自身的证书:进入Jenkins所在容器,创建SSH密钥/证书,并添加进Jenkins系统中(用来从Github/Gitlab下载源码)
# 进入jenkins容器,假设容器ID为abc docker exec -it abc /bin/bash # 生成证书,默认在/var/jenkins_home/.ssh/下有id_rsa和id_rsa.pub两个密钥和公钥 ssh-keygen -t rsa
- 将公钥作为Deploy Key添加进对应的Github或者Gitlab项目中
- 在Manage Jenkins -> Credentials中添加此密钥(Jenkins自身密钥)
- 继续添加Docker私服的用户名密码
- 继续添加远程服务器SSH登陆的用户名密码
创建Jenkins构建脚本
- 若是Maven项目,可以选择Maven项目构建;若是纯Docker构建,直接选择Freestyle
- 配置source为Git,输入repo地址(
git@
开头),并选择Jenkins自身密钥作为凭证(Credentials) - 添加构建步骤,选择Docker构建和发布,输入Dockerfile所在文件夹,若就在根目录则不必输入
- 选择使用Docker构建,设置镜像名称为Docker私服地址/用户/镜像名,勾选发布镜像,并选择Docker私服的凭证
- 在触发条件出选择push event,将对应的Webhook填写到GitHub/Gitlab对应项目的Webhook设置中去
- 测试构建脚本(略)
- 在远程服务器上线
通过布置一个脚本,进行远程登录+拉取并运行docker镜像,即可实现在远程服务器上上线的操作。