Jenkins构建完成项目后,使用nohup对项目进行后台启动会使项目直接挂掉,可以使用BUILD_ID=dontKillMe解决

JENKINS_NODE_COOKIE=dontKillMe很重要,pipeline在退出的时候,会默认清理自己发出的每个shell命令,即使使用了nohup

image-20221117202641435

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

# 防止Jenkins部署项目时,使用 nohup 后台启动项目,将进程杀掉
BUILD_ID=dontKillMe

# 防止Jenkins使用Pipline部署项目时,使用 nohup 后台启动项目,将进程杀掉
JENKINS_NODE_COOKIE=dontKillMe

# 开始关闭hugo
./stop.sh
# hugo后台启动开始
echo "---------------- hugo后台启动开始 ----------------"
nohup hugo server > hugo.log 2>&1 &
# 检测hugo是否启动成功
pId=$(ps -ef | grep hugo | grep -v grep | awk '{ print $2 }')
# 输出pId
echo "---------------- hugo的pId:$pId ----------------"
if [ -z $pId ]; then
echo "---------------- hugo启动失败 ----------------"
nohup hugo server > hugo.log 2>&1 &
else
echo "---------------- hugo启动成功 ----------------"