본문 바로가기

DevOps/JIRA & API Gateway

JIRA & API GW를 통해 Jenkins 배포 승인체계 구성하기 - 1. Intro

이전에는 Slack과 API Gateway와 Lambda를 통해 승인 체계를 구성하였었는데,

가장 많이 사용하는 협업 툴인 JIRA에서도 이와 같은 체계를 구성하려고 합니다.

 

AWS API Gateway와 Lambda를 활용하면, 서버단에서 구성하여 웹훅등을 해결할 부분을

서버 비용 및 관리 포인트를 줄여서 사용할 수 있기 때문에 유용하게 사용하실 수 있습니다

 

이번에는 아래와 같은 아키텍쳐를 구성해 봤습니다.

 

 

보통은 지라를 통해 사용하시면, 개발 요청부터 이슈를 만들어서 사용하실텐데,

저는 그렇게까지 체계화 된 구조가 아닌 딱 배포부분만 지라에서 이슈를 자동으로 발급하고 승인하려고 합니다.

 

전체 플로우를 설명드리면 다음과 같습니다.

먼저, 젠킨스 Job을 build하면, Git Clone -> Build -> 코드 정적 검사 / ECR 도커 스캐닝

해당 결과에 대한 대시보드 URL을 API Gateway를 통해 JIRA ISSUE를 만드는 람다를 콜하게 합니다.

 

관리자는 지라에 매핑 된 담당자로 메일로 만들어진 이슈 해당 내역을 받고

지라에 들어와서 해당 이슈에 올라온 URL들을 보고 코드 정적검사와 도커 스캐닝에 대한 결과를 검토합니다.

(조금 더 개발하신다면, Junit등 실제 코드 리뷰에 대한 검사 결과도 같이 보내실 수 있습니다.)

 

이후 지라에서 버튼으로 구성한 승인 버튼을 클릭하여 다음 단계로 넘기면

JIRA Web Hook을 통해 API Gateway -> Lambda를 콜하여,

잠시 중지 및 대기하고 있던 Jenkins Pipeline이 다음 단계로 진행하게 되면서 배포가 되는 구조를 생각해 봤습니다.

 

그림에서는 지라와 연동되는 부분만 표현하였습니다.

 

최종적으로 배포가 정상적으로 완료되었을 경우,

다시 JIRA 이슈를 완료 상태로 만들도록 API Gateway를 콜하게 됩니다.

JIRA Web Hook의 경우 헤더값을 바꿀 수 없어 API Key로 인증을 하지 못하지만,

나머지 부분에 대해서는 모두 API Key를 통해 인증까지 거치게 하도록 구성해봤습니다.

 

딱 승인과 이슈 완료에 대한 스크립트만 공개 할 예정이니,

단계에 따라서 적절하게 잘 사용하시면 될 것 같습니다.