kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure Pipelinesでブランチ作成時にCIの中身を実行させない

自分用のメモ

Azure DevOpsでhotfix用のトピックブランチ含めてCI設定する場合、YAMLではこんな感じトリガーを書きます。

trigger:
- master
- hotfix/*

ただ、これだとmasterからhotfix用のトピックブランチを新規で作るタイミングでもCIが実行されてしまいます。ブランチ作成時に完全に止める方法はないはずですが(たぶんきっと)、ビルドエージェントの中身を動かさないということなら可能です。

stages:
- stage: Build
  displayName: Build stage
  jobs:  
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)
    condition: and(succeeded(), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'))

こんな風にstageのconditionでand(succeeded(), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI'))と指定すると、コミットしたときのみエージェントフェーズが実行されます。

手動やスケジュールビルド、Pull Requestではスキップしてしまうので、それではこまるという場合はPullRequest, Schedule, Manualといった値を指定してください。この辺に載ってます。

docs.microsoft.com

もちろん複数エージェントフェーズがある場合、それぞれで指定が必要です。