1.12. GitHub Interceptor でのプルリクエスト機能の設定
GitHub Interceptor を使用すると、GitHub Webhook を検証およびフィルタリングするロジックを作成できます。たとえば、Webhook の発信元を検証し、指定された基準に基づいて着信イベントをフィルター処理できます。GitHub Interceptor を使用してイベントデータをフィルタリングする場合は、Interceptor がフィールドで受け入れることができるイベントタイプを指定できます。Red Hat OpenShift Pipelines では、GitHub Interceptor の以下の機能を使用できます。
- 変更されたファイルに基づいてプルリクエストイベントをフィルタリングする
- 設定された GitHub 所有者に基づいてプルリクエストを検証する
1.12.1. GitHub Interceptor を使用したプルリクエストのフィルタリング
プッシュおよびプルイベント用に変更されたファイルに基づいて、GitHub イベントをフィルター処理できます。これは、Git リポジトリー内の関連する変更のみに対してパイプラインを実行するのに役立ちます。GitHub Interceptor は、変更されたすべてのファイルのコンマ区切りリストを追加し、CEL Interceptor を使用して、変更されたファイルに基づいて着信イベントをフィルタリングします。変更されたファイルのリストは、最上位の extensions
フィールドのイベントペイロードの changed_files
がプロパティーに追加されます。
前提条件
- Red Hat OpenShift Pipelines Operator がインストールされている。
手順
以下のいずれかの手順を実行します。
パブリック GitHub リポジトリーの場合は、以下に示す YAML 設定ファイルで
addChangedFiles
パラメーターの値をtrue
に設定します。apiVersion: triggers.tekton.dev/v1beta1 kind: EventListener metadata: name: github-add-changed-files-pr-listener spec: triggers: - name: github-listener interceptors: - ref: name: "github" kind: ClusterInterceptor apiVersion: triggers.tekton.dev params: - name: "secretRef" value: secretName: github-secret secretKey: secretToken - name: "eventTypes" value: ["pull_request", "push"] - name: "addChangedFiles" value: enabled: true - ref: name: cel params: - name: filter value: extensions.changed_files.matches('controllers/') ...
プライベート GitHub リポジトリーの場合は、
addChangedFiles
パラメーターの値をtrue
に設定し、以下に示す YAML 設定ファイルでアクセストークンの詳細、secretName
、およびsecretKey
を指定します。apiVersion: triggers.tekton.dev/v1beta1 kind: EventListener metadata: name: github-add-changed-files-pr-listener spec: triggers: - name: github-listener interceptors: - ref: name: "github" kind: ClusterInterceptor apiVersion: triggers.tekton.dev params: - name: "secretRef" value: secretName: github-secret secretKey: secretToken - name: "eventTypes" value: ["pull_request", "push"] - name: "addChangedFiles" value: enabled: true personalAccessToken: secretName: github-pat secretKey: token - ref: name: cel params: - name: filter value: extensions.changed_files.matches('controllers/') ...
- 設定ファイルを作成します。
1.12.2. GitHub Interceptors を使用したプルリクエストの検証
GitHub Interceptor を使用して、リポジトリー用に設定された GitHub 所有者に基づいてプルリクエストの処理を検証できます。この検証は、PipelineRun
または TaskRun
オブジェクトの不要な実行を防ぐのに役立ちます。GitHub Interceptor は、ユーザー名が所有者としてリストされている場合、または設定可能なコメントがリポジトリーの所有者によって発行された場合にのみ、プルリクエストを処理します。たとえば、所有者としてプルリクエストで /ok-to-test
にコメントすると、PipelineRun
または TaskRun
がトリガーされます。
所有者は、リポジトリーのルートにある OWNERS
ファイルで設定されます。
前提条件
- Red Hat OpenShift Pipelines Operator がインストールされている。
手順
- シークレットの文字列値を作成します。
- その値で GitHub webhook を設定します。
-
シークレット値を含む
secretRef
という名前の Kubernetes シークレットを作成します。 - Kubernetes シークレットを GitHub Interceptor への参照として渡します。
-
owners
ファイルを作成し、承認者のリストをapprovers
セクションに追加します。 以下のいずれかの手順を実行します。
パブリック GitHub リポジトリーの場合は、以下に示す YAML 設定ファイルで
githubOwners
パラメーターの値をtrue
に設定します。apiVersion: triggers.tekton.dev/v1beta1 kind: EventListener metadata: name: github-owners-listener spec: triggers: - name: github-listener interceptors: - ref: name: "github" kind: ClusterInterceptor apiVersion: triggers.tekton.dev params: - name: "secretRef" value: secretName: github-secret secretKey: secretToken - name: "eventTypes" value: ["pull_request", "issue_comment"] - name: "githubOwners" value: enabled: true checkType: none ...
プライベート GitHub リポジトリーの場合は、
githubOwners
パラメーターの値をtrue
に設定し、以下に示す YAML 設定ファイルでアクセストークンの詳細、secretName
、およびsecretKey
を指定します。apiVersion: triggers.tekton.dev/v1beta1 kind: EventListener metadata: name: github-owners-listener spec: triggers: - name: github-listener interceptors: - ref: name: "github" kind: ClusterInterceptor apiVersion: triggers.tekton.dev params: - name: "secretRef" value: secretName: github-secret secretKey: secretToken - name: "eventTypes" value: ["pull_request", "issue_comment"] - name: "githubOwners" value: enabled: true personalAccessToken: secretName: github-token secretKey: secretToken checkType: all ...
注記checkType
パラメーターは、認証が必要な GitHub 所有者を指定するために使用されます。その値をorgMembers
、repoMembers
、またはall
に設定できます。
- 設定ファイルを作成します。