条件

Updated 2 years ago by Admin

条件を使用して、実行時のパイプラインステップの実行を制限できます。たとえば、ブランチごとにステップの実行を制限したい場合があります。

1   kind: pipeline
2 type: ssh
3 name: default
4
5 server:
6 host: 1.2.3.4
7 user: root
8 password:
9 from_secret: password
10
11 steps:
12 - name: build
13 commands:
14 - go build
15 - go test
16 when:
17 branch:
18 - master
19 - feature/*

条件にワイルドカードマッチングを使用できます。条件は正規表現ではなく、globパターンマッチングを使用することに注意してください。

16  when:
17 ref:
18 - refs/heads/master
19 - refs/heads/**
20 - refs/pull/*/head

複数の条件を組み合わせることもできます。複数の条件を組み合わせる場合は、すべての条件がtrueと評価される必要があることに注意してください。

16    when:
17 branch:
18 - master
19 event:
20 - push


ブランチによる条件

ブランチ条件は、gitブランチに基づいてステップの実行を制限します。ターゲットブランチはプルリクエストに対して評価されることに注意してください。ブランチ名はタグイベントには使用できません。

タグで分岐条件を使用することはできないことに注意してください。タグは、タグが作成されたソースブランチに関連付けられていません。
16    when:
17 branch:
18 - master
19 - feature/*

構文の例:

16    when:
17 branch:
18 include:
19 - master
20 - feature/*

除外構文の例:

16    when:
17 branch:
18 exclude:
19 - master
20 - feature/*


イベントによる条件

イベント条件は、Droneイベントタイプに基づいてステップの実行を制限します。これは、プッシュ、プルリクエスト、タグなどに基づいてステップを制限する場合に役立ちます。

タグイベントで分岐条件を使用できないことに注意してください。タグは、タグが作成されたソースブランチに関連付けられていません。
16  when:
17 event:
18 - push
19 - pull_request
20 - tag
21 - promote
22 - rollback

構文の例:

16    when:
17 event:
18 include:
19 - push
20 - pull_request

除外構文の例:

16    when:
17 event:
18 exclude:
19 - pull_request


リファレンスによる条件

リファレンス条件は、git参照名に基づいてステップの実行を制限します。これは、ブランチ名またはタグ名をglobマッチさせたい場合に役立ちます。

16  when:
17 ref:
18 - refs/heads/feature-*
19 - refs/tags/*

構文の例:

16  when:
17 ref:
18 include:
19 - refs/heads/feature-*
20 - refs/pull/**
21 - refs/tags/**

除外構文の例:

16  when:
17 ref:
18 exclude:
19 - refs/heads/feature-*
20 - refs/pull/**
21 - refs/tags/**


リポジトリによる条件

リポジトリ条件は、リポジトリ名に基づいてステップの実行を制限します。これは、リポジトリとそのフォークに対してDroneが有効になっていて、それに応じて実行を制限したい場合に役立ちます。

16  when:
17 repo:
18 - octocat/hello-world

構文の例:

16  when:
17 repo:
18 include:
19 - octocat/hello-world
20 - spacebhost/hello-world

除外構文の例:

16  when:
17 repo:
18 exclude:
19 - octocat/hello-world
20 - spacebhost/hello-world

ワイルドカードマッチングを使用した例:

16  when:
17 repo:
18 include:
19 - octocat/*


インスタンスによる条件

インスタンス条件は、Droneインスタンスのホスト名に基づいてステップの実行を制限します。これは、単一のリポジトリ用に複数のDroneインスタンスを構成し、同じyamlファイルを共有していて、インスタンスごとにステップを制限したい場合に役立ちます。

16  when:
17 instance:
18 - drone.instance1.com
19 - drone.instance2.com

構文の例:

16  when:
17 instance:
18 include:
19 - drone.instance1.com
20 - drone.instance2.com

除外構文の例:

16  when:
17 instance:
18 exclude:
19 - drone.instance1.com
20 - drone.instance2.com

ワイルドカードマッチングを使用した例:

16  when:
17 instance:
18 include:
19 - *.company.com


ステータスによる条件

ステータス条件は、パイプラインステータスに基づいてステップの実行を制限します。たとえば、失敗した場合にのみSlack通知を構成したい場合があります。

16  when:
17 status:
18 - failure

失敗時にステップを実行します。

16  when:
17 status:
18 - failure

成功または失敗のステップを実行します。

16  when:
17 status:
18 - success
19 - failure

次の構成は冗長です。デフォルトの動作では、パイプラインステップは、パイプラインが通過状態にある場合にのみ実行されます。

16  when:
17 status:
18 - success


ターゲットによる条件

ターゲット条件は、ターゲット展開環境に基づいてステップの実行を制限します。これは、プロモーションイベントとロールバックイベントにのみ適用されます。

16  when:
17 target:
18 - production

構文の例:

16  when:
17 target:
18 include:
19 - staging
20 - production

除外構文の例:

16  when:
17 target:
18 exclude:
19 - production


How did we do?