검색

1.12. GitHub Interceptor에서 가져오기 요청 기능 구성

download PDF

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를 설치했습니다.

프로세스

  1. 다음 중 하나를 실행합니다.

    • 공개 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 구성 파일에 액세스 토큰 세부 정보 secretNamesecretKey 를 제공합니다.

      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/')
      ...
  2. 구성 파일을 저장합니다.

1.12.2. GitHub Interceptors를 사용하여 가져오기 요청 검증

GitHub Interceptor를 사용하여 리포지토리에 구성된 GitHub 소유자를 기반으로 가져오기 요청 처리를 검증할 수 있습니다. 이 검증은 PipelineRun 또는 TaskRun 오브젝트의 불필요한 실행을 방지하는 데 도움이 됩니다. GitHub 인터셉터는 사용자 이름이 소유자로 나열되거나 리포지토리 소유자가 구성 가능한 주석이 발행된 경우에만 가져오기 요청을 처리합니다. 예를 들어 가져오기 요청에서 소유자로 /ok-to-test 를 주석 처리하면 PipelineRun 또는 TaskRun 이 트리거됩니다.

참고

소유자는 리포지토리 루트의 OWNERS 파일에 구성됩니다.

사전 요구 사항

  • Red Hat OpenShift Pipelines Operator를 설치했습니다.

프로세스

  1. 시크릿 문자열 값을 생성합니다.
  2. 해당 값을 사용하여 GitHub Webhook를 구성합니다.
  3. 시크릿 값이 포함된 secretRef 라는 Kubernetes 시크릿을 생성합니다.
  4. GitHub 인터셉터에 대한 참조로 Kubernetes 시크릿을 전달합니다.
  5. 소유자 파일을 만들고 승인자 섹션에 승인자 목록을 추가합니다.
  6. 다음 중 하나를 실행합니다.

    • 공개 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 구성 파일에 액세스 토큰 세부 정보 secretNamesecretKey 를 제공합니다.

      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 로 설정할 수 있습니다.

  7. 구성 파일을 저장합니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.