Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
パイプライン トリガーは、実行するタイミングをパイプラインに指示します。 トリガーは、スケジュールに基づいて、またはプル要求の作成などのイベントに応答してパイプラインを実行するように構成できます。 Azure Pipelinesでは、次の種類のトリガーがサポートされています。
- 継続的インテグレーション トリガー (CI トリガー) は、コードをブランチにプッシュするときにパイプラインを実行します。
- プル要求トリガー (PR トリガー) は、開いている PR のソース ブランチに PR またはプッシュ コードを発生させるとパイプラインを実行します。 GitHub リポジトリでは、開いている pull request にコメントを追加するときにパイプラインを実行するコメント トリガーがサポートされます。
- スケジュールされたトリガーは、定義済みのスケジュールでパイプラインを実行します。
- パイプライン完了トリガーは、別のパイプラインが完了したときにパイプラインを実行します。
この記事では、 YAML パイプライン トリガーと クラシック ビルド パイプライン トリガーの概要について説明します。 クラシック リリース パイプラインには、 前の一覧で説明した同様のバージョンのトリガーがあります。 詳細については、「 クラシック リリース パイプライン トリガー」を参照してください。
CI のトリガー
CI トリガーは、トリガーによって定義された条件を満たすブランチにプッシュが行われるときにパイプラインを実行します。
trigger キーワードを使用して CI トリガーを構成します。 たとえば、 main ブランチにプッシュが行われたときにパイプラインを実行するには、次のトリガーを指定します。
trigger:
- main
パイプラインを明示的に構成しない場合、暗黙的な CI トリガーを無効にするか、UI 設定が YAML トリガーをオーバーライドしない限り、すべてのブランチで CI トリガーが既定で有効になります。
パイプラインを明示的に構成しない場合、暗黙的な CI トリガーを無効にするか、UI 設定が YAML トリガーをオーバーライドしない限り、すべてのブランチで CI トリガーが既定で有効になります。
注
暗黙的な CI トリガーを無効にする は、Azure DevOps Server 2022.2 以降でのみ使用できます。 Azure DevOps Server 2022 および 2022.1 では、明示的に構成されていない場合、CI トリガーは既定で有効になります。
パイプラインで CI トリガーを無効にするには、次の構文を使用します。
trigger: none
YAML パイプラインでは、次のリポジトリの種類の CI トリガーがサポートされます。 特定のリポジトリの種類で CI トリガーを使用する方法の詳細については、次の記事を参照してください。
- Azure Repos Git の CI トリガー
- GitHub の CI トリガー
- GitHub Enterprise Server の CI のトリガー
- Bitbucket Cloud の CI トリガー
CI トリガーで使用できる完全な YAML トリガーの構文とオプションについては、 トリガー定義を参照してください。
重要
Git のパスでは、CI および PR トリガー パス フィルターなど、大文字と小文字が区別されます。
PR トリガー
プル要求 (PR) トリガーでは、プル要求を開くたびに、またはプル要求のソース ブランチに変更をプッシュするたびに、パイプラインが実行されます。 PR トリガーを構成するには、 pr キーワードを使用します。 たとえば、main ブランチに対して PR が作成されたときにパイプラインを実行するには、次のトリガーを指定します。
pr:
- main
パイプラインで PR トリガーを明示的に構成しない場合、 UI 設定が YAML トリガーをオーバーライドしない限り、既定で有効になります。 任意のブランチに要求をプルすると、パイプラインの実行がトリガーされます。 パイプラインで PR トリガーを無効にするには、次の構文を使用します。
pr: none
YAML PR トリガーは、GitHubおよび Bitbucket Cloud でサポートされています。 これらの種類のリポジトリで PR トリガーを使用する方法の詳細については、GitHub の
Azure Repos Git はブランチ ポリシーを使用して PR トリガーを実装します。 詳細については、Azure Repos Git の PR トリガーを参照してください。
コメントのトリガー
コメント トリガーを使用すると、コントリビューターが /azp run のようなプル リクエスト コマンドを含むプル リクエスト コメントを作成したときに、パイプラインが実行されるように構成できます。 コメント トリガーは、GitHub リポジトリでのみサポートされます。 詳細については、「GitHub リポジトリのコメント トリガーを参照してください。
スケジュールされたトリガー
スケジュールされたトリガーは、定義済みのスケジュールでパイプラインを実行します。 YAML パイプラインをサポートするすべてのリポジトリの種類は、YAML パイプライン のスケジュールされたトリガーをサポートします。 これらのリポジトリの種類には、Git、GitHub、GitHub Enterprise Server、Bitbucket Cloud Azure Reposが含まれます。
YAML でスケジュールされたトリガーを定義するには、 schedules キーワードを使用し、cron 構文を使用してスケジュールを定義します。 次の例では、毎日午前 0 時に実行されるスケジュールを構成します。
# YAML file in the main branch
schedules:
- cron: '0 0 * * *'
displayName: Daily midnight build
branches:
include:
- main
詳細と例については、「 スケジュールされたトリガー、 スケジュール定義、 schedules.cron 定義」を参照してください。
パイプラインの完了時トリガー
YAML パイプラインのパイプライン トリガーとクラシック ビルド パイプラインのビルド完了トリガーを使用すると、別のパイプラインの完了時に 1 つのパイプラインをトリガーできます。
ソース パイプラインの実行が完了したときにパイプラインの実行を開始するように、パイプラインにパイプライン リソース トリガーを設定します。
resources:
pipelines:
- pipeline: sourcePipelineResource # Label for this pipeline resource; used when referring to it elsewhere in the pipeline.
source: source-pipeline # The name of the pipeline referenced by this pipeline resource.
project: FabrikamProject # Required only if the source pipeline is in another project
trigger: true # Run this pipeline when any run of source-pipeline completes
パイプラインに複数のパイプライン リソースを追加できます。 任意のバージョンのソース パイプラインが完了したときに実行されるようにトリガーを構成することも、特定のブランチに制限することもできます。
詳細と例については、「 パイプライン完了トリガー」を参照してください。
完全な構文とトリガーのオプションについては、 resources.pipelines.pipeline の定義に関するページを参照してください。
YAML パイプラインでのトリガーに関するブランチの考慮事項
YAML パイプラインでは、異なるブランチで異なるバージョンのパイプラインを保持できが、これは評価されるパイプラインのトリガーのバージョンと、実行するパイプラインのバージョンに影響を与える可能性があります。
| トリガーの種類 | パイプライン YAML バージョン |
|---|---|
CI トリガー (trigger) |
プッシュされたブランチ内のパイプラインのバージョンが使用されます。 |
PR トリガー (pr) |
プル リクエストのソース ブランチにあるパイプラインのバージョンが使用されます。 |
| GitHub プル リクエスト コメント トリガー | プル リクエストのソース ブランチにあるパイプラインのバージョンが使用されます。 |
| スケジュールされたトリガー | 「スケジュールされたトリガーに関するブランチの考慮事項」を参照してください。 |
| パイプラインの完了時トリガー | パイプライン完了トリガーのブランチに関する考慮事項を参照してください。 |
YAML パイプラインのリソース トリガー
リポジトリ リソース トリガーを使用すると、 repositories リソースとして定義されたリポジトリに変更が反映されたときにパイプラインを開始できます。
リソースに対して CI スタイルのtrigger フィルターを構成して、外部の Azure Repos Git、GitHub、GitHub Enterprise、または Bitbucket Cloud リポジトリ内のコミットまたは PR が現在のパイプラインの実行を開始できるようにします。
Azure Pipelinesでは、他のリソースの種類でも同様のイベント ドリブン トリガーがサポートされます。
-
pipelines: アップストリーム CI パイプラインの完了時 (オプションのブランチ、タグ、ステージ フィルターを使用) -
builds: Jenkins などの外部 CI システムからの新しい成果物 -
containers: Azure Container Registryの新しいイメージ タグの場合 -
packages: 新しい NuGet または npm GitHub パッケージ バージョンの場合 -
webhooks: GitHub、Nexus、Artifactory などの外部サービスから受信 Webhook サービス接続経由の任意のイベントに対して
詳細については、「 YAML パイプラインのリソース」を参照してください。
YAML パイプライン用の汎用 Webhook ベースのトリガー
YAML パイプラインでの Webhook トリガーのサポートにより、Webhook を介して外部サービス (GitHub、GitHub Enterprise、Nexus、Artifactory など) からイベントをサブスクライブし、パイプラインを自動的にトリガーできます。 この機能により、パイプライン、コンテナー、ビルド、パッケージなどの組み込みリソースを超えて、自動化されたトリガーが拡張されます。 パイプラインの自動化は、任意の外部サービスと統合できます。
この機能を使用するには、YAML パイプラインの resources.webhooks の下にwebhook リソースを定義し、イベントをサブスクライブする受信 Webhook サービス接続をポイントします。 JSON ペイロードに対してフィルターを追加して、各パイプラインの実行時に微調整し、ジョブの変数としてペイロード値にアクセスできます。
resources:
webhooks:
- webhook: MyWebhookTrigger ### Webhook alias
connection: MyWebhookConnection ### Incoming webhook service connection
filters:
- path: repositoryName ### JSON path in the payload
value: maven-releases ### Expected value in the path provided
- path: action
value: CREATED
steps:
- task: PowerShell@2
inputs:
targetType: 'inline'
### JSON payload data is available in the form of ${{ parameters.<WebhookAlias>.<JSONPath>}}
script: |
Write-Host ${{ parameters.MyWebhookTrigger.repositoryName}}
Write-Host ${{ parameters.MyWebhookTrigger.component.group}}
詳細については、YAML パイプラインと resources.webhooks.webhook 定義の汎用 Webhook ベースのトリガーに関するページを参照してください。
クラシック リリース パイプライン
継続的デプロイ トリガーは、クラシック ビルドまたは YAML パイプラインの完了後にクラシック リリースを開始するのに役立ちます。
スケジュールされたリリース トリガーを使用すると、スケジュールに従ってリリース パイプラインを実行できます。
pull request リリース トリガーは、クラシック リリースを使用して pull request を直接デプロイするために使用されます。
クラシック リリースのステージ トリガーは、クラシック リリースの各ステージのトリガー方法を構成するために使用されます。