8.7.2.4. 일반 Webhooks
일반 Webhook는 웹 요청을 수행할 수 있는 모든 시스템에서 호출합니다. 다른 Webhook와 마찬가지로 보안을 지정해야 하는데, 보안은 호출자가 빌드를 트리거하는 데 사용해야 하는 URL의 일부가 됩니다. 보안을 사용하면 URL의 고유성이 보장되어 다른 사용자가 빌드를 트리거할 수 없습니다. 다음은 BuildConfig
내 트리거 정의 YAML의 예입니다.
type: "Generic"
generic:
secretReference:
name: "mysecret"
allowEnv: true 1
- 1
- 일반 Webhook에서 환경 변수를 전달하도록 허용하려면
true
로 설정합니다.
호출자를 설정하기 위해 빌드에 대한 일반 Webhook 끝점의 URL을 호출 시스템에 제공합니다.
https://<openshift_api_host:port>/oapi/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
호출자는 Webhook를 POST
작업으로 호출해야 합니다.
Webhook를 수동으로 호출하려면 curl
을 사용하면 됩니다.
$ curl -X POST -k https://<openshift_api_host:port>/oapi/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
HTTP 동사를 POST
로 설정해야 합니다. 비보안 -k
플래그는 인증서 검증을 무시하도록 지정됩니다. 클러스터에 올바르게 서명된 인증서가 있는 경우 이 두 번째 플래그는 필요하지 않습니다.
끝점은 다음 형식을 사용하여 선택적 페이로드를 허용할 수 있습니다.
git:
uri: "<url to git repository>"
ref: "<optional git reference>"
commit: "<commit hash identifying a specific git commit>"
author:
name: "<author name>"
email: "<author e-mail>"
committer:
name: "<committer name>"
email: "<committer e-mail>"
message: "<commit message>"
env: 1
- name: "<variable name>"
value: "<variable value>"
- 1
BuildConfig
환경 변수와 유사하게 여기에 정의된 환경 변수는 빌드에서 사용할 수 있습니다. 이러한 변수가BuildConfig
환경 변수와 충돌하는 경우 해당 변수가 우선합니다. 기본적으로 Webhook를 통해 전달되는 환경 변수는 무시됩니다. 이 동작을 활성화하려면 Webhook 정의에서allowEnv
필드를true
로 설정합니다.
curl
을 사용하여 이 페이로드를 전달하려면 payload_file.yaml 이라는 파일에 이를 정의하고 다음을 실행합니다.
$ curl -H "Content-Type: application/yaml" --data-binary @payload_file.yaml -X POST -k https://<openshift_api_host:port>/oapi/v1/namespaces/<namespace>/buildconfigs/<name>/webhooks/<secret>/generic
인수는 위 예제와 동일하고 헤더와 페이로드가 추가되었습니다. -H
인수는 페이로드 형식에 따라 Content-Type
헤더를 application/yaml
또는 application/json
으로 설정합니다. --data-binary
인수는 POST
요청을 사용하여 온전한 새 줄로 바이너리 페이로드를 보내는 데 사용됩니다.
OpenShift Container Platform에서는 유효하지 않은 요청 페이로드가 제공되는 경우에도 일반 Webhook를 통해 빌드를 트리거할 수 있습니다(예: 유효하지 않은 콘텐츠 유형, 구문 분석할 수 없거나 유효하지 않은 콘텐츠 등). 이 동작은 이전 버전과의 호환성을 위해 유지됩니다. 유효하지 않은 요청 페이로드가 제공되면 OpenShift Container Platform에서 HTTP 200 OK
응답의 일부로 JSON 형식의 알림을 반환합니다.