4

REST API を公開するバックエンド コンポーネントをビルドしてデプロイするビルド パイプラインがジェンキンスにあります。バックエンド コンポーネントを呼び出すフロントエンド コンポーネントをビルドおよびデプロイする別のビルド パイプラインがあります。バックエンドとフロントエンドのコンポーネントは、別々の Git リポジトリに存在します。

各パイプラインのビルド ジョブは、それぞれの Git リポジトリでコミットが発生すると開始されます。

各ビルド パイプラインのビルド パイプラインの最後に、自動化された機能テストを実行したいと考えています。しかし、両方のパイプラインが終了し、機能テストを実行する必要があることをどのように知ることができますか? 2 つのパイプラインをリンクできますか?

4

3 に答える 3

3

1 つのアプローチは、Locks and Latchesプラグインを使用して、各パイプラインの各ジョブに独自のロック (例: Pipeline-A と Pipeline-B) を与えることです。その後、テストを実行するジョブは、Pipeline-A と Pipeline-A の両方でロックを取得するように構成されます。パイプライン-B。これにより、いずれかのパイプラインの一部が実行されている場合にテスト ジョブが実行されなくなり、テストの実行中にパイプラインの変更がブロックされます。

デプロイ ジョブのみをロックしたい場合は、同じアプローチを使用できますが、ロックを使用してデプロイ ジョブのみを構成できます。これにより、通常のビルドは通常どおり実行できますが、テストの実行中に展開ジョブがキューに入れられます。

仮定;

  • Deploy ジョブがテスト実行をトリガーしている

2 つ目の方法は、デプロイを実行する前に、次のレイアウトで単一のジョブをトリガーするように、ジョブ パイプラインをセットアップすることです。

EndOfPipelineA -> SystemDeploymentController
EndOfPipelineB -> SystemDeploymentController
SystemDeploymentController -> DeployAppOne
SystemDeploymentController -> DeployAppTwo
DeployAppTwo -> TestExecution
DeployAppOne -> TestExecution

次に、Joinプラグインを使用して、両方のデプロイが完了し、成功した場合にのみ TestExecution ジョブを実行します。

2 番目のアプローチでは、次のことが可能になります。

  1. デプロイの成功に応じて、条件付きでテストの実行を制御します。
  2. システムが実行されているシステムに変更を加えた場合にシステム全体を再デプロイし、テストを自動的に実行できる単一のジョブを用意します。
  3. プロモーション プラグインを使用して、両方のアプリがうまく連携した「適切な構成」を強調する可能性があります

ただし、管理が少し面倒です。

于 2012-10-13T17:49:28.867 に答える
1

これは古い質問ですが、ビルド フロー プラグインを使用してビルド パイプラインを再構築することを検討してください。

https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin

パイプライン ロジックを 1 か所に保持できるという利点があります。

于 2013-05-28T22:14:36.493 に答える