8.7.2. Webhook 트리거


Webhook 트리거를 사용하면 OpenShift Container Platform API 끝점에 요청을 전송하여 새 빌드를 트리거할 수 있습니다. GitHub,GitLab,Bitbucket 또는 Generic Webhook를 사용하여 이러한 트리거를 정의할 수 있습니다.

OpenShift Container Platform Webhook는 현재 각 Git 기반 소스 코드 관리 시스템(SCM)에 대해 유사한 버전의 푸시 이벤트만 지원합니다. 기타 모든 이벤트 유형은 무시됩니다.

내보내기 이벤트가 처리되면 이벤트 내부의 분기 참조가 해당 BuildConfig 의 분기 참조와 일치하는지 여부에 대한 확인이 수행됩니다. 일치하는 경우 웹 후크 이벤트에 명시된 정확한 커밋 참조가 OpenShift Container Platform 빌드에 대해 검사됩니다. 일치하지 않는 경우에는 빌드가 트리거되지 않습니다.

참고

oc new-appoc new-build 는 GitHub 및 Generic Webhook 트리거를 자동으로 생성하지만 필요한 다른 Webhook 트리거를 수동으로 추가해야 합니다( Trigger 설정참조).

모든 Webhook에 대해 WebHook Secret Key 라는 키와 Webhook를 호출할 때 제공할 값이 되는 값으로 보안을 정의해야 합니다. 그런 다음 Webhook 정의에서 보안을 참조해야 합니다. 보안을 사용하면 URL의 고유성이 보장되어 다른 사용자가 빌드를 트리거할 수 없습니다. 키 값은 Webhook 호출 중에 제공된 보안과 비교됩니다.

예를 들면 아래 예제에는 mysecret이라는 보안에 대한 참조가 포함된 GitHub Webhook가 있습니다.

type: "GitHub"
github:
  secretReference:
    name: "mysecret"

그런 다음 보안이 다음과 같이 정의됩니다. 보안 값은 Secret 오브젝트의 data 필드에 필요하므로 base64로 인코딩됩니다.

- kind: Secret
  apiVersion: v1
  metadata:
    name: mysecret
    creationTimestamp:
  data:
    WebHookSecretKey: c2VjcmV0dmFsdWUx

8.7.2.1. GitHub Webhooks

GitHub Webhook 는 리포지토리가 업데이트될 때 GitHub에서 생성하는 호출을 처리합니다. 트리거를 정의할 때 보안을 지정해야 합니다. 이 시크릿 은 Webhook를 구성할 때 GitHub에 제공하는 URL의 일부입니다.

GitHub Webhook 정의의 예:

type: "GitHub"
github:
  secretReference:
    name: "mysecret"
참고

Webhook 트리거 구성에 사용되는 보안은 GitHub UI에서 Webhook를 구성할 때 표시되는 secret 필드와 동일하지 않습니다. 전자는 웹 후크 URL을 고유하고 예측하기 어렵게 만드는 것입니다. 후자는 X-octets-Signature 헤더 로 전송되는 본문의 vGPU hex 다이제스트를 만드는 데 사용되는 선택적 문자열 필드입니다.

페이로드 URL은 oc describe 명령에 의해 GitHub Webhook URL로 반환되고( Webhook URL 표시참조) 다음과 같이 구성됩니다.

https://<openshift_api_host:port>/oapi/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/github

GitHub Webhook를 구성하려면 다음을 수행합니다.

  1. GitHub 리포지토리에서 BuildConfig 를 생성한 후 다음을 실행합니다.

    $ oc describe bc/<name-of-your-BuildConfig>

    그러면 다음과 같은 Webhook GitHub URL이 생성됩니다.

    <https://api.starter-us-east-1.openshift.com:443/oapi/v1/namespaces/nsname/buildconfigs/bcname/webhooks/<secret>/github>.
  2. GitHub 웹 콘솔에서 이 URL을 잘라내어 GitHub에 붙여넣습니다.
  3. GitHub 리포지토리의 설정 Webhook에서 Webhook 추가 를 선택합니다.
  4. URL 출력(위와 동일)을 Payload URL 필드에 붙여넣습니다.
  5. GitHub의 기본 application/x-www-form-urlencoded에서 콘텐츠 유형application/json으로 변경합니다.
  6. Webhook 추가를 클릭합니다.

GitHub에서 Webhook가 성공적으로 구성되었음을 알리는 메시지가 표시됩니다.

이제 GitHub 리포지토리에 변경 사항을 내보낼 때마다 새 빌드가 자동으로 시작되고 빌드가 성공하면 새 배포가 시작됩니다.

참고

Gogs는 GitHub와 동일한 Webhook 페이로드 형식을 지원합니다. 따라서 Gogs 서버를 사용하는 경우 BuildConfig 에 GitHub Webhook 트리거를 정의하고 Gogs 서버도 통해 트리거할 수 있습니다.

payload.json 과 같은 유효한 JSON 페이로드가 포함된 파일이 있으면 curl 을 통해 Webhook를 수동으로 트리거할 수 있습니다.

$ curl -H "X-GitHub-Event: push" -H "Content-Type: application/json" -k -X POST --data-binary @payload.json https://<openshift_api_host:port>/oapi/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/github

-k 인수는 API 서버에 올바르게 서명된 인증서가 없는 경우에만 필요합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.