54

Web アプリケーションのビルド、単体テスト、およびパッケージ化を行う、かなり複雑な Jenkins の仕事があります。状況に応じて、この仕事が終わったら別のことをしたいと思っています。これを行うための再利用可能/保守可能な方法は見つかりませんでした。それは本当にそうですか、それとも何か不足していますか?

複雑な仕事が完了したら、次のオプションを使用したいと考えています。

  1. 何もしない

  2. 低リスクの変更ビルド パイプラインを開始します。

    • WAR ファイルをアーティファクト リポジトリにコピーする
    • 本番環境にデプロイ
  3. リスクの高い変更ビルド パイプラインを開始します。

    • WAR ファイルをアーティファクト リポジトリにコピーする
    • テストのためにデプロイします
    • 受け入れテストを実行する
    • 本番環境にデプロイ

これを行う簡単な方法が見つかりませんでした。最も単純ですが、あまりメンテナンスしにくいアプローチは、3 つの個別のジョブを作成し、それぞれがダウンストリーム ビルドを開始することです。このアプローチは、1 箇所ではなく 3 箇所で変更を加える必要があるという事実など、いくつかの理由で私を怖がらせます。さらに、ダウンストリーム ジョブの多くもほぼ同じです。唯一の違いは、呼び出すダウンストリーム ジョブです。仕事の急増は、維持不可能な混乱につながるようです。

これを1つの仕事として維持するためにいくつかのアプローチを使用することを検討しましたが、これまでのところうまくいきませんでした:

  1. ジョブをマルチ構成プロジェクトにします ( https://wiki.jenkins-ci.org/display/JENKINS/Building+a+matrix+project )。これにより、ジョブにパラメーターを挿入する方法が提供されます。「他のプロジェクトをビルドする」ステップをパラメーターに応答させる方法が見つかりませんでした。

  2. Parameterized-Trigger プラグイン ( https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin ) を使用します。このプラグインを使用すると、特定のトリガーに基づいてダウンストリーム ジョブをトリガーできます。ただし、トリガーは制限が厳しすぎるようです。それらはすべて、任意の変数ではなく、ビルドの状態に基づいています。私のユースケースで機能するオプションがここに提供されているとは思いません。

  3. Flexible Publish プラグイン ( https://wiki.jenkins-ci.org/display/JENKINS/Flexible+Publish+Plugin ) を使用します。このプラグインには、parameterized-trigger プラグインとは逆の問題があります。チェックできる便利な条件がたくさんありますが、別のプロジェクトの構築を開始できるようには見えません。そのアクションは、公開タイプのアクティビティに限定されます。

  4. Flexible Publish + Any Build Step プラグイン ( https://wiki.jenkins-ci.org/display/JENKINS/Any+Build+Step+Plugin ) を使用します。Any Build Step プラグインを使用すると、Flexible Publish プラグインで任意のビルド アクションを使用できるようになります。このプラグインがアクティブ化されると、より多くのアクションが利用可能になりましたが、それらのアクションには「他のプロジェクトをビルドする」は含まれていませんでした。

これを行う簡単な方法は本当にありませんか?私はそれを見つけられなかったことに驚いており、これをやろうとしている人を実際に見たことがないことにさらに驚いていますか? 私は何か異常なことをしていますか?私が行方不明であることは明らかですか?

4

6 に答える 6

8

条件付きビルドプラグインを見たことがありますか?(https://wiki.jenkins.io/display/JENKINS/Conditional+BuildStep+Plugin

私はそれがあなたが探していることをすることができると思います。

于 2012-10-31T18:50:27.320 に答える
4

条件付きのビルド後のステップが必要な場合は、そのためのプラグインがあります:
https ://wiki.jenkins-ci.org/display/JENKINS/Post+build+task

指定した正規表現をコンソールログで検索し、見つかった場合はカスタムスクリプトを実行します。かなり複雑な基準を構成でき、それぞれが異なるビルド後のタスクを実行する複数の基準セットを構成できます。

通常の「ビルドステップ」アクションは提供されないため、そこで独自のスクリプトを作成する必要があります。jenkinsがサポートする標準的な方法(たとえば、curlを使用)で、異なるパラメーターを使用して同じジョブ、またはいくつかのパラメーターを使用して別のジョブの実行をトリガーできます。

さらに別の代替手段は、Jenkinsテキストファインダープラグインです:
https ://wiki.jenkins-ci.org/display/JENKINS/Text-finder+Plugin

これはビルド後の手順であり、コンソールテキスト(またはワークスペース内のファイル)で正規表現が見つかった場合に、ビルドを「不安定」として強制的にマークできます。したがって、ビルドステップでは、条件に応じて、一意の行をコンソールログにエコーし、その行に対して正規表現を実行します。次に、「Trigger parameterized buids」を使用して、条件を「unstable」に設定できます。これには、ビルドを視覚的に異なる(黄色のボールで)マークするという追加の利点がありますが、この方法では条件付きオプションが1つしかなく、OPからは2つ必要なように見えます。

次の2つの方法を組み合わせてみてください。

于 2012-11-03T15:10:31.097 に答える
1

ビルドに Ant を使用していますか?

その場合、ビルド スクリプトが条件付きビルドに使用できる一連の環境変数を使用することで、ant で条件付きビルドを行うことができます。Jenkins では、ビルドはすべてのプロジェクトをビルドしますが、実際のビルドは、ビルドするか、単に短絡するかを決定します。

于 2012-10-26T17:24:39.827 に答える
1

I think the way to do it is to add an intermediate job that you put in the post-build step and pass to it all the parameters your downstream jobs could possibly need, and then within that job place conditional builds for the real downstream jobs.

于 2013-09-18T02:17:10.573 に答える