Jenkinsパイプラインを使用したマトリックス構成 質問する

Jenkinsパイプラインを使用したマトリックス構成 質問する

Jenkins Pipeline プラグイン (別名 Workflow) を他のMultibranchプラグインで拡張して、ブランチとプル リクエストを自動的に構築できます。

複数の構成を実行するための推奨される方法は何でしょうか? たとえば、Java 7 と Java 8 を使用してビルドします。これは、マトリックス構成 (言語バージョン、フレームワーク バージョンなどの複数の組み合わせのため) またはビルド バリアントと呼ばれることがよくあります。

私は試した:

  • これらを個別のステップとして連続して実行しますstage。良いですが、必要以上に時間がかかります。
  • それらをステップ内で実行します。ステップ内に s が割り当てられているparallelかどうかは関係ありません。動作しますが、視覚化方法に関する既知の制限のため、並列内でステップを使用することはできません。nodestage

これを行うための推奨される方法はありますか?

ベストアンサー1

要約:ジェンキンス使用してほしいノード各ビルドごとに。

Jenkins.io:パイプライン コーディングのコンテキストでは、「ノード」とは、通常、エージェント上の利用可能なエグゼキュータの支援を受けて、次の 2 つのことを実行するステップです。

  1. Jenkins ビルド キューに追加して、そこに含まれるステップの実行をスケジュールします (ノードで実行スロットが空くとすぐに、適切なステップが実行されます)

  2. シェル スクリプトの構築や実行などのすべての重要な作業をノード内で実行することがベスト プラクティスです。これは、ステージ内のノード ブロックが、その中のステップがスケジュールするのに十分なリソースを消費し、エージェント プールにヘルプを要求し、必要な期間のみワークスペースをロックすることを Jenkins に伝えるためです。

ステージ内の Vanilla Jenkins Node ブロックは次のようになります。

stage 'build' {
    node('java7-build'){ ... }
    node('java8-build'){ ... }
}

この概念をさらに拡張して、クラウドビーズは次のように書いている。Jenkins による並列処理と分散ビルドCloudbees のワークフローは次のようになります。

stage 'build' {
    parallel 'java7-build':{
      node('mvn-java7'){ ... }
    }, 'java8-build':{
      node('mvn-java8'){ ... }
    }
}

パイプライン内のさまざまなビルドを視覚化するという要件はどちらのワークフローでも満たすことができますが、ベスト プラクティスについては Jenkins のドキュメントを信頼しています。


編集

視覚化に対処するには@スティーブン見たいのですが、彼は正しいです - それは機能しません!この問題はジェンキンスとここに文書化されているラベル付きブロックの使用を伴う解決策はまだ進行中:-(

質問:パイプライン ユーザーが並列ステップ内にステージを配置しないようにするためのドキュメントはありますか?

答え:いいえ、もしそうするなら、それは間違った使い方だと見なされます。ステージはパイプラインの最上位レベルの構造としてのみ有効です。そのため、ラベル付きブロックを別の構造として考えるようになりました...つまり、パイプライン内の並列ステップからステージを削除するということです。

並列ジョブでステージを使用しようとすると、問題が発生することになります。

ERROR: The ‘stage’ step must not be used inside a ‘parallel’ block.

おすすめ記事