Pull Requestが作成されたらCIを実行したい。こういったユースケースはよくあります。 Azure Pipelinesでもこの実現はできるのですが、この実現にはかなり癖があります。
結論
PR Triggerの設定は、azure-pipelines.yml
ではなく、Azure ReposのBuild validationで設定します。
Triggerの種類
Azure PipelinesにおいてCIを実行する契機のことをTriggerと呼びます。
サポートされるTriggerの種類については以下をご参照ください。面白いのは、Azure PipelinesとしてサポートするTriggerと、YAMLで記述できるTriggerがイコールではないことです。
Azure ReposのGitリポジトリに対するPR Triggerはサポートされているものの、azure-pipelines.yml
では実現できません。
Azure Repos GitリポジトリでのPR Trigger
Azure ReposのGitリポジトリにおいて、Pull Request作成時やPull RequestのbranchへのPUSH時にCIを実行するにはどうすれば良いか。 ドキュメントには以下のように、Build validation policyで実現しろと記載されています。
To enable pull request validation in Azure Git Repos, navigate to the branch policies for the desired branch, and configure the Build validation policy for that branch.
図のようにEdit Build Policy
のTrigger設定でAutomatic
を選択すれば、PR triggerを設定できます。
azure-pipelines.yml
の書き方
それでは、Azure Pipelines上のTrigger設定をどう記述すれば良いか。 ぼくは以下のように、trigger自体を無効化しています。
trigger: none
変にCI triggerを 無効化すると、PR triggerとしてCIが実行され、その上でCI triggerによってCIが実行されます。 このような二重起動を防ぐtrigger設定はそこそこ面倒です。 開発プロセスが許すなら、CI triggerは無効化した方が楽でしょう。