5.4. イベントのパイプライン実行と照合するためのアノテーション
パイプライン実行時にアノテーションを使用することで、各パイプライン実行と、異なる Git プロバイダーイベントをマッピングできます。イベントトガッチする複数のパイプライン実行がある場合に、Pipelines as Code はそれらを並行して実行し、パイプライン実行の終了直後に結果を Git プロバイダーに通知します。
5.4.1. プルリクエストイベントとパイプライン実行とのマッチング処理 リンクのコピーリンクがクリップボードにコピーされました!
次の例を使用して、main ブランチを対象とする pull_request イベントと、pipeline-pr-main パイプライン実行を一致させることができます。
- 1
- コンマ区切りのエントリーを追加して、複数のブランチを指定できます。たとえば、
"[main, release-nightly]"です。さらに、以下の項目を指定できます。-
"refs/heads/main"などのブランチへの完全な参照 -
"refs/heads/\*"などのパターン照合を含む glob -
"refs/tags/1.\*"などのタグ
-
5.4.2. プッシュイベントのパイプライン実行との照合 リンクのコピーリンクがクリップボードにコピーされました!
次の例を使用して、pipeline-push-on-main パイプライン実行を refs/heads/main ブランチを対象とする push イベントと一致させることができます。
- 1
- コンマ区切りのエントリーを追加して、複数のブランチを指定できます。たとえば、
"[main, release-nightly]"です。さらに、以下の項目を指定できます。-
"refs/heads/main"などのブランチへの完全な参照 -
"refs/heads/\*"などのパターン照合を含む glob -
"refs/tags/1.\*"などのタグ
-
5.4.3. コメントイベントのパイプライン実行へのマッチング処理 リンクのコピーリンクがクリップボードにコピーされました!
コメントイベントをパイプライン実行に一致させる機能は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
次の例を使用すると、コメントのテキストが ^/merge-pr 正規表現と一致する場合に、pipeline-comment パイプライン実行をプルリクエストのコメントと一致させることができます。
パイプラインの実行は、コメント作成者が次のいずれかの要件を満たしている場合にのみ開始されます。
- 作成者がリポジトリーの所有者である。
- 作成者がリポジトリーのコラボレーターである。
- 作成者がリポジトリーの組織のパブリックメンバーである。
-
コメントの作成者が Kubernetes ドキュメント で定義されているように、リポジトリーのルートにある
OWNERSファイルのapproversまたはreviewersのセクションにリストされている。Pipelines as Code はOWNERSおよびOWNERS_ALIASESファイルの仕様をサポートします。OWNERSファイルに フィルター セクションが含まれている場合、Pipelines as Code は approvers と reviewers を.*フィルターに対してのみ照合します。
5.4.4. 高度なイベントマッチング処理 リンクのコピーリンクがクリップボードにコピーされました!
Pipelines as Code は、高度なイベントマッチング処理のために Common Expression Language (CEL) ベースのフィルタリングの使用をサポートします。パイプラインの実行に pipelinesascode.tekton.dev/on-cel-expression アノテーションがある場合に、Pipelines as Code は CEL 式を使用し、on-target-branch アノテーションをスキップします。単純な on-target-branch アノテーションのマッチング処理と比較して、CEL 式では複雑なフィルタリングと否定が可能です。
on-cel-expression アノテーションを、on-event、on-target-branch、on-label、on-path-change、または on-path-change-ignore アノテーションと同じパイプライン実行内で使用すると、on-cel-expression アノテーションが優先され、Pipelines as Code は他のアノテーションを無視します。
Pipelines as Code で CEL ベースのフィルタリングを使用するには、次のアノテーションの例を検討してください。
mainブランチを対象とし、wipブランチからのpull_requestイベントを一致させるには、次のようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow パスが変更された場合にのみパイプラインを実行するには、glob パターンで
.pathChanged接尾辞関数を使用できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
docsディレクトリー内のすべてのマークダウンファイルと一致します。
[DOWNSTREAM]で始まるすべてのプルリクエストとマッチさせるには、以下を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow pull_requestイベントでパイプラインを実行し、experimentalブランチを省略するには、以下を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pipelines as Code を使用しながら高度な CEL ベースのフィルタリングを行うには、次のフィールドと接尾辞関数を使用できます。
-
event:pushまたはpull_requestイベント。 -
target_branch: ターゲットブランチ。 -
source_branch: 元のpull_requestイベントのブランチ。pushイベントの場合は、target_branchと同じです。 -
event_title:pushイベントのコミットタイトルや、pull_requestイベントのプルまたはマージリクエストのタイトルなど、イベントのタイトルとマッチします。現在、サポートされているプロバイダーは GitHub、Gitlab、および Bitbucket Cloud のみです。 -
.pathChanged: 文字列への接尾辞関数です。文字列は、パスが変更されたかどうかを確認するパスの glob にすることができます。現在、GitHub と Gitlab のみがプロバイダーとしてサポートされています。
さらに、Git リポジトリープロバイダーによって渡された完全なペイロードにアクセスできます。headers フィールドを使用して、ペイロードのヘッダー (headers['x-github-event'] など) にアクセスします。body フィールドを使用して、ペイロードの本文 (body.pull_request.state など) にアクセスします。
Pipelines as Code による CEL ベースのフィルタリングにペイロードのヘッダーと本文を使用するのは、テクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
次の例では、次の条件がすべて満たされる場合にのみパイプラインの実行が開始します。
-
プルリクエストは
mainブランチをターゲットとしています。 -
プルリクエストの作成者は
superuserです。 -
アクションは
synchronizeです。このアクションは、プルリクエストで更新が発生したときにトリガーされます。
イベントの一致に header または body フィールドを使用する場合は、retest などの Git コマンドを使用してパイプラインの実行をトリガーできない可能性があります。Git コマンドを使用する場合、ペイロード本体は元のペイロードではなく、このコマンドを含むコメントになります。
イベントのマッチング処理に body フィールドを使用するときにパイプライン実行を再度トリガーする場合は、プルリクエストを終了し、再度開くか、または要求をマージするか、新しい SHA コミットを追加できます。次のコマンドを使用して、新しい SHA コミットを追加できます。
git commit --amend --no-edit && git push --force-with-lease
git commit --amend --no-edit && git push --force-with-lease