1.部署jenkins
2.配置git仓库地址选择track的分支
3.配置执行bash脚本编译maven工程
对应的脚本内容为:
4.配置node节点
在Jenkins->Manage Jenkins->Configure System下配置Publish Over SSH。
配置jenkins使用的公钥,并将私钥配置到目标节点。配置SSH server节点的host name,测试success后保存。
5. 在工程中配置Send build artifacts over SSH
添加Post-build Actions 选择 Send build artifacts over SSH。
Transfer Set参数:
Source files:工程目录下目标文件的相对地址。。
Remove prefix:Transfer到目标节点后要删除的上级目录。
Remote directory:目标节点上的文件夹位置。
Exec command:Transfer完成后要执行的命令。
这里在目标节点上配置了启动脚本,发布成功后执行脚本sh /root/restart.sh。
目标实例上配置了3个脚本分别是 starup.sh,shutdown.sh和restart.sh。
starup.sh,用nohup &让java程序在后台执行将pid写入指定的文件中。
#!/bin/bash
nohup java -jar /docker/cms/cms.jar --spring.profiles.active=test --server.port=8888 > /docker/cms/log.txt 2>&1 &
echo $! > /docker/cms/pid.file
shutdown.sh,从pid文件中读取java应用的进程ID并kill。
#!/bin/bash
kill $(cat /docker/cms/pid.file)
restart.sh ,先执行关闭命令再执行启动命令。
#!/bin/bash
. /root/shutdown.sh
. /root/startup.sh
保存设置后每次push代码后手动点击一下编译任务即可一键发布运行。也可以添加webhook监听push等动作来自动触发编译部署。