Jira to GitLab VSA 통합
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab Value Stream Analytics(VSA)는 개발 워크플로우에 대한 강력한 인사이트를 제공하며 다음과 같은 주요 메트릭을 추적합니다: GitLab을 개발에 활용하면서 Jira를 이슈 추적에 사용하는 팀의 경우, 이 통합을 통해 실시간으로 Jira 이슈를 GitLab에 자동으로 복제할 수 있습니다.
GitLab Value Stream Analytics(VSA)는 개발 워크플로우에 대한 강력한 인사이트를 제공하며 다음과 같은 주요 메트릭을 추적합니다:
- 리드 타임: 이슈 생성부터 완료까지의 시간
- 생성된 이슈: 주어진 기간에 생성된 새 이슈 수
- 종료된 이슈: 주어진 기간에 해결된 이슈 수
GitLab을 개발에 활용하면서 Jira를 이슈 추적에 사용하는 팀의 경우, 이 통합을 통해 실시간으로 Jira 이슈를 GitLab에 자동으로 복제할 수 있습니다. 이를 통해 팀이 기존 Jira 워크플로우를 변경하지 않고도 정확한 VSA 메트릭을 보장합니다.
또한 이 통합은 GitLab Value Streams Dashboard(Ultimate 전용)를 채우며, 이는 주요 DevSecOps 메트릭에 대한 개요를 제공하고 GitLab 프로젝트 또는 그룹의 분석 > 분석 대시보드에서 찾을 수 있습니다.
참고: 특정 DORA 메트릭(변경 실패율 및 서비스 복원 시간)을 생성하기 위한 인시던트 복제를 위한 유사한 통합이 존재합니다. 인시던트 복제에 관심이 있다면 Jira 인시던트 복제기를 참조하십시오.
아키텍처#
Jira 자동화를 사용하여 2가지 자동화 워크플로우를 만들 것입니다:
- Jira에서 생성될 때 GitLab 이슈를 생성합니다
- Jira에서 해결될 때 GitLab 이슈를 닫습니다
이슈 생성#
Jira에서 새 이슈가 생성되면 자동화 워크플로우가 GitLab Issues API에 POST 요청을 보내 지정된 GitLab 프로젝트에 해당 이슈를 생성합니다.
이슈 해결#
Jira 이슈가 해결된 상태(Closed, Done, Resolved)로 전환되면 자동화 워크플로우가 해당 GitLab 이슈를 닫기 위한 PUT 요청을 보냅니다.
설정#
사전 요구사항#
이 안내는 다음을 갖추고 있다고 가정합니다:
- VSA 분석을 생성할 GitLab 프로젝트
- 이슈를 복제할 Jira 프로젝트
- GitLab Ultimate 또는 Premium 라이선스(Value Stream Analytics 기능용)
Jira는 Jira 라이선스에 따라 자동화 실행 빈도에 제한을 둡니다:
| 티어 | 제한 |
|---|---|
| Free | 월 100회 실행 |
| Standard | 월 1700회 실행 |
| Premium | 사용자당 월 1000회 실행 |
| Enterprise | 무제한 실행 |
각 이슈 생성은 1회 실행으로 계산되고, 각 이슈 해결도 1회 실행으로 계산됩니다.
GitLab 프로젝트 액세스 토큰#
먼저, API를 통해 이슈를 생성하고 업데이트하는 데 필요한 권한이 있는 GitLab 프로젝트 액세스 토큰을 만들어야 합니다.
- Jira 이슈를 복제할 GitLab 프로젝트로 이동합니다. 사이드바에서 설정 > 액세스 토큰으로 이동합니다.
- 새 토큰 추가를 클릭합니다.
- 다음 구성을 설정합니다:
- 토큰 이름:
Jira VSA Integration(또는 설명적인 이름) - 만료일: 보안 정책에 따라 설정
- 역할:
소유자(사용자 정의 이슈 ID를 설정하는 데 필요) - 범위:
api체크(전체 API 액세스)
- 토큰 이름:
중요: 통합이 GitLab에서 이슈를 생성할 때 사용자 정의 이슈 ID를 강제로 설정해야 하므로 소유자 수준 액세스 토큰이 필요합니다. 이는 Jira 이슈가 닫힐 때 자동화가 동일한 ID 매핑을 사용하여 해당 GitLab 이슈를 식별하고 닫을 수 있도록 보장합니다. 소유자 역할이 없으면 GitLab API는 사용자 정의 이슈 ID 설정을 허용하지 않아 Jira 이슈 닫기와 GitLab 이슈 닫기 간의 동기화가 깨집니다.
- 프로젝트 액세스 토큰 만들기를 클릭하고 생성된 토큰을 안전하게 저장합니다. Jira 자동화 설정에 필요합니다.
Jira 이슈 생성 워크플로우#
Jira 이슈가 생성될 때 GitLab 이슈를 자동으로 만들기 위해 Jira 자동화를 사용할 것입니다.
-
Jira 프로젝트로 이동합니다. 사이드바에서 프로젝트 설정 > 자동화로 이동합니다.
-
오른쪽 상단에서 규칙 만들기를 클릭합니다.
-
트리거로 이슈 생성을 검색하고 선택합니다. 저장을 클릭합니다.
-
선택 사항: 복제할 이슈를 필터링하기 위한 조건을 추가합니다. 예를 들어, 특정 유형이나 특정 레이블이 있는 이슈만 복제하도록 이슈 필드 조건을 추가할 수 있습니다.
-
THEN: 작업 추가를 선택합니다. 웹 요청 보내기를 검색하고 선택합니다.
-
웹 요청을 구성합니다:
- 웹 요청 URL:
https://gitlab.com/api/v4/projects//issues(gitlab.com을 자체 호스팅 GitLab 인스턴스 URL로 교체하고,를 GitLab 프로젝트의 숫자 ID(예:42718690)로 교체) - HTTP 방법: POST
- 웹 요청 본문: 사용자 정의 데이터
- 웹 요청 URL:
-
다음 헤더를 추가합니다:
이름 값 Authorization Bearer Content-Type application/json보안을 위해 Authorization 헤더를 "숨김"으로 설정하십시오.
-
사용자 정의 데이터 필드에 다음을 입력합니다:
{ "title": "{{issue.summary}}", "iid": {{issue.key.replace("VSA-", "1000")}} }"VSA-"를 Jira 프로젝트 접두사로 교체합니다(예: Jira 이슈가PROJ-123으로 번호가 매겨지면"PROJ-"사용).1000은 GitLab UI를 통해 직접 생성된 이슈와 충돌이 없도록 하는 기본 숫자입니다. 필요에 따라 이 값을 조정할 수 있습니다. -
저장을 클릭하고, 자동화에 설명적인 이름(예:
Jira to GitLab Issue Creation)을 지정하고, 켜기를 클릭합니다.
Jira 이슈 해결 워크플로우#
Jira 이슈가 해결될 때 GitLab 이슈를 닫기 위한 두 번째 자동화 워크플로우를 만듭니다:
-
생성 워크플로우의 1-2단계를 따라 새 규칙을 시작합니다.
-
트리거를 이슈 전환됨으로 설정합니다:
- "이전 상태" 필드는 비워 둡니다
- "다음 상태"를 해결된 상태로 설정합니다:
Closed,Done,Resolved(Jira 워크플로우에 따라 조정)
-
조건은 건너뜁니다(또는 필요한 경우 사용자 정의 조건 추가).
-
웹 요청 보내기 작업을 추가합니다:
- 웹 요청 URL:
https://gitlab.com/api/v4/projects//issues/{{issue.key.replace("-", "1000").urlEncode}}(gitlab.com을 자체 호스팅 GitLab 인스턴스 URL로,를 GitLab 프로젝트 숫자 ID로,를 Jira 프로젝트 접두사(예:VSA또는PROJ)로 교체) - HTTP 방법: PUT
- 웹 요청 본문: 사용자 정의 데이터
- 웹 요청 URL:
-
생성 워크플로우와 동일한 헤더를 사용합니다.
-
사용자 정의 데이터 필드에 다음을 입력합니다:
{ "state_event": "close" } -
설명적인 이름(예:
Jira to GitLab Issue Closer)으로 자동화 규칙을 저장하고 활성화합니다.
Value Stream Analytics 구성#
자동화 워크플로우가 활성화되면 GitLab이 이슈 데이터를 받기 시작합니다. 분석에 액세스하는 방법은 다음과 같습니다:
Value Streams Dashboard(자동 - Ultimate 전용)#
Value Streams Dashboard는 복제된 이슈의 메트릭으로 자동 채워지며 GitLab Ultimate에서 사용 가능합니다:
- GitLab 프로젝트 또는 그룹에서 분석 > 분석 대시보드로 이동합니다
- Value Streams Dashboard를 클릭합니다
- 생성된 이슈, 종료된 이슈, 리드 타임, 사이클 타임을 포함한 메트릭이 표시됩니다
Value Stream Analytics(설정 필요 - Premium 및 Ultimate)#
더 자세한 분석 및 사용자 정의 값 스트림(GitLab Premium 및 Ultimate에서 사용 가능):
- GitLab 프로젝트 또는 그룹에서 분석 > Value stream analytics로 이동합니다
- 새 값 스트림을 클릭하여 사용자 정의 값 스트림을 만듭니다
- 개발 프로세스에 따라 단계 및 워크플로우를 구성합니다
- 리드 타임 및 새 이슈 수와 같은 메트릭은 자동으로 생성되어 만드는 단계 옆에 표시됩니다
- 자세한 설정 지침은 GitLab Value Stream Analytics 문서를 참조하십시오
여러 프로젝트 고려 사항#
단일 자동화 규칙 세트를 사용하여 여러 Jira 프로젝트에서 이슈를 복제하려면 프로젝트 접두사 방법 대신 타임스탬프 기반 접근 방식을 사용하여 고유한 이슈 ID를 생성하는 것을 고려하십시오:
사용자 정의 데이터의 iid 값을 다음으로 교체합니다:
"iid": {{issue.created.replace("-","").replace("T","").replace(":","").replace(".","").replace("+","")}}
이는 생성 타임스탬프(형식: 2025-02-15T09:45:32.7+0000)를 숫자 값으로 변환합니다. 이 방법은 이슈 ID가 매우 길 수 있으며, 두 이슈가 정확히 같은 시간에 생성되면 충돌 가능성이 약간 있습니다.
