2017-09-28 5 views
0

vstでは、単一のコミット内でビルドオーダー/優先順位を設定できるかどうか疑問に思っていました。私は複数のプロジェクトを持つソリューション(1つのリポジトリを)持っているVSTS - 単一のgitコミット内でのビルドオーダー

私が午前シナリオがこれです。

  • 出版社
  • Subscriber1
  • subscriber2など
  • メッセージ

これらの各(メッセージを期待して)それぞれのプロジェクト(継続的インテグレーション)へのパス・フィルタと1ビルド定義を持っています、解放されて(継続的な展開トリガ)解放され、そこで初期化されます。

プロジェクトは互いに依存しておらず、通信に使用されるメッセージが必要です。

パブリッシャープロジェクトとサブスクライバープロジェクトを変更してコミットしたら、まずパブリッシャープロジェクトをビルドしてリリースしたいと思います。

サブスクライバが購読したい新しく作成されたメッセージがある場合、パブリッシャは今必要があります。

このようなことは可能ですか?

答えて

1

VSTSでは、同じコードでトリガーされたCIビルドの順序を指定できません。

私はユーザーボイスSpecify queue builds order if there has multiple CI builds are triggered by the same codeを投稿しました。投票してフォローアップすることができます。今の

、あなたは回避策の下に使用することができます:それはあなたのために大丈夫だ場合のみ、特定のプロジェクト(パブリッシャまたはサブスクライバ)

ための変更をそこに持っている場合でも、すべてのプロジェクトのために

  1. ビルドプロジェクトに変更があってもすべてのプロジェクトをビルドするには、ビルド定義を定義してその中のすべてのプロジェクトをビルドすることができます。そして、このビルドをCIビルドとして使用して、複数のCIビルドを置き換えます。カスタム条件は、関連するすべてのタスク

    のためにあなたはまだ1つのビルド定義内のすべてのタスクを定義し、デフォルト値0で二つの変数publishersubscriberを追加する必要が

  2. セット。

    ビルドの開始時にPowerShellタスクを追加して、変更されたプロジェクトを確認します。パブリッシャープロジェクトが変更された場合は、値1の変数publisherを設定します。サブスクライバプロジェクトが変更された場合は、値1の変数subscriberを設定します。

    次に、関連するプロジェクトについては、ustom conditionsを使用してください。たとえば、Publisherプロジェクトタスクをビルドする場合は、カスタム条件:and(succeeded(), eq(variables['publisher'], '1'))を使用します。

    enter image description here

    publisher変数が1あるとき、タスクにのみ実行されます。また、カスタム条件を使用する方法については、this postを参照することもできます。

+0

返信用Thx、たくさんのことを学んだ。私の現在の「回避策」は、パブリッシャーのビルド・デフがbuild-def-idが最も低いことを保証することです。コミット内でvstが常に最低のIDから最高のIDまで構築されているようです。 –

0

この問題を回避するには、継続的インテグレーションによってトリガーされるように、あなたの優先順位のビルドを設定することで、他はローリングモードをビルドでトリガ。 ローリングビルドは、開始前にCIを待つでしょう

+0

共有のThxですが、変更された(つまり、パブリッシャーは変更がなく、トリガーされなかった)サブスクライバだけが動作するでしょうか? –

関連する問題