Jenkinsのコンパイル後にJavaアプリケーションを再起動するBashスクリプト

Jenkinsのコンパイル後にJavaアプリケーションを再起動するBashスクリプト

私はLinux初心者です!サーバーがあり、Jenkinsをインストールしました。 jenkinsがコンパイルされた後にアプリケーションを実行する必要があるbashスクリプトを作成する必要があります(またはすでに起動している場合は再起動します)。私はLinuxでscreen utilを試しましたが、うまくいきません。私は次のスクリプトを書いた。

screen -X -S JavaTelegramBot quit
screen -d -m -S JavaTelegramBot
screen -X -S JavaTelegramBot java -jar "path/to/jar" 

ヒントを与えるscreen -lsと空白なので、アプリは機能しません。私もnohupを使ってみました。 Jenkinsがビルドを完了するまで数秒間だけアプリケーションを起動します。ビルド後、jenkinsでcmdコマンドを使用してスクリプトを起動しました。

答え1

これはジェンキンスによる。プロセスツリーキラー、ジョブが終了した後にJenkinsジョブによって開始されたすべてのプロセスを終了します(screen / tmux / nohup / etcを使用してバックグラウンドでジョブを実行する場合も同様です)。

上記の文書によると、Jenkinsが長期実行プロセスを終了するのを防ぐ方法は、環境変数を設定することです。

ビルドでデーモンを実行し続けたい場合...

これを達成する便利な方法は、JenkinsのProcessTreeKillerが探している環境変数BUILD_IDを変更することです。これにより、JenkinsはデーモンがJenkinsビルドによって生成されなかったと仮定します。たとえば、

BUILD_ID=dontKillMe /usr/apache/bin/httpd

Jenkins Pipelineの場合は、BUILD_IDの代わりにJENKINS_NODE_COOKIEを使用してください。

関連情報