Tomcatサーバーの停止と開始を行うようにジョブを構成すると、このエラーが発生します。
リークされたファイル記述子を処理します。詳細については、 http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build を参照してください
グーグルで検索したとき、set BUILD_ID=dontKillMe
これは正確な解決策ですか?
はいの場合、BUILD_IDを設定する場所はどこですか? ant/postビルドスクリプト内?
誰でもこれを明確にできますか?
はい、プロセスの偽BUILD_ID
を作成すると、生成されたプロセスの検出中にこのプロセスを無視するようにJenkinsに指示するため、ジョブの終了後にこのプロセスは強制終了されません。
使用法:コマンドの前にBUILD_ID=dontKillMe
を入力します。たとえば、Execute Shell
ビルドステップに入力します。
BUILD_ID=dontKillMe Nohup ./yourStartScript.sh &
注: Nohup も参照してください
デフォルトでは、Jenkinsはビルドの完了時に生成されたプロセスをすべて強制終了します。
これをオーバーライドするには、環境変数BUILD_IDを作成する必要があります。
Jenkins-> Manage Jenkins-> Configure System Nowの[Global properties]セクションの[Environment variables]で、[ADD]ボタンをクリックして新しい環境変数を追加します。名前= BUILD_IDおよび値= 'allow_to_run_as_daemon start_my_service'(引用符なし)を指定します。保存ボタンをクリックします。これで完了です。
これで、ビルドが完了した後でも、spawnプロセスが実行され続けます。
Jenkinsサーバーを起動するときにこの行をJava_ARGS引数として追加します(Ubuntuボックスの/ etc/default/jenkinsに配置します)
-Dhudson.util.ProcessTree.disable=true
そして、あなたは終わった
別のプロセスを生成するJenkinsからコマンドを呼び出しています-
Tomcat-startコマンドは終了しますが、その子プロセスはまだ実行中です
(これは、起動しようとした実際のTomcat Webサーバーです)。
Jenkinsはこの状況を問題の可能性があると特定し、
しかし あなたが言及したページ はそれを解決する方法も説明しています
(簡単に言うと:Tomcatを開始しないでください。