第四章Jenkins实现jar包⾃动化部署
⼀、需求
在公司内部服务器配置CI/CD,实现后端本地打包,推送到远程服务器发布运⾏。
⼆、安装远程发布插件
#1.打开浏览器,登录jenkins
#2.点击系统管理,选择插件管理
#3.选择可选插件,点击搜索框输⼊Publish Over SSH,勾选上,然后点击直接安装
三、配置远程服务器连接信息
#1.点击系统管理,选择系统配置
#2.补充本地服务器密钥信息
#3.点击新增,添加远程服务器信息,点击⾼级,勾选使⽤密码,填⼊远程服务器⽤户的私钥,点击Test Configuration出现Success表⽰配置正确。
四、Jenkins添加全局凭证
1.凭证简介
有许多第三⽅⽹站和应⽤程序可以与Jenkins进⾏交互,例如代码仓库GitHub等。
此类应⽤程序的系统管理员可以在应⽤程序中配置凭证以专供Jenkins使⽤。通常通过将访问控制应⽤于这些凭证来完成这项⼯作,以“锁定Jenkins可⽤的应⽤程序功能区域”。⼀旦Jenkins管理员在Jenk
Jenkins中保存的凭证可以⽤于:
1)适⽤于Jenkins的任何地⽅(即全局证书)。
2)特定的Jenkins项⽬。
3)特定的Jenkins⽤户。
2.凭证分类
Jenkins可以保存下⾯⼏种凭证:
1)Secret text:例如 API Token(例如GitHub的个⼈access token)。
2)Username with password:指的是登录GitHub的⽤户名和密码,可以作为单独的组件处理,也可以作为username:password格式的冒号分割字符串来处理。
3)Secret file:实际上是⽂件中的秘密内容。
4)SSH Username with private key:即使⽤私钥的SSH ⽤户名。这是⼀个SSH 秘钥对。公钥配置在GitHub上⾯,这⾥添加私钥。
5)Certificate:即证书。⼀个PKCS#12证书⽂件和可选的密码。
6)Docker Host Certificate Authentication:即Docker主机证书⾝份验证凭证。
3.凭证安全
为了确保安全,Jenkins中配置的凭据在Jenkins主实例中加密存储(通过Jenkins实例的ID来加密),并且只能通过它们的凭据ID在Pipeline项⽬中处理。
这样就最⼤限度地减少了向Jenkins⽤户暴露实际证书本⾝的可能性,并且限制了将功能证书从⼀个Jenkins实例复制到另⼀个Jenkins实例的能⼒。
4.添加凭证
#1.Jenkins服务器⽣成SSH-Key
[root@staging ~]# ssh-keygen -t rsa -C "hui.jin@dataxgroup"
所有选项都是默认,⼀直回车即可⽣成。
#2.查看密钥
[root@staging ~]# ll .ssh/
total 12
-rw------- 1 root root 3243 Jan 19 07:57 id_rsa #私钥
-rw-r--r-- 1 root root 748 Jan 19 07:57 id_rsa.pub #公钥
#3.打开浏览器,登录gitlab
#4.点击右上⾓设置
#5.点击SSH密钥,填⼊jenkins⽤户公钥,写⼊⾃定义标题,点击添加密钥
#6.回到jenkins界⾯,点击系统管理 --> Manage Credentials --> 全局
#7.点击添加凭据,选择SSH Username with private key,添加⾃定义描述,选择jenkins登录⽤户,添加私钥,私钥为上⾯服务器⽣成的密钥信息,命令:cat ~/.ssh/id_rsa,最后点击确定#8.发现全局凭证下多了⼀个凭证,⾄此添加全局凭证结束
五、编写执⾏脚本
#1.登录远程服务器,新建后端项⽬存放⽬录
[appdeployment@mjndev ~]$ mkdir /data/backproject/demo01/
#2.编写执⾏脚本
[appdeployment@mjndev ~]$ cd /data/backproject/demo01/
[appdeployment@mjndev demo01]$ vim run.sh
#!/bin/bash
BUILD_ID=DONTKILLME
pid=$(ps -ef|grep demo-0.0.1.jar|grep -v grep | awk '{print $2}')
function stop(){
if [ -n "$pid" ]
then
echo "pid进程 :$pid"
kill -9 $pid
else
echo "进程没有启动"
fi
}
stop
sleep 5s
function start(){
cd /data/backproject/demo01/ && nohup /opt/jdk1.8.0_20/bin/java -jar -Duser.timezone=GMT+08 demo-0.0.1.jar --server.port=8888 &
exit
}
maven打包本地jar包start
#3.添加执⾏权限
[appdeployment@mjndev demo01]$ chmod +x run.sh
六、构建maven项⽬
#1.新建视图略,点击新建任务
#2.输⼊项⽬名称,选择构建⼀个maven项⽬,点击确定按钮。
#3.选择源码管理,从gitlab拉取代码
#4.选择pre steps --> Add post build steps --> 执⾏shell 写⼊脚本执⾏打包操作
#5.选择post steps --> Add post build steps --> Send files or execute commands over SSH,填写下图中定义内容,最后保存退出。
七、测试结果
#1.点击⽴即构建,点击左下⾓正在构建的任务
#2.选择控制台输出,查看最后状态为Success
#3.进⼊远程服务器,查看是否有jar包进程
[appdeployment@mjndev ~]$ ps -ef |grep 8888
appdepl+ 1023 24185 0 16:14 pts/6 00:00:00 grep --color=auto 8888
appdepl+ 32216 32215 1 16:03 ? 00:00:08 /opt/jdk1.8.0_20/bin/java -jar -Duser.timezone=GMT+08 demo-0.0.1.jar --server.port=8888 #4.打开浏览器,输⼊远程服务器ip:port/t
est/hz,出现想要的界⾯即表⽰成功。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论