トリガーについて
コードをリポジトリにプッシュしたり、プルリクエストを開いたり、タグを作成したりすると、ソース管理システムが自動的にウェブフックをDroneに送信し、Droneがパイプラインの実行をトリガーします。トリガーセクションはすべてのパイプラインタイプに共通であり、パイプラインの実行を制限するために使用されます。
例では、ブランチごとにパイプラインの実行を制限しています。
1 kind: pipeline
2 type: docker
3 name: default
4
5 steps:
6 - name: build
7 image: golang
8 commands:
9 - go build
10 - go test
11
12 trigger:
13 branch:
14 - master
トリガーでワイルドカードマッチングを使用できます。トリガーは正規表現ではなく、globパターンマッチングを使用することに注意してください。
12 trigger:
13 ref:
14 - refs/heads/master
15 - refs/heads/**
16 - refs/pull/*/head
複数のトリガーを組み合わせることもできます。複数のトリガーを組み合わせる場合は、すべてのトリガーがtrueと評価される必要があることに注意してください。
12 trigger:
13 branch:
14 - master
15 event:
16 - push
ブランチによるトリガー
ブランチトリガーは、gitブランチに基づいてステップの実行を制限します。ターゲットブランチはプルリクエストに対して評価されることに注意してください。ブランチ名はタグイベントには使用できません。
12 trigger:
13 branch:
14 - master
15 - feature/*
構文の例:
12 trigger:
13 branch:
14 include:
15 - master
16 - feature/*
除外構文の例:
12 trigger:
13 branch:
14 exclude:
15 - master
16 - feature/*
イベントによるトリガー
イベントトリガーは、Droneイベントタイプに基づいてステップの実行を制限します。これは、プッシュ、プルリクエスト、タグなどに基づいてステップを制限する場合に役立ちます。
タグイベントでブランチトリガーを使用できないことに注意してください。タグは、タグが作成されたソースブランチに関連付けられていません。
12 trigger:
13 event:
14 - cron
15 - custom
16 - push
17 - pull_request
18 - tag
19 - promote
20 - rollback
構文の例:
12 trigger:
13 event:
14 include:
15 - push
16 - pull_request
除外構文の例:
12 trigger:
13 event:
14 exclude:
15 - pull_request
リファレンスによるトリガー
リファレンストリガーは、git参照名に基づいてステップの実行を制限します。これは、ブランチ名またはタグ名をglobマッチさせたい場合に役立ちます。
12 trigger:
13 ref:
14 - refs/heads/feature-*
15 - refs/tags/*
構文の例:
12 trigger:
13 ref:
14 include:
15 - refs/heads/feature-*
16 - refs/pull/**
17 - refs/tags/**
除外構文の例:
12 trigger:
13 ref:
14 exclude:
15 - refs/heads/feature-*
16 - refs/pull/**
17 - refs/tags/**
リポジトリによるトリガー
リポジトリトリガーは、リポジトリ名に基づいてステップの実行を制限します。これは、リポジトリとそのフォークに対してDroneが有効になっていて、それに応じて実行を制限したい場合に役立ちます。
12 trigger:
13 repo:
14 - octocat/hello-world
構文の例:
12 trigger:
13 repo:
14 include:
15 - octocat/hello-world
16 - spacebhost/hello-world
除外構文の例:
12 trigger:
13 repo:
14 exclude:
15 - octocat/hello-world
16 - spacebhost/hello-world
ワイルドカードマッチングを使用した例:
12 trigger:
13 repo:
14 include:
15 - octocat/*
ステータスによるトリガー
ステータストリガーは、パイプラインステータスに基づいてステップの実行を制限します。たとえば、失敗した場合にのみSlack通知を構成したい場合があります。
12 trigger:
13 status:
14 - failure
失敗時にステップを実行します。
12 trigger:
13 status:
14 - failure
成功または失敗のステップを実行します。
12 trigger:
13 status:
14 - success
15 - failure
次の構成は冗長です。デフォルトの動作では、パイプラインステップは、パイプラインが通過状態にある場合にのみ実行されます。
12 trigger:
13 status:
14 - success
ターゲットによるトリガー
ターゲットトリガーは、ターゲット展開環境に基づいてステップの実行を制限します。これは、プロモーションイベントとロールバックイベントにのみ適用されます。
12 trigger:
13 target:
14 - production
構文の例:
12 trigger:
13 target:
14 include:
15 - staging
16 - production
除外構文の例:
12 trigger:
13 target:
14 exclude:
15 - production
Cronによるトリガー
cronトリガーは、パイプラインをトリガーしたcron名に基づいてステップの実行を制限します。これはcronイベントにのみ適用されます。
12 trigger:
13 event:
14 - cron
15 cron:
16 - nightly
構文の例:
12 trigger:
13 event:
14 - cron
15 cron:
16 include:
17 - weekly
18 - nightly
除外構文の例:
12 trigger:
13 event:
14 - cron
15 cron:
16 exclude:
17 - nightly