パイプラインジョブでバックグラウンドプロセスを実行する


14

Jenkins宣言型パイプラインを使用して、バックグラウンドでjavaプロセスを実行する方法を探しています。以下はコードのスニペットです

stage('Deploy'){
        steps{
            script{
                withEnv(['BUILD_ID=dontkill']) {
                    sh "nohup java -jar test-0.0.1-SNAPSHOT.war &"
                }
            }
        }
}

JenkinsのProcessTreeKillerを既に認識しており、すべての回答が同じことを提案しています。私は、運のないステップブロック内の環境を使用しようとしました。

Jenkinsバージョン:2.60.1

パイプラインプラグイン:1.1.7

どんな助けも大歓迎です。


何が起こるのですか?エラーメッセージ?サイレントフェイル?
Bレイヤー

実行中のJavaプロセスがありません。これは私のパイプラインの最終段階なので、jenkinsが次の瞬間に開始して終了するのではないかと推測しています。
ダラニダール

スレーブで直接コマンドを実行するとどうなりますか?エージェント/スレーブホストにログインし、ジョブのワークスペースに移動し(または、クリーンアップされた場合は、warファイルをどこかにコピーします(/tmpたとえば... ))、二重引用符の間のすべてを実行します。
Bレイヤー

また、ワークスペースが完全に消去されていない場合は、シェルコマンドが実行されるディレクトリでnohup.outという名前のファイルを探します。nohupは、出力がリダイレクトされない場合、そのようなファイルに自動的にログを記録します。
Bレイヤー

@BlairM非ログイン非対話型シェルを介してjenkinsユーザーで試してみると、同じスクリプトが正常に実行されます。二重引用符で実行しても違いはありません。nohup.outは存在しますが、0 KBです。
ダラニダール

回答:


15

同じ問題に直面し、パイプラインプロジェクトを使用している場合、JENKINS_NODE_COOKIE代わりにを設定しますBUILD_ID

いけない、あなたの時間設定を無駄にしHUDSON_COOKIEHUDSON_SERVER_COOKIEJENKINS_COOKIEまたはJENKINS_SERVER_COOKIE。パイプラインプロジェクトでは機能しません。

詳細については、https://issues.jenkins-ci.org/browse/JENKINS-28182を参照してください


1
おっと、それは野球の中にある。知っておくといい。
Bレイヤー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.