第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 ディレクトリーがある。

手順

  1. .tekton ディレクトリーに .yaml または .yml 拡張子を含むファイルを作成します。
  2. 作成したファイルで、PipelineRun CR の YAML 仕様を作成します。この仕様は、OpenShift Pipeline のすべての機能を使用できます。
  3. パイプライン実行定義の要件に応じて、次のいずれかの手順を実行します。

    • .yaml または .yml 拡張子を持つ他のファイルを .tekton ディレクトリーに作成します。これらのファイルに、PipelineTaskStepAction 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 リゾルバーアノテーションセクションを参照してください。

  4. 以下のアノテーションをパイプライン実行定義に追加して、パイプライン実行をイベントに一致します。定義されたイベントが発生すると、コードとしてのパイプラインはパイプラインの実行を開始します。パイプライン実行とイベントへのマッチングについて、詳しくは「パイプライン実行とのイベントのマッチング」のセクションを参照してください。

    • プルリクエストまたはプッシュイベントを定義する 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 と評価される場合にパイプライン実行に一致します。
  5. オプション:一致するイベントをフィルタリングする 1 つ以上のアノテーションを追加します。これらのアノテーションを使用すると、定義された一致するイベント(プルリクエスト、プッシュイベント、またはコメントなど)が発生すると、コードとしてのパイプラインは、これらのアノテーションも一致するかどうかを確認します。パイプライン実行は、追加したすべてのアノテーションが一致する場合にのみ起動します。一致するイベントのフィルターに関する詳細は、イベントをフィルタリングするためのアノテーションセクションを参照してください。

    • プルリクエストまたはプッシュイベントが指定されたパス内のファイルに影響を与える場合、pipelinesascode.tekton.dev/on-path-changed アノテーションは照合されます。
    • pipelinesascode.tekton.dev/on-path-changed-ignore アノテーションは、イベントが指定されたパスのファイル のみ を変更し、リポジトリーの他のファイルを変更しない場合は、一致するイベントを除外します。
    • プルリクエストまたはプッシュイベントに指定されたラベルのいずれかがある場合、pipelinesascode.tekton.dev/on-label アノテーションが一致します。
  6. オプション: pipelinesascode.tekton.dev/cancel-in-progress: "true" アノテーションを追加して、特定のケースでパイプライン実行の自動キャンセルを有効にします。たとえば、プルリクエストによってパイプラインの実行がトリガーされ、ユーザーが新しいコミットをプル要求ソースブランチにプッシュする場合、それぞれのプッシュはパイプライン実行の新しいコピーをトリガーします。自動キャンセルを有効にすると、パイプライン実行の新しいコピーが開始されると、Pipelines as Code は古い実行をキャンセルして、パイプライン実行の多くのコピーを同時に実行しないようにします。このアノテーションの詳細については、パイプライン実行の自動キャンセルを指定するアノテーションを参照してください。

Pipelines as Code パイプライン実行定義の例

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  name: maven-build
annotations:
  pipelinesascode.tekton.dev/task: "[git-clone]" 
1

  pipelinesascode.tekton.dev/on-event: "[pull_request]" 
2

  pipelinesascode.tekton.dev/on-target-branch: "[main, release]" 
3

  pipelinesascode.tekton.dev/on-path-changed: "[src/**]" 
4

  pipelinesascode.tekton.dev/cancel-in-progress: "true" 
5

spec:
  pipelineSpec:
    workspaces:
    - name: shared-workspace
    tasks:
      - name: fetch-repo
        taskRef:
          - name: git-clone 
6

        params:
        - name: url
          value: {{ repo_url }} 
7

        - name: revision
          value: {{ revision }} 
8

        workspaces:
        - name: output
          workspace: shared-workspace
      - name: build-from-source
        taskRef:
          resolver: cluster
          params:
          - name: kind
            value: task
          - name: name
            value: maven
          - name: namespace
            value: openshift-pipelines
        workspaces:
        - name: source
          workspace: shared-workspace
Copy to Clipboard Toggle word wrap

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 }} 動的変数を、パイプライン実行が開始したブランチのリビジョンに置き換えます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat