条件
条件を使用して、実行時のパイプラインステップの実行を制限できます。たとえば、ブランチごとにステップの実行を制限したい場合があります。
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 when:
12 branch:
13 - master
14 - feature/*
条件にワイルドカードマッチングを使用できます。条件は正規表現ではなく、globパターンマッチングを使用することに注意してください。
11 when:
12 ref:
13 - refs/heads/master
14 - refs/heads/**
15 - refs/pull/*/head
複数の条件を組み合わせることもできます。複数の条件を組み合わせる場合は、すべての条件がtrueと評価される必要があることに注意してください。
11 when:
12 branch:
13 - master
14 event:
15 - push
ブランチによる条件
ブランチ条件は、gitブランチに基づいてステップの実行を制限します。ターゲットブランチはプルリクエストに対して評価されることに注意してください。ブランチ名はタグイベントには使用できません。
11 when:
12 branch:
13 - master
14 - feature/*
構文の例:
11 when:
12 branch:
13 include:
14 - master
15 - feature/*
除外構文の例:
11 when:
12 branch:
13 exclude:
14 - master
15 - feature/*
イベントによる条件
イベント条件は、Droneイベントタイプに基づいてステップの実行を制限します。これは、プッシュ、プルリクエスト、タグなどに基づいてステップを制限する場合に役立ちます。
11 when:
12 event:
13 - push
14 - pull_request
15 - tag
16 - promote
17 - rollback
構文の例:
11 when:
12 event:
13 include:
14 - push
15 - pull_request
除外構文の例:
11 when:
12 event:
13 exclude:
14 - pull_request
リファレンスによる条件
リファレンス条件は、git参照名に基づいてステップの実行を制限します。これは、ブランチ名またはタグ名をグロブマッチさせたい場合に役立ちます。
11 when:
12 ref:
13 - refs/heads/feature-*
14 - refs/tags/*
構文の例:
11 when:
12 ref:
13 include:
14 - refs/heads/feature-*
15 - refs/pull/**
16 - refs/tags/**
除外構文の例:
11 when:
12 ref:
13 exclude:
14 - refs/heads/feature-*
14 - refs/pull/**
15 - refs/tags/**
リポジトリによる条件
リポジトリ条件は、リポジトリ名に基づいてステップの実行を制限します。これは、リポジトリとそのフォークに対してDroneが有効になっていて、それに応じて実行を制限したい場合に役立ちます。
11 when:
12 repo:
13 - octocat/hello-world
構文の例:
11 when:
12 repo:
13 include:
14 - octocat/hello-world
15 - spacebhost/hello-world
除外構文の例:
11 when:
12 repo:
13 exclude:
14 - octocat/hello-world
15 - spacebhost/hello-world
ワイルドカードマッチングを使用した例:
11 when:
12 repo:
13 include:
14 - octocat/*
インスタンスによる条件
インスタンス条件は、Droneインスタンスのホスト名に基づいてステップの実行を制限します。これは、単一のリポジトリ用に複数のDroneインスタンスを構成し、同じyamlファイルを共有していて、インスタンスごとにステップを制限したい場合に役立ちます。
11 when:
12 instance:
13 - drone.instance1.com
14 - drone.instance2.com
構文の例:
11 when:
12 instance:
13 include:
14 - drone.instance1.com
14 - drone.instance2.com
除外構文の例:
11 when:
12 instance:
13 exclude:
14 - drone.instance1.com
15 - drone.instance2.com
ワイルドカードマッチングを使用した例:
11 when:
12 instance:
13 include:
14 - *.company.com
ステータスによる条件
ステータス条件は、パイプラインステータスに基づいてステップの実行を制限します。たとえば、失敗した場合にのみSlack通知を構成したい場合があります。
11 when:
12 status:
13 - failure
失敗時にステップを実行します。
11 when:
12 status:
13 - failure
成功または失敗のステップを実行します。
11 when:
12 status:
13 - success
14 - failure
次の構成は冗長です。デフォルトの動作では、パイプラインステップは、パイプラインが通過状態にある場合にのみ実行されます。
11 when:
12 status:
13 - success
ターゲットによる条件
ターゲット条件は、ターゲット展開環境に基づいてステップの実行を制限します。これは、プロモーションイベントとロールバックイベントにのみ適用されます。
11 when:
12 target:
13 - production
構文の例:
11 when:
12 target:
13 include:
14 - staging
15 - production
除外構文の例:
11 when:
12 target:
13 exclude:
14 - production
Cronによる条件
cron条件は、パイプラインをトリガーしたcron名に基づいてステップの実行を制限します。これはcronイベントにのみ適用されます。
11 when:
12 event:
13 - cron
14 cron:
15 - nightly
構文の例:
11 when:
12 event:
13 - cron
14 target:
15 include:
16 - weekly
17 - nightly
除外構文の例:
11 when:
12 event:
13 - cron
14 target:
15 exclude:
16 - nightly