配置Jenkins免密登陆git主机
https://blog.csdn.net/bluetjs/article/details/75674906
https://jingyan.baidu.com/article/e5c39bf5e28f2e39d660337b.html
在凭据-->系统中找到“全局凭据”
添加一个全局凭据,类型选择为“SSH Username with private key”
将Jenkins主机上的私钥粘贴到“private Key”中,然后保存
[root@localhost ~]# cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAzOXaL/wQb5pgns1hGsC1rIr1MUU/WH3DA50OoX2re0p4Slsd
uUB6wzh0o3nuhIW2TA3JQsdYBEU2IRjhz8OxX5dq6Nw7Hdv0UyyQPBsn7YBUCOfC
vsBLvS9ZXIFmuvpuQ6D8S16JJ9fdJzmKT00sygAPG/1ou3L+hq32M4jpZtOeDqn3
UmcGFepCQKsupA0wNeefo4UMLqjEcGLUM1fJp9GhS3xHpRkWvppiG5h1HheGf+oE
6PnwNaJK0umPJO98AjQTt/bRqAiua/7vQwVoURtVUEUnJ64UdjlpEg568qCcK8Gs
zPiVZ/m12eHUgF5lc57QQO0Q+ZoboLACf33JDwIDAQABAoIBAGSPGjoal2ZueaT2
XwXmNkNsH1IDDke70Q3g8uFG7/YeYlL7zOayQo21E2l32huoFAPXcEMZ2pSd8ybj
M0/oVxD3Gz0VeN36qTp40IDvQvVI2fVU6Tr83S8IIe9IgsaZSaxfQfMrflzTkHJD
xyGMWsL4rHGsOM5mbYxjrEU2mHYh2/uwCg36NAu2YxbV+xmD0JDosRU8wNynIHeW
y4xhZfKxj3983lBg4TGTBxoiGhZPSoiZhFr4RzZaS8Lk7gTdkcS6VBMpnYiomXNX
LWtjzGBcw1wf3oZU0sGuVKuiDwieLHP5tqbvFhMch7Jwho5z8kYAacqdYMQMufL1
eBZNRkECgYEA+XfGb0+coU+fsiI/AG+7rE1apwv7wlsnQj9a8P9rRbRFYuttuH54
hGmvlTFkI/7QOa8rpEUXAVjfWG6hpHX8ABQRJkq1FW6P1C8dZ0cjFR83tvj28Aaf
ys+ypyYAuySzCjR+/x0dzezu5PT8T5xppNBoJ8X65c1h3KkRiZIZH1kCgYEA0kNR
IbP+DHnMwNnu2vR+hBf6QEXsgdDlNm4ZiDAYjyAXarcw/gdWidf0skIYph+N2AHF
oPJb9Zc/6+M1edbgthPtDZoZ9ysQmhZKLD3XHspIcq+IEtl1v656GX1V1qRW6OUo
7vKB0a7JyGbidHBeUVIKP1S3b0KnHiVfid3IRqcCgYBChst3Qa7OYdJ/iZxtfF56
+4HyTELOOMrGYujYnfS4ePOMBqaS7b8r6Jc3XR2Mb9aNm4Yy323cIRwmlBItLn2O
c8uC/6c82OgoOIxJz3Gun02XUNthdRLF3g+RfZPyVD4euZMoa1ZYZRfsHNzwShDu
L9mmyag4AkZXtwqDOl/SuQKBgDE2VkfoI97xpw3ANFqE/ROXtRfUBd4AcZWCwXER
qL3fCfwNMmdSelu68ufB9pjzK7TR/VqFPybFJs3kGQESXPfgxAv59HfYWYNnEic2
tiHbwIcvNE8NHLUndiZ/IlchkcHi2OjMU7wrB8li4z/TiQ/JfuKBxolA9XJl1u2i
vhxjAoGAd0NhBROVcPhxt06IdWPBUK+ADCA+lOCCHY6iJfy5v7+CmPrlMWIA+3JG
z7E1Ob9Rq+8KQiY1Vvz5QML+1gA41exjPSqmlC4p4F+lVHYfl0dPdivra8wuY0o2
9opCFf4fOtChvDSGF23reHdYVZwC08DjSvuam1aNj0zU/sj9z+w=
-----END RSA PRIVATE KEY-----
安装ssh插件
系统管理 -》 管理插件 -> 添加 SHH plugin
系统设置中添加ssh remote hosts
再在Jenkins中创建新的Credentials。类型是SSH Username with private key。Username使用ssh-keygen中用到的邮箱,Private Key中选择“From the Jenkins master ~/.ssh”即可。
主页面 -> 凭据 -> 系统 -> 全局凭据 -> 添加凭据:
安装ssh插件
系统管理 -》 管理插件 -> 添加 SHH plugin
系统设置中添加ssh remote hosts
在Jenkins界面,系统管理->Configure(配置)->SSH remote hosts
配置要SSH远程连接的服务器信息,示例如下:
Hostname: SSH服务器的地址
Port: 22
User Name: 登录用户名
Password/Passphrase: 登录密码
构建一个Maven项目
主页面 -> 新建任务 -> 输入任务名称,构建一个Maven项目:
注意:如果没有显示“构建一个Maven项目”选项,需要在管理插件里安装“Maven Integration plugin”插件。
配置Git参数化构建:(下面的默认值写master就好)
动态获取Git仓库tag,与用户交互选择Tag发布:
指定项目Git仓库地址:
修改*/master为$Tag,Tag是上面动态获取的变量名,表示根据用户选择打代码版本。
设置maven构建命令选项:
利用pom.xml文件构建项目。
在Jenkins本机镜像构建与推送到镜像仓库,并SSH远程连接到Docker主机使用推送的镜像创建容器:
上图中,在Jenkins主机执行的Shell命令如下:
REPOSITORY=10.0.0.30:5000/solo:${Tag}
# 构建镜像
cat > Dockerfile << EOF
FROM 10.0.0.30:5000/tomcat-85:latest
RUN rm -rf /usr/local/tomcat/webapps/ROOT
COPY target/*.war /usr/local/tomcat/webapps/ROOT.war
CMD ["catalina.sh", "run"]
EOF
docker build -t $REPOSITORY .
# 上传镜像
docker push $REPOSITORY
上图中,SSH远程Docker主机执行的Shell命令如下:
REPOSITORY=10.0.0.30:5000/solo:${Tag}
# 部署
docker rm -f blog-solo |true
docker image rm $REPOSITORY |true
docker container run -d --name blog-solo -v /usr/local/jdk1.8:/usr/local/jdk -p 88:8080 $REPOSITORY
注:容器名称blog-solo,暴露宿主机端口88,即使用宿主机IP:88访问blog-solo项目。
blog-solo项目已配置完成,开始构建:
选择tag,开始构建:
点击左下角构建历史里,右击第一个查看控制台输出:
浏览器访问solo项目:http://192.168.0.218:88
Jenkins与Docker的自动化CI/CD实战
如果输出上述页面说明是正常的,页面没有加载成功样式,需要修改下项目里访问地址。
至此,自动化CI环境搭建完成,你可以模拟提交代码并打tag测试自动化发布流程。
若你在容器运维中,遇到容器方面的问题,可以给我微信↓。同样,若发现有任何纰漏,还请随时指正,相互学习,共同进步!
参考文档:
https://www.cnblogs.com/superGG1990/p/6844952.html
https://www.jianshu.com/p/76c9defc7099
https://blog.csdn.net/w252064/article/details/82691343