私のチームは、プルリクエストブランチの安全設定と組み合わせたVSTSビルドおよびリリースメカニズムを使用しているため、プルリクエストが完了したときにのみコードをマージできます。
ただし、プルリクエストが作成されたとき(およびコミットを証明するためにビルドが生成されたとき)、プルトリガーによってトリガーされたこのビルドが完了すると、間接的にリリースがトリガーされます。これは、リリーストリガーの設定があるためです。 。
これ自体はおそらく問題ありませんが、プルリクエストが「完了する」と、別のビルドとリリースのサイクルが実行されます。
プルリクエストが完了し、リリースブランチにマージされたときにのみVSTSリリーストリガーを起動する方法はありますか?
ありがとうございました!
マスターのビルドのみがリリースをトリガーするように、リリーストリガーにブランチフィルターを指定できます。 PR検証ビルドは別のブランチで行われます。承認され、ブランチがマスターにマージされると、リリースをトリガーするビルドになります。
不愉快なことに、彼らは物事を動かし続けます。この記事の執筆時点では、リリースを編集すると、パイプラインの下、アーティファクトの下、アーティファクトに稲妻が入った円があり、ツールチップに「継続的デプロイメントトリガー」と表示されています。それをクリックします。右側にトリガーが有効になっている場合は、「ブランチフィルターの作成」が表示されます。 [+追加]をクリックして、マスターブランチを選択します。リリース定義を保存します。
さまざまな処理を行うビルドについては、タスクに条件を設定して、PR検証ビルドでのみ、またはマスタービルドでのみタスクを実行できるようになりました。
https://docs.Microsoft.com/en-us/vsts/build-release/concepts/process/conditions
現在のビルド定義を複製してCIビルドを無効にしてから、複製されたビルドを使用して、作成されたPRを確認するだけです。
まず、以下のように設定を変更します。
1。クローンビルド
CIビルドの...
ボタンをクリックします->クローン->クローンされたビルド定義を編集します-> CIビルドを無効にします->保存します。
2。ブランチポリシーのクローンビルドを置き換えます。
ブランチポリシーを開く->ビルド検証ポリシーを編集->代わりに複製されたビルド定義を選択->保存。
したがって、workflowは次のようになります。
これで、PRのみが完了してrelease
ブランチにマージされ、リリース定義がトリガーされます。
ビルドタスクの条件ステートメントを使用して、Build.Reasonが「プルリクエスト」であるかどうかを検証します。
タスクに移動>「制御オプション」>「このタスクを実行」を展開>この下で「カスタム条件」を選択
カスタム条件で以下の条件を指定して、PullRequestビルドをフィルターで除外しますand(succeeded()、ne(variables ['Build.Reason']、 'PullRequest'))