第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)を作成している。 -
リポジトリーのルートに
.tekton
ディレクトリーがある。
手順
-
.tekton
ディレクトリーに.yaml
または.yml
拡張子を含むファイルを作成します。 -
作成したファイルで、
PipelineRun
CR の YAML 仕様を作成します。この仕様は、OpenShift Pipeline のすべての機能を使用できます。 パイプライン実行定義の要件に応じて、次のいずれかの手順を実行します。
-
.yaml
または.yml
拡張子を持つ他のファイルを.tekton
ディレクトリーに作成します。これらのファイルに、Pipeline
、Task
、StepAction
CR など、パイプライン実行定義が参照するリソースの定義を指定します。Pipelines as Code リゾルバーは、これらのリソースを自動的に解決し、定義に基づくPipelineRun
CR に含めます。 パイプライン実行仕様で 動的変数 を使用します。コードとしてのパイプラインは、これらの変数を現在のコンテキストを表す値に置き換えます。たとえば、
{{ repo_url }}
はリポジトリーの現在の URL で、{{ revision }}
はパイプライン実行が開始されたコミット SHA です。動的変数の詳細については、パイプライン実行仕様の動的変数のセクションを参照してください。
1 つ以上の Pipelines as Code リゾルバーアノテーションをパイプライン実行定義に追加します。コードとしてのパイプラインリゾルバーアノテーションは、Tekton Hub のパイプラインまたはタスク、HTTP の場所、または
.tekton
ディレクトリー外のリポジトリー内の場所を参照します。リソースを参照するために Pipelines as Code リゾルバーアノテーションを作成する場合、パイプライン実行定義でこのリソースを名前で使用できます。Pipelines as Code リゾルバーは、これらのリソースを自動的に解決し、定義に基づくPipelineRun
CR に含めます。これらのアノテーションの詳細については、Pipelines as Code リゾルバーアノテーションセクションを参照してください。
-
以下のアノテーションをパイプライン実行定義に追加して、パイプライン実行をイベントに一致します。定義されたイベントが発生すると、コードとしてのパイプラインはパイプラインの実行を開始します。パイプライン実行とイベントへのマッチングについて、詳しくは「パイプライン実行とのイベントのマッチング」のセクションを参照してください。
プルリクエストまたはプッシュイベントを定義する
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 つ以上のアノテーションを追加します。これらのアノテーションを使用すると、定義された一致するイベント(プルリクエスト、プッシュイベント、またはコメントなど)が発生すると、コードとしてのパイプラインは、これらのアノテーションも一致するかどうかを確認します。パイプライン実行は、追加したすべてのアノテーションが一致する場合にのみ起動します。一致するイベントのフィルターに関する詳細は、イベントをフィルタリングするためのアノテーションセクションを参照してください。
-
プルリクエストまたはプッシュイベントが指定されたパス内のファイルに影響を与える場合、
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"
アノテーションを追加して、特定のケースでパイプライン実行の自動キャンセルを有効にします。たとえば、プルリクエストによってパイプラインの実行がトリガーされ、ユーザーが新しいコミットをプル要求ソースブランチにプッシュする場合、それぞれのプッシュはパイプライン実行の新しいコピーをトリガーします。自動キャンセルを有効にすると、パイプライン実行の新しいコピーが開始されると、Pipelines as Code は古い実行をキャンセルして、パイプライン実行の多くのコピーを同時に実行しないようにします。このアノテーションの詳細については、パイプライン実行の自動キャンセルを指定するアノテーションを参照してください。
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
アノテーションは、メイン
ブランチまたはリリース
ブランチへのプルリクエストがこのパイプライン実行をトリガーすることを指定します。- 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
- コードとしてのパイプラインは、
{{ repo_url }}
動的変数を Git リポジトリーの URL に置き換えます。 - 8
- Pipelines as Code は、
{{ revision }}
動的変数を、パイプライン実行が開始したブランチのリビジョンに置き換えます。