第5章 Pipelines as Code でパイプライン実行を作成する
Pipelines as Code をリポジトリープロバイダーと統合し、Repository
カスタムリソース (CR) を使用して特定のリポジトリーを定義した後、リポジトリー内でパイプライン実行定義を作成できます。
5.1. Pipelines as Code を使用してパイプライン実行を作成する リンクのコピーリンクがクリップボードにコピーされました!
リポジトリー内に Pipelines as Code のパイプライン実行定義を作成し、それをプルリクエストなどのイベントに一致させることができます。イベントが発生すると、Pipelines as Code はこの定義から PipelineRun
カスタムリソース (CR) を作成し、その後 OpenShift Pipelines がパイプライン実行を実行します。
前提条件
- Git リポジトリーホスティングサービスプロバイダーと統合するように、Pipelines as Code を設定した。
-
Pipelines as Code でリポジトリーへの接続を定義するために、
Repository
カスタムリソース (CR) を作成した。 -
リポジトリーの root に
.tekton
ディレクトリーがある。
手順
-
.tekton
ディレクトリーに、.yaml
または.yml
拡張子を持つファイルを作成します。 -
作成したファイルで、
PipelineRun
CR の YAML 仕様を作成します。この仕様では、OpenShift Pipelines のすべての機能を使用できます。 パイプライン実行定義の要件に応じて、次のいずれかのオプションの手順を実行します。
-
.tekton
ディレクトリーに.yaml
または.yml
拡張子を持つ他のファイルを作成します。これらのファイルでは、Pipeline
、Task
、StepAction
CR など、パイプライン実行定義が参照するリソースの定義を提供します。Pipelines as Code リゾルバーはこれらのリソースを自動的に解決し、定義に基づきPipelineRun
CR に含めます。 パイプライン実行仕様で 動的変数 を使用します。Pipelines as Code は、これらの変数を現在のコンテキストを表す値に置き換えます。たとえば、
{{ repo_url }}
はリポジトリーの現在の URL、{{ revision }}
はパイプライン実行が開始されたコミット SHA です。動的変数の詳細は、「パイプライン実行仕様の動的変数」セクションを参照してください。
パイプライン実行定義に、1 つ以上の Pipelines as Code リゾルバーアノテーションを追加します。Pipelines as Code リゾルバーアノテーションは、Tekton Hub 内のパイプラインまたはタスク、HTTP ロケーション、または
.tekton
ディレクトリー外のリポジトリー内のロケーションを参照します。リソースを参照するために Pipelines as Code リゾルバーアノテーションを作成すると、パイプライン実行定義でこのリソースを名前で使用できます。Pipelines as Code リゾルバーはこれらのリソースを自動的に解決し、定義に基づきPipelineRun
CR に含めます。これらのアノテーションの詳細は、「Pipelines as Code リゾルバーアノテーション」セクションを参照してください。
-
パイプライン実行定義に次のいずれかのアノテーションを追加して、パイプライン実行をイベントに一致させます。定義されたイベントが発生すると、Pipelines as Code はパイプライン実行を開始します。パイプライン実行をイベントに一致させる方法の詳細は、「イベントをパイプライン実行と照合するためのアノテーション」セクションを参照してください。
pull request
またはpush
イベントを定義するpipelinesascode.tekton.dev/on-event
アノテーションと、プルリクエストまたはプッシュイベントがターゲットとする必要があるブランチを定義するpipelinesascode.tekton.dev/on-target-branch
アノテーションの組み合わせ。パイプライン実行をプルリクエストまたはプッシュイベントに一致させると、イベントの作成時にパイプライン実行が開始されます。プルリクエストの場合は、ソースブランチイベントが更新されるたびに再度開始されます。注記Git リポジトリープロバイダーがプルリクエストではなくマージリクエストを使用する場合、
pull_request
イベント定義はマージリクエストと一致します。-
pipelinesascode.tekton.dev/on-comment
アノテーション。パイプライン実行を正規表現によってプルリクエストのコメントに一致させます。パイプラインの実行をコメントに一致させると、コメントがプルリクエストに追加されたときにパイプライン実行が開始されます。パイプライン実行を再度開始するには、コメントを再度追加します。 -
pipelinesascode.tekton.dev/on-cel-expression
アノテーション。指定された Common Expression Language (CEL) 式がプルリクエストまたはプッシュイベントでtrue
と評価された場合にパイプライン実行と一致します。
オプション: 一致するイベントをフィルタリングする 1 つ以上のアノテーションを追加します。これらのアノテーションを使用すると、定義された一致イベント (プルリクエスト、プッシュイベント、コメントなど) が発生すると、Pipelines as Code はこれらのアノテーションも一致するかどうかを確認します。パイプライン実行は、パイプラインに追加したすべてのアノテーションが一致する場合にのみ開始されます。一致イベントのフィルタリングの詳細は、「イベントのフィルタリングのアノテーション」セクションを参照してください。
-
プルリクエストまたはプッシュイベントが指定されたパス内のファイルに影響する場合、
pipelinesascode.tekton.dev/on-path-changed
アノテーションが一致します。 -
pipelinesascode.tekton.dev/on-path-changed-ignore
アノテーションは、イベントが指定されたパス内のファイル のみ を変更し、リポジトリー内の他のファイルは変更しない場合、イベントの一致を除外します。 -
プルリクエストまたはプッシュイベントに指定されたラベルのいずれかがある場合、
pipelinesascode.tekton.dev/on-label
アノテーションが一致します。
-
プルリクエストまたはプッシュイベントが指定されたパス内のファイルに影響する場合、
-
オプション: 特定のケースでパイプライン実行の自動キャンセルを有効にするには、
pipelinesascode.tekton.dev/cancel-in-progress: "true"
アノテーションを追加します。たとえば、プルリクエストによってパイプライン実行がトリガーされ、その後ユーザーがプルリクエストのソースブランチに新しいコミットをプッシュすると、プッシュごとにパイプラインの実行の新しいコピーがトリガーされます。自動 cancellation-in-progress を有効にすると、パイプライン実行の新しいコピーが開始された後、Pipelines as Code は古い実行をキャンセルして、パイプライン実行の多くのコピーが同時に実行されることを回避します。このアノテーションの詳細は、「パイプライン実行の自動 cancellation-in-progress を指定するためのアノテーション」セクションを参照してください。
Pipelines as Code パイプライン実行定義の例
- 1
pipelinesascode.tekton.dev/task
アノテーションは、Tekton Hub のgit-clone
タスクを参照します。- 2
pipelinesascode.tekton.dev/on-event
アノテーションは、パイプラインの実行をプルリクエストまたはマージリクエストイベントに一致させます。- 3
pipelinesascode.tekton.dev/on-target-branch
アノテーションは、main
ブランチまたはrelease
ブランチへのプルリクエストによってこのパイプライン実行がトリガーされることを指定します。- 4
pipelinesascode.tekton.dev/on-path-changed
アノテーションは、プルリクエストにsrc
ディレクトリー配下のファイルへの変更が含まれている場合にのみパイプライン実行がトリガーされることを指定します。- 5
pipelinesascode.tekton.dev/cancel-in-progress
アノテーションは、同じプルリクエストに対してパイプライン実行が再度開始された場合、Pipelines as Code が前の実行をキャンセルすることを指定します。- 6
- パイプライン実行仕様は、
git-clone
タスクを名前で参照します。pipelinesascode.tekton.dev/task
アノテーションにより、Pipelines as Code リゾルバーは、この参照を Tekton Hub のgit-clone
タスクに解決します。 - 7
- Pipelines as Code は、
{{ repo_url }}
動的変数を Git リポジトリーの URL に置き換えます。 - 8
- Pipelines as Code は、
{{ revision }}
動的変数をパイプライン実行が開始されたブランチのリビジョンに置き換えます。