2017-12-05 6 views
0

最近、XAMLビルドからv.Nextビルドに移行しました。私は常にブランチごとに1つのビルド定義を保持してきましたが、新しいシステムには、単一のビルド定義が複数のブランチとプルリクエストでトリガーできることがわかりました。VSTS v.Nextビルド定義複数のブランチ

これは良い考えですか?気を付けるべきことと、これを設定する最善の方法は何ですか?

1)バージョン番号。古い保守ブランチのバージョン管理などのシナリオを1.0としてどのように扱いますか。 、バージョン2.0のマスターバージョン。とdevビルドは0.2と言います。*私はビルド成果物を混同しませんか?より良い方法がありますか?

2)リポジトリツリーが変更されたらどうなりますか? masterが.slnを1つのフォルダに作成することを想定していて、devブランチが別のフォルダに移動してしまったらどうなるでしょうか?

その他の懸念事項と解決策はありますか?

答えて

1

単一のビルド定義で複数の分岐をトリガーし、要求をプルするとVSTSをより柔軟に構築できます。ビルドdefinitio nに特定の支店を構築したい場合は、特定のブランチ名を指定することができ、

  • :あなたが必要とするような方法を選択することができます。 masterブランチのみをビルドする場合は、ソースを取得するステップ(手動でビルド)でmasterブランチを指定するか、ブランチフィルタでブランチフィルタをビルドする(master)ことができます。
  • ビルド定義(CIビルド用)に複数のブランチを作成する場合は、トリガータブのブランチフィルターでブランチを指定できます。
  • をマージする前にPRを検証する場合は、ブランチポリシーのビルド検証を追加できます。あなたの懸念のために

  1. でもビルド定義は、複数のブランチをトリガーすることができますが、変更はこのブランチにプッシュされた後、特定のビルドのために、それは特定のブランチを構築します。そして、実際にどのブランチがビルドされているかを検出し、それに対応してブランチのバージョン番号を更新することができます。

    このように、masterブランチとdevブランチの両方をビルドするトリガーできるビルド定義があります。変更をmasterブランチにプッシュした後、ビルドはmasterブランチのキューに入れられます。また、いくつかの方法でブランチ名を得ることができるので、それに応じてバージョン番号を増やすことができます。あなたのビルド定義でトリガすることができ枝を指定するだけでなく、path filters.でトリガすることができるフォルダを指定することができないだけで

  2. folderAfolderB両方.slnを含んがあると仮定し、ビルドをトリガーする場合にのみ.slnfolderAの下にファイルが変更されると、あなたは以下のようにブランチフィルタおよびパス・フィルターを指定することができるように:

    enter image description here


状況:複数の分岐がビルド定義によってトリガーされる場合は、PowerShellタスクを追加して、どの分岐が構築されているかを検出できます。以下のようなスクリプト:

$head=$(git rev-parse HEAD) 
$sha=$head.Substring(0,7) 
$branches=$(git branch -rv) 
for ($i=0;$i -lt $branches.Length; $i++) 
{ 
    if ($branches[$i] -match $sha) 
    { 
    $tbranch=$branches[$i] -split "\s+" 
    $local=$tbranch[1] -split '/' 
    $br=$local[1] 
    echo "You are building $br branch" 
    break 
    } 
} 
+0

実際には、どのブランチが実際にビルドされているかを検出し、それに対応してブランチのバージョン番号を更新することができます。私はそれをする方法を理解すれば、私はこのパターンが本当に好きだろうと思う。 –

+0

はい、原因の。私は、私の答えの最後の部分にどの枝が構築されているのかを検出する方法を追加しました。 –

0

この部分、

は、これは良いアイデアですか?気を付けるべきことと、これを設定する最善の方法は何ですか?

はオフトピック(広すぎる/主に意見ベース)ですので、私はそれを無視し、あなたが概説した2つの具体的なシナリオに答えます。

  1. あなたが何を求めているのか分かりません。リリース定義環境はブランチ(アーチファクトトリガー)でトリガーするように設定できます。したがって、古いブランチのリリース要件が異なる場合は、単一のリリース定義内で異なるリリース定義を持つこともできます。

  2. Visual Studioビルドステップでワイルドカードを指定できるので、たとえば**/*.slnと指定できます。これは任意のフォルダの下に.slnファイルを見つけるでしょう。

関連する問題