web-dev-qa-db-ja.com

Jenkinsビルドステップで永久プロセスを開始しますか?

Jenkinsデプロイメントの最後にシェルコマンドを実行して、永久スクリプトを再起動しています。

npm install && forever stop app.js && forever start -a -l /var/log/forever.log app.js

ユーザーjenkinsとしてそれを実行すると、すべてが正常に動作し、ビルド履歴からのコンソール出力からも、永久スクリプトが実行されていることがわかります。ただし、プロセスは展開が完了した直後に停止し、無期限のプロセスが停止します。

この動作の原因と修正方法を教えてください。

17
Patrick

Jenkinsは、ジョブによって生成されたすべてのプロセスを強制終了します。

これは、BUILD_ID環境変数を別のものに:

export BUILD_ID=dontKillMe

詳細は https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller を参照してください

28
rcomblen

質問はかなり古いですが、この場合にはもっと良い解決策があると思います。

ポストビルドスクリプトプラグインを使用

プラグイン自体は2016年の初め以来更新されていませんが、それは機能し、環境変数をいじる必要はありません。私には少しすっきりしているようです。

1
matewilk

新しいパイプラインジョブでは、BUILD_IDの設定は機能しなくなりました。代わりに、JENKINS_NODE_COOKIEを設定して、Jenkinsがジョブの終了時にプロセスを強制終了しないようにする必要があります。

sh 'export JENKINS_NODE_COOKIE=dontKillMe'
sh 'myProcess'

または、より選択的に:

sh 'JENKINS_NODE_COOKIE=dontKillMe myProcess'

ProcessTreeKillerのwiki および Jenkins Jiraのこのコメント を参照してください。

0
jpyams

試してみてください:

(
  set -e
  export BUILD_ID=dontKillMe
  export JENKINS_NODE_COOKIE=dontKillMe
  npm install
  forever stop app.js
  forever start -a -l /var/log/forever.log app.js &
) &
0
Eduardo Cuomo