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ファイルをどこかにコピーします(
—
Bレイヤー
/tmp
たとえば... ))、二重引用符の間のすべてを実行します。
また、ワークスペースが完全に消去されていない場合は、シェルコマンドが実行されるディレクトリでnohup.outという名前のファイルを探します。nohupは、出力がリダイレクトされない場合、そのようなファイルに自動的にログを記録します。
—
Bレイヤー
@BlairM非ログイン非対話型シェルを介してjenkinsユーザーで試してみると、同じスクリプトが正常に実行されます。二重引用符で実行しても違いはありません。nohup.outは存在しますが、0 KBです。
—
ダラニダール