一、初始化环境
在节点安装必要的软件环境:
- JDK 11 及以上 | Linux - JDK 安装
- Maven | Linux - Maven 安装
- Git | Linux - Git 安装
二、系统配置 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/
。
评论