jenkins使用shell脚本自动部署java项目,nohup启动不成功

在Jenkins版本2.400中,执行脚本时由于jenkins会在构建结束时关闭shell进程,导致nohup启动的项目被自动关闭。为了解决这个问题,对于自由风格项目,可以在Executeshell中设置BUILD_ID变量避免进程被关闭;对于流水线项目,需要设置JENKINS_NODE_COOKIE变量并使用bash执行脚本。这种方法已测试于自由风格和流水线项目。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

百度搜索了很长时间,很多种说法,但是都没说太明白,整合了很长时间,测出来了解决方法,仅测试了自由风格项目和流水线项目,其他的选项未测试,jenkins版本2.400。

 

以下为正文:

执行脚本时,因为jenkins会在构建结束时,将shell运行期间产生的进程全部关闭,所以nohup启动项目会被自动关闭

解决方法:
1、freestyle project :


选择新建自由风格的项目时,Build Steps选择Execute shell,命令行为:
cd xxx
sh xxx.sh


脚本里面需添加:
#!/bin/bash

#添加这个命令:export BUILD_ID=DongKillMe
#jenkins根据BUILD_ID自动关闭shell运行期间产生的进程,修改变量值,值的内容自定义,防止nohup被关闭
export BUILD_ID=DongKillMe

nohup java -Xms1024m -Xmx1024m -XX:MaxNewSize=512m -jar /xxx/xxx/xxx/xxx.jar >/dev/null 2>&1 &

2、新建流水线项目
脚本里面需添加:
#!/bin/bash


# 添加这两行
source /etc/profile
export JENKINS_NODE_COOKIE=dontKillMe

nohup java -Xms1024m -Xmx1024m -XX:MaxNewSize=512m -jar /xxx/xxx/xxx/xxxx.jar >/dev/null 2>&1 &

Pipeline script里面的内容有一处改动:


pipeline {
    agent any

 

    stages {
        stage('部署程序') {
            steps {
                
                sh '''
                   #!/bin/bash

                   cd /xxx/xxx/xxx
                   
                   #改动的地方:sh执行脚本改为bash,ubuntu系统会提示source:command not found,centos/redhat可以不修改
                   bash restart.sh
                   
                '''
                echo '部署完成'
            }
        }
        
    }
    
}


 

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值