ビルドしない
trigger: none # will disable CI builds entirely
Azure Pipelines によるビルドを起動しないようにします。
trigger
プロパティを省略すると、デフォルトですべてのブランチへのプッシュ時にビルドが走るので、ビルドしないようにするには、上記のように明示的に none
指定が必要です。
この設定を行うと、pr
プロパティの設定(後述)も無効になります(Pull Request 時もビルドは実行されない)。
master ブランチへのプッシュ or マージでビルド?
trigger:
- master
次のように複数のブランチをビルド対象とすることもできます。
trigger:
- master
- release
このように記述すると、指定したブランチへのプッシュ or マージ時にのみ Pipelines が起動しそうに見えますが、この指定だけだと、 あらゆる Pull Request の作成時に Pipelines が起動します。
master
ブランチや release
ブランチをターゲットとしない Pull Request でもビルドが走ります。
なぜなら、Pull Request トリガの設定がデフォルトで次のようになっているからです。
pr:
branches:
include:
- '*'
このため、一連のステップにデプロイ処理まで組み込んでいると、レビュー用に Pull Request を上げただけでデプロイまで実行されてしまうという振る舞いになります。
Pull Request 時にビルドしない
trigger:
- master
pr: none # no PR triggers
上記のように設定しておくと、Pull Request を作成したときには Pipelines は起動しなくなります。
つまり、master
ブランチへのプッシュ or マージ時のみビルドが実行されます。
特定のブランチをターゲットとした Pull Request 時にビルドする
pr:
- master
master
ブランチをターゲットとする Pull Request を作成したとき(および追加プッシュ)があった場合にのみ Pipelines が起動します。
これも trigger
の指定と同様に、複数のターゲットブランチを指定できます。
pr:
- master
- releases/*
Pull Request 時のみビルドする
trigger:
- DUMMY_BRANCH_TO_BUILD_ONLY_ON_PR
これ、正式なやり方が分かりませんでした。
pr
プロパティはデフォルトで全 Pull Request に対してビルドを実行する設定になっているのですが、master
ブランチへのプッシュ時のビルドを停止するために trigger: none
を指定してしまうと、Pull Request 時のビルドも無効になってしまうし。。。
しょうがないので、絶対に使わないであろうブランチ名を trigger
に指定しています。
結果として、master
ブランチなどへのプッシュ時にはビルドは実行されず、任意の Pull Request を作成したときのみにビルドが実行されるようになります。
特定のファイルがコミットされた場合はビルドしない
trigger:
branches:
include:
- master
paths:
include:
- '*' # same as '/' for the repository root
exclude:
- '/azure-pipelines-for-pr.yml'
- '/docs/*' # same as '/docs/'
trigger
設定は上記のように階層化して記述することで、さらに細かい設定を行うことができます。
例えば、
- ドキュメントの更新時にはビルドは必要ない (
/docs/*
) - 別の Pipelines 設定ファイルの更新は無視したい (
/azure-pipelines-for-pr.yml
)
といった場合は、上記のように trigger.paths.exclude
プロパティでファイルのパスを指定することで除外できます。