问题描述
我正在尝试设置一个Jenkins管道,该管道部署Django项目并在后台运行Django的开发服务器。
我想将其分为三个步骤,即构建,测试和运行。
除了最后一步,一切都很好,实际上,当我这样设置时:
...
stage('Run') {
steps{
dir('auto'){
sh 'pwd'
sh '/usr/bin/python3.8 manage.py runserver 0.0.0.0:8000'
}
}
}
服务器启动正常,我可以通过http://127.0.0.1:8000访问该项目,但工作并未结束。
我尝试绕过此问题,以使用 nohup $ 在后台运行服务器:
...
stage('Run') {
steps{
dir('auto'){
sh 'pwd'
sh 'nohup /usr/bin/python3.8 manage.py runserver 0.0.0.0:8000 $'
}
}
}
但是无法通过http://127.0.0.1:8000
访问服务器我是Jenkins的初学者,也许这不是在后台运行进程的正确方法。
解决方法
此帖子之后:Clean way of launching a shell script in background from Jenkins 我使用了变量设置 JENKINS_NODE_COOKIE = dontKillMe ,如下所示:
stage('Run') {
steps{
dir('auto'){
sh 'pwd'
sh 'JENKINS_NODE_COOKIE=dontKillMe nohup /usr/bin/python3.8 manage.py runserver 0.0.0.0:8000 &'
}
}
}