Jira-GitLab DORA 통합
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
GitLab을 사용하면 DevOps 성과를 측정하는 데 도움이 되는 DORA 메트릭을 확인할 수 있습니다. 앞의 두 메트릭은 GitLab CI/CD와 머지 리퀘스트에서 생성되지만, 나머지 두 메트릭은 GitLab 인시던트가 생성되어야 합니다.
GitLab을 사용하면 DevOps 성과를 측정하는 데 도움이 되는 DORA 메트릭을 확인할 수 있습니다. 4가지 메트릭은 다음과 같습니다.
- Deployment frequency: 프로덕션에 대한 일평균 배포 횟수
- Lead time for changes: 커밋이 프로덕션에 성공적으로 반영되기까지 걸리는 시간(초) (코드가 커밋된 시점부터 프로덕션에서 정상적으로 실행되는 시점까지)
- Change failure rate: 주어진 기간 동안 프로덕션에서 인시던트를 유발한 배포의 비율(%)
- Time to restore service: 프로덕션 환경에서 인시던트가 열려 있던 시간의 중앙값
앞의 두 메트릭은 GitLab CI/CD와 머지 리퀘스트에서 생성되지만, 나머지 두 메트릭은 GitLab 인시던트가 생성되어야 합니다.
인시던트 트래킹에 Jira를 사용하는 팀이라면, 인시던트를 Jira에서 GitLab으로 실시간으로 복제해야 한다는 의미입니다. 이 프로젝트에서는 해당 복제를 설정하는 방법을 단계별로 설명합니다.
밸류 스트림 분석(Value Stream Analytics) 메트릭(Lead Time, Issues Created, Issues Closed)을 생성하기 위한 이슈 복제에도 유사한 통합이 존재합니다. VSA 메트릭을 위한 이슈 복제에 관심이 있다면 Jira-GitLab VSA 통합을 참고합니다.
아키텍처#
2가지 자동화 워크플로를 생성해야 합니다.
- Jira에서 인시던트가 생성되면 GitLab 인시던트를 생성합니다.
- Jira에서 인시던트가 해결되면 GitLab 인시던트를 해결합니다.
인시던트 생성#

인시던트 해결#

