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

手順

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

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

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

    • プルリクエストまたはプッシュイベントが指定されたパス内のファイルに影響する場合、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" アノテーションを追加します。たとえば、プルリクエストによってパイプライン実行がトリガーされ、その後ユーザーがプルリクエストのソースブランチに新しいコミットをプッシュすると、プッシュごとにパイプラインの実行の新しいコピーがトリガーされます。自動 cancellation-in-progress を有効にすると、パイプライン実行の新しいコピーが開始された後、Pipelines as Code は古い実行をキャンセルして、パイプライン実行の多くのコピーが同時に実行されることを回避します。このアノテーションの詳細は、「パイプライン実行の自動 cancellation-in-progress を指定するためのアノテーション」セクションを参照してください。

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

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat