Jenkins Github 项目部署

Jenkins Github 项目部署

一、初始化环境

在节点安装必要的软件环境:

二、系统配置 System Configuration

2.1、Credentials

Dashboard > Manage Jenkins > Credentials

2.2、Tools

Dashboard > Manage Jenkins > Tools
JDK:

Git:

2.3、System

Dashboard > Manage Jenkins > System
GitHub:

三、Freestyle Project

3.1、General

3.2、源码管理

3.3、Triggers

3.4、Environment

3.5、Build Steps

pkill -f jenkins_demo-1.0-SNAPSHOT.jar || true
cd target
pwd
source /etc/profile
BUILD_ID=dontKillMe
nohup java -jar jenkins_demo-1.0-SNAPSHOT.jar > /usr/local/nohup.out 2>&1 &

3.6、构建后操作

四、使用 nohup 构建失败

通过 jenkins 执行 shell 脚本时,脚本中是通过 nohup java -jar xxx.jar & 的方式启动,显示执行成功,但是服务却没启动,脚本如下:

nohup java -jar xxx.jar &

4.1、原因

jenkins 默认会在构建完成后,杀掉构建过程中由 shell 命令触发的衍生进程。
jenkins 根据 BUILD_ID 识别某个进程是否为构建过程的衍生进程,故修改 BUILD_ID 后,jenkins 就无法识别是否为衍生进程,则此进程能在后台保留运行。
结论就是 Jenkins 程序只负责运行伪命令行 nuhup 命令,并不保证是否成功运行 nuhup 后面的命令。

4.2、解决

1、使用 BUILD_ID=xxx ,其中 xxx 可以是任意内容(只要不是原来的BUILD_ID内容即可),同时需要把 nohup 输出内容重定向到文件里面,如 /usr/local/nohup.out

BUILD_ID=dontKillMe
nohup java -jar jenkins_demo-1.0-SNAPSHOT.jar > /usr/local/nohup.out 2>&1 &

2、使用 at now 代替 nohup 命令。

#so "at now" will run even if java -jar fails
set +e 
#Run java app in background
echo "java -jar jenkins_demo-1.0-SNAPSHOT.jar > /usr/local/nohup.out 2>&1 &" | at now

set -e 执行的时候如果出现了返回值为非零,整个脚本就会立即退出。
set +e 执行的时候如果出现了返回值为非零将会继续执行下面的脚本。

五、开启 Webhooks

监听 git 提交自动构建:

github 项目开启钩子:
现有项目的 webhooks 选项,Payload URL:jekins地址/github-webhook/

评论

暂无

添加新评论