예전부터 Jenkins 관련해서 아래 2가지 주제에 대해 실습을 하고 싶었습니다.
- jenkins - slack 연동을 통한 빌드 승인 거부 프로세스 구현
- Jenkins on Kubernetes
위의 2가지 주제 중 1번 jenkins - slack 연동을 통한 빌드 승인 거부 프로세스 구현 주제에 대한 실습을 먼저 진행하고자 합니다.
해당실습은
velog - aylee5.log 님의 포스팅을 참고하여, 정리했습니다.
- [Jenkins] 원격으로 빌드 유발 (Trigger builds remotely) with AWS Lambda (Python)
- [Jenkins] Slack Slash Command로 원격 빌드 유발 with AWS API Gateway, Lambda(Python)
- [Jenkins] pipeline interactive input (choice parameter)
- [Jenkins] pipeline interactive input Slack 연동
현재 REST API를 통해 Jenkins와 통신을 시도하는 과정에서 Authenticate, 로그인이 진행되지 않는 이슈를 해결하는 중입니다.
해당 이슈를 해결하면 다시 정리하도록 하겠습니다.
https://www.jenkins.io/doc/book/system-administration/authenticating-scripted-clients/
https://blog.leocat.kr/notes/2019/06/21/jenkins-remote-triggering-without-authentication
- Build Authorization Token Root Plugin 설치
- curl -X POST "http://admin:119b217da12d7bcf315ed806d885b28e19@34.230.70.63:8888/job/lambda-test/build"
- 무한 대기
- chrome에서 해당 URL GET으로 접속
http://34.230.70.63:8888/buildByToken/build?job=lambda-test&token=119b217da12d7bcf315ed806d885b28e19
위의 형식으로 크롬으로 접속시에는 빌드가 되지만,
curl -X GET http://34.230.70.63:8888/buildByToken/build?job=lambda-test&token=119b217da12d7bcf315ed806d885b28e19
또는
URL = f'http://{JENKINS_URL}/buildByToken/build?job={JOB_NAME}&token={JENKINS_API_TOKEN}'
response = http.request('POST', URL)
와 같은 파이썬 코드로 실행시 무한 대기하는 현상
- SSH나 다른 방식으로 Jenkins서버에 인증을 하는 방식 찾아보기
---------------------------
1. Slack API 설정
App 생성
로그인 > Your apps 클릭
Create New App
From scratch
App Name > 입력
Pick a workspace to develop your app in: > 슬랙 워크스페이스 설정
Incoming Webhooks 설정
lambda 생성
API Gateway - default 스테이지 삭제
API Gateway - Slack 스테이지 생성
2. API Gateway 생성