18.12. 튜토리얼: 자동화된 배포를 위해 S2I(Source-to-Image) Webhook 사용
Webhook를 사용하여 소스 코드를 변경할 때마다 빌드를 자동으로 트리거하고 배포합니다. 이 프로세스에 대한 자세한 내용은 빌드 트리거를 참조하십시오.
프로세스
터미널에서 GitHub Webhook 트리거 보안을 가져오려면 다음 명령을 실행합니다.
$ oc get bc/ostoy-microservice -o=jsonpath='{.spec.triggers..github.secret}'
출력 예
`o_3x9M1qoI2Wj_cz1WiK`
중요이 프로세스의 이후 단계에서 이 시크릿을 사용해야 합니다.
OSToy의 buildconfig에서 GitHub Webhook 트리거 URL을 가져오려면 다음 명령을 실행합니다.
$ oc describe bc/ostoy-microservice
출력 예
[...] Webhook GitHub: URL: https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy/webhooks/<secret>/github [...]
GitHub Webhook URL에서 <
secret>
텍스트를 검색한 시크릿으로 바꿉니다. URL은 다음 예제 출력과 유사합니다.출력 예
https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy-microservice/webhooks/o_3x9M1qoI2Wj_czR1WiK/github
GitHub 리포지토리에 Webhook URL을 설정합니다.
리포지토리에서 설정 > Webhook > Webhook 추가 를 클릭합니다.
-
"Payload URL" 필드에 포함된
Secret
을 사용하여 GitHub Webhook URL을 붙여넣습니다. -
"Content type"을
application/json
으로 변경합니다. Webhook 추가 버튼을 클릭합니다.
GitHub에서 Webhook가 성공적으로 구성되었음을 알리는 메시지가 표시됩니다. 이제 GitHub 리포지토리에 변경 사항을 푸시할 때마다 새 빌드가 자동으로 시작되고 빌드가 성공하면 새 배포가 시작됩니다.
이제 소스 코드를 변경합니다. 모든 변경 사항은 빌드 및 배포를 자동으로 트리거합니다. 이 예에서는 OSToy 앱의 상태를 나타내는 색상이 임의로 선택됩니다. 구성을 테스트하려면 상자를 회색 스케일링만 표시하도록 변경합니다.
- 리포지토리의 소스 코드로 이동합니다 https://github.com/<username>/ostoy/blob/master/microservice/app.js.
- 파일을 편집합니다.
-
8행을 주석으로 주석 처리(로우를
허용하면 random color = getRandom Cryostat();
). Uncomment line 9 (containing
let randomColor = getRandomGrayScaleColor();
).7 app.get('/', function(request, response) { 8 //let randomColor = getRandomColor(); // <-- comment this 9 let randomColor = getRandomGrayScaleColor(); // <-- uncomment this 10 11 response.writeHead(200, {'Content-Type': 'application/json'});
- "Graphscale 색상으로 변경됨"과 같은 업데이트 메시지를 입력합니다.
- 하단에서 커밋 을 클릭하여 기본 분기에 대한 변경 사항을 커밋합니다.
클러스터의 웹 UI에서 빌드 > 빌드 를 클릭하여 빌드 상태를 확인합니다. 이 빌드가 완료되면 배포가 시작됩니다. 터미널에서
oc 상태를 실행하여 상태를
확인할 수도 있습니다.배포가 완료되면 브라우저의 OSToy 애플리케이션으로 돌아갑니다. 왼쪽의 Networking 메뉴 항목에 액세스합니다. 이제 상자 색상은 회색 영역 색상으로만 제한됩니다.