Jenkinsでのビルド後のシェルスクリプトの実行


81

Jenkinsでビルドが成功したか失敗した場合に、シェルスクリプトを実行しようとしています。ターゲットの実行を除いて、いくつかのシェルスクリプトを実行するためのビルド後のこのオプションが表示されません。

回答:


67

ビルド後のタスクプラグインで非常に簡単に実行できます。

Jenkins-「ビルド後のタスク」オプション


48
単にスクリプトを実行する代わりに、PostBuildScriptプラグインをお勧めします。ログ出力を条件付けする必要がない場合は、よりシンプルで堅牢です。たとえば、ビルド後のアクションで任意のビルドステップを実行できます。
サンポ2013

9
また、Post Build Taskプラグインは、条件付きテストを実行するためにコンソール出力全体をメモリに配置します...何百ものジョブが大量の出力を生成する場合、大量のメモリを消費する可能性があります...私たちのjenkinsマスターがクラッシュしたばかりですこのプラグイン...へ
grayaii

1
PostBuildScriptプラグインは一時停止されています。
2017

@Upenそれを証明するリンクを提供できますか?
Vadim Kotov

10

Groovy Post Buildを使用して任意のコマンドを実行することもできます。これにより、コマンドの実行時期などを細かく制御できます。ビルドが失敗したり不安定になったりした場合に、これを使用して「fingerofblame」シェルスクリプトを実行します。

if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)) {
  item = hudson.model.Hudson.instance.getItem("PROJECTNAMEHERE")
  lastStableBuild = item.getLastStableBuild()
  lastStableDate = lastStableBuild.getTime()
  formattedLastStableDate = lastStableDate.format("MM/dd/yyyy h:mm:ss a")
  now = new Date()
  formattedNow = now.format("MM/dd/yyyy h:mm:ss a")
  command = ['/appframe/jenkins/appframework/fob.ksh', "${formattedLastStableDate}", "${formattedNow}"]
  manager.listener.logger.println "FOB Command: ${command}"
  manager.listener.logger.println command.execute().text
}

(私たちのコマンドは、最後の安定したビルド日付と現在の時刻をパラメーターとして受け取るので、誰がビルドを壊した可能性があるかを調査できますが、同様の方法で好きなコマンドを実行できます)


6

私があなたの質問を正しく読んでいるなら、あなたはビルドのビルド後のアクション部分でスクリプトを実行したいと思うでしょう。

私自身、ビルドがアーティファクトをアーカイブし、テスト結果を公開した後に実行するためにPostBuildScriptプラグインを使用していgit clean -fxdます。私のJenkinsスレーブにはSSDディスクがあるため、生成されたファイルをワークスペースに保持する余地がありません。



1

ビルド後のシェルスクリプトを個別のJenkinsジョブとして設定し、ビルド後のステップとしてトリガーする必要があります。標準の「他のプロジェクトをビルドする」オプションは、トリガービルドが成功した場合にのみ機能するため、ParameterizedTriggerプラグインを使用する必要があるようです。


ジョブタスクで実行可能なシェルスクリプトに基づいてビルドが排他的に失敗した場合、スクリプトをトリガーするにはどうすればよいですか?ありがとう
topgun 2012年

これを考えると、ビルドスクリプト自体で制御する方が簡単かもしれません。どのビルドフレームワークを使用していますか?
gareth_bowles 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.