1.12. GitHub Interceptor에서 가져오기 요청 기능 구성
GitHub Interceptor를 사용하면 GitHub Webhook의 유효성을 검사하고 필터링하는 논리를 생성할 수 있습니다. 예를 들어 Webhook의 출처를 확인하고 지정된 기준에 따라 들어오는 이벤트를 필터링할 수 있습니다. GitHub Interceptor를 사용하여 이벤트 데이터를 필터링하면 인터셉터가 필드에서 수락할 수 있는 이벤트 유형을 지정할 수 있습니다. Red Hat OpenShift Pipelines에서는 GitHub 인터셉터의 다음과 같은 기능을 사용할 수 있습니다.
- 변경된 파일을 기반으로 가져오기 요청 이벤트를 필터링
- 구성된 GitHub 소유자를 기반으로 가져오기 요청 검증
1.12.1. GitHub Interceptor를 사용하여 가져오기 요청 필터링
푸시 및 가져오기 이벤트를 위해 변경된 파일을 기반으로 GitHub 이벤트를 필터링할 수 있습니다. 이를 통해 Git 리포지토리의 관련 변경 사항만 파이프라인을 실행할 수 있습니다. GitHub Interceptor는 변경된 모든 파일의 쉼표로 구분된 목록을 추가하고 CEL 인터셉터를 사용하여 변경된 파일을 기반으로 들어오는 이벤트를 필터링합니다. 변경된 파일 목록은 최상위 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 인터셉터는 사용자 이름이 소유자로 나열되거나 리포지토리 소유자가 구성 가능한 주석이 발행된 경우에만 가져오기 요청을 처리합니다. 예를 들어 가져오기 요청에서 소유자로 /ok-to-test
를 주석 처리하면 PipelineRun
또는 TaskRun
이 트리거됩니다.
소유자는 리포지토리 루트의 OWNERS
파일에 구성됩니다.
사전 요구 사항
- Red Hat OpenShift Pipelines Operator를 설치했습니다.
프로세스
- 시크릿 문자열 값을 생성합니다.
- 해당 값을 사용하여 GitHub Webhook를 구성합니다.
-
시크릿 값이 포함된
secretRef
라는 Kubernetes 시크릿을 생성합니다. - GitHub 인터셉터에 대한 참조로 Kubernetes 시크릿을 전달합니다.
-
소유자
파일을 만들고 승인자 섹션에 승인자 목록을 추가합니다. 다음 중 하나를 실행합니다.
공개 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
로 설정할 수 있습니다.
- 구성 파일을 저장합니다.