설정#
사전 요구 사항#
이 안내에서는 다음을 갖추고 있다고 가정합니다.
- GitLab Ultimate 라이선스
- 인시던트를 복제할 Jira 프로젝트
Jira는 Jira 라이선스에 따라 자동화 실행 빈도에 제한을 둡니다. 현재 기준 제한은 다음과 같습니다.
| Tier | Limit |
|---|---|
| Free | 월 100회 실행 |
| Standard | 월 1,700회 실행 |
| Premium | 사용자당 월 1,000회 실행 |
| Enterprise | 무제한 실행 |
인시던트 생성 1건과 인시던트 해결 1건이 각각 1회 실행으로 계산됩니다.
GitLab 알림 엔드포인트#
먼저 GitLab에서 알림을 생성/해결하도록 트리거할 수 있는 HTTP 엔드포인트를 생성해야 하며, 이 알림이 다시 인시던트를 생성/해결합니다.
- Jira 인시던트를 생성할 GitLab 프로젝트로 이동합니다. 사이드바에서 Settings > Monitor로 이동합니다. Alerts 섹션을 펼칩니다.
- Alerts에서 Alert settings 탭으로 전환합니다. 다음 체크박스를 선택하고 Save changes를 클릭합니다.
- 인시던트를 생성합니다. 트리거된 알림마다 인시던트가 생성됩니다.
- 복구 알림이 알림을 해결하면 연결된 인시던트를 자동으로 닫습니다.
- Alerts에서 Current integrations 탭으로 전환합니다. Add new integration을 클릭합니다. Integration type을
HTTP Endpoint로 설정하고 이름(예:Jira incident sync)을 지정한 다음, Enable integration을 Active로 설정합니다. Jira 자동화 워크플로를 설정한 후 알림 페이로드 매핑을 커스터마이징하기 위해 다시 돌아올 것입니다. - Save integration을 클릭합니다. "Integration successfully saved" 라는 메시지가 표시됩니다. View URL and authorization key를 클릭합니다.
- Jira 자동화 워크플로와 Lambda 함수를 설정할 때 엔드포인트 URL과 인증 키가 필요하므로 나중에 사용할 수 있도록 저장해 둡니다.
Jira 인시던트 생성 워크플로#
Jira 인시던트가 생성될 때 GitLab 알림 엔드포인트를 자동으로 트리거하기 위해 Jira 자동화를 사용합니다.
-
인시던트를 관리하는 Jira 프로젝트로 이동합니다. 사이드바에서 Project settings > Automation으로 이동합니다(찾으려면 아래로 조금 스크롤해야 할 수 있습니다).
-
여기서 Jira 자동화 워크플로를 관리할 수 있습니다. 오른쪽 상단에서 Create rule을 클릭합니다.
-
트리거로 Issue created를 검색하여 선택합니다. Save를 클릭합니다.
-
다음으로 IF: Add a condition을 선택합니다. 여기서 생성된 이슈가 인시던트와 관련이 있는지 판단하기 위해 확인할 조건을 지정할 수 있습니다. 이 가이드에서는 Issue fields condition을 선택합니다. Field에서 Summary를 선택하고, Condition은 contains로 설정하며, 값은
incident로 지정합니다. Save를 클릭합니다. -
트리거와 조건을 설정했으면 THEN: Add an action을 선택합니다. Send web request를 검색하여 선택합니다.
-
Web request URL을 이전 섹션에서 확인한 GitLab Webhook URL로 설정합니다.
-
엔드포인트 인증 옵션에 관한 GitLab 문서를 확인합니다. 이 가이드에서는 Bearer 인증 헤더 방식을 사용합니다. Jira 자동화 구성에서 다음 헤더를 추가합니다.
Name Value Authorization Bearer <이전 섹션의 GitLab 엔드포인트 auth key> Content-Type application/jsonAuthorization헤더는 "Hidden" 으로 설정하는 것이 좋습니다.
-
HTTP method가 POST로 설정되어 있는지 확인하고, Web request body를 **Issue data (Jira format)**로 설정합니다.
-
마지막으로 Save를 클릭하고, 자동화에 이름(예:
Jira incident creation)을 지정한 다음 Turn it on을 클릭합니다. 오른쪽 상단에서 Return to list를 클릭합니다. -
마지막으로 해야 할 작업은 Jira 페이로드 값을 GitLab 알림 매개변수에 매핑하는 것입니다. Time to restore service 메트릭을 위해 인시던트 해결도 설정할 계획이라면 지금은 이 단계를 건너뜁니다. 그렇지 않다면 Jira 페이로드 값을 GitLab 알림 매개변수에 매핑으로 이동해 해당 단계를 따릅니다.
페이로드 값을 매핑하고 나면, Jira에서 생성한 인시던트가 GitLab에서도 생성됩니다. 이를 통해 Change failure rate DORA 메트릭을 확인할 수 있습니다.
Jira 인시던트 해결 워크플로#
위에서 설명한 대로 또 다른 Jira 자동화 워크플로를 생성하되, 다음과 같이 변경합니다.
- 트리거를 Issue transitioned로 설정합니다. "From status" 필드는 비워 둘 수 있습니다. "To status" 필드는 워크플로에 따라 해결된 인시던트를 나타내는 모든 상태(예:
Closed,Done,Resolved,Completed)로 설정할 수 있습니다. - 자동화에 적절한 이름(예:
Jira incident close)을 지정합니다.
Jira 페이로드 값을 GitLab 알림 매개변수에 매핑#
-
Jira 자동화 워크플로를 생성했다면, 방금 생성한 워크플로를 클릭하고 Then: Send web request를 선택합니다.
-
Validate your web request configuration 섹션을 펼치고, 테스트에 사용할 해결된(resolved) 이슈 키를 입력합니다(사용할 수 있는 기존 이슈 키가 있어야 합니다). Validate를 클릭합니다.
-
Request POST 섹션을 펼치고, Payload 섹션을 펼칩니다. 전체 페이로드를 복사합니다.
-
GitLab 프로젝트로 돌아가 Settings > Monitor > Alerts > Current Integrations로 이동합니다. 이전에 생성한 통합 옆의 'settings' 아이콘을 클릭하고 Configure details 탭으로 전환합니다.
-
Customize alert payload mapping에서 3단계에서 Jira로부터 복사한 페이로드를 붙여넣습니다. 그런 다음 Parse payload fields를 클릭합니다.
-
아래와 같이 필드를 매핑합니다.
GitLab alert key Payload alert key Title issue.fields.summary Description issue.fields.status.description End time issue.fields.resolutiondate1 Monitoring tool issue.fields.reporter.accountType Severity issue.fields.priority.name Fingerprint issue.key Environment issue.fields.project.name
- 마지막으로 Save integration을 클릭합니다.
이 시점에서 Jira에서 해결한 인시던트가 GitLab에서도 해결됩니다. 이를 통해 Time to restore service DORA 메트릭을 확인할 수 있습니다.
리소스#
Footnotes
-
이는 인시던트 해결 자동화를 설정한 경우에만 필요합니다. 이 필드가 옵션으로 표시되지 않는다면, 위 2단계에서 테스트에 사용할 해결된(resolved) 이슈 키를 입력했는지 확인합니다. ↩