Jenkins pipelineバックグラウンドスクリプトの実行と停止
3266 ワード
Pipelineの実行が終了すると、JenkinsはデフォルトでPipelineのサブプロセスをkillします.そのためpipelineで
解決策は次のとおりです.
注意: PipelineではJENKINS_を設定することでNODE_COOKIEはJenkinsがPipelineの後台のサブプロセスをkillしないようにし、Freestyle jobではBUILD_を設定することによってID. 1 Pipelineのバックグラウンドで複数起動するのがscriptである場合、複数の を起動する.
上記の
またはログを出力しない
Killはバックグラウンドプロセスを削除しました:
または
参照ドキュメント: https://wiki.jenkins.io/display/JENKINS/Spawning+processes+from+build https://devops.stackexchange.com/questions/1473/running-a-background-process-in-pipeline-job https://issues.jenkins-ci.org/browse/JENKINS-28182 http://excid3.com/blog/running-background-daemon-scripts-with-jenkins
JAva not found問題
最近、
もともとこの機械のjdkは標準的な取り付けではなく、
解決方法:
nohup java -jar app.jar > app.log &
で起動したjavaバックグラウンドプロセスはPipeline終了後にJenkinsによって殺される.解決策は次のとおりです.
stage('Deploy') {
steps {
script {
withEnv(['JENKINS_NODE_COOKIE=background_job']) {
sh """
nohup java -jar app.jar > app.log &
"""
}
}
}
}
注意:
nohup
起動コマンドを1つのwithEnv(['JENKINS_NODE_COOKIE=background_job']) {...}
に配置して上記の
nohup
コマンドは、次のように置き換えることもできます.nohup java -jar app.jar > app.log 2>&1 &
またはログを出力しない
nohup java -jar app.jar > /dev/null 2>&1 &
Killはバックグラウンドプロセスを削除しました:
sh '''
if [ `ps -ef | grep runserver | grep venv | grep python3 | grep -v grep | awk '{print $2}'` ];then
. .venv/bin/activate
ps -ef | grep runserver | grep venv | grep python3 | grep -v grep | awk '{print $2}' | xargs kill -9
fi
'''
または
// Stop application through kill process
PROCESS_ID = sh (script: "ps -ef | grep ${GIT_REPO_PROJECT} | grep java | grep jar | grep -v grep | grep -v pipeline | awk -F ' ' '{print \$2}'", returnStdout: true).trim()
echo "PROCESS_ID=" + PROCESS_ID
if (PROCESS_ID != "") {
sh """
echo "Kill process: ${PROCESS_ID}"
sudo kill -9 ${PROCESS_ID}
"""
}
参照ドキュメント:
JAva not found問題
最近、
nohup java -jar app.jar > /dev/null 2>&1 &
コマンドを実行した後、プロセスが開始されなかったという奇妙な問題が発生しました.最初はJenkinsが流水線が終わった後、バックグラウンドのプロセスを殺したのではないかと疑っていたが、半日もやっていなかった.その後、java -jar app.jar
を直接運転してから、java not found
であることが分かった.もともとこの機械のjdkは標準的な取り付けではなく、
/bin/java
が存在しなかったが、Jenkinsの運転時は/bin
までコマンドを探していた.解決方法:
# java
which java
# /bin/java soft link, :
ln -s /home/bin/jdk-13/bin/java /bin/java
# /bin/java
file /bin/java