InfoGrab Docs

Jira to GitLab VSA 통합

요약

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가지 자동화 워크플로우를 만들 것입니다:

  1. Jira에서 생성될 때 GitLab 이슈를 생성합니다
  2. 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 프로젝트 액세스 토큰을 만들어야 합니다.

  1. Jira 이슈를 복제할 GitLab 프로젝트로 이동합니다. 사이드바에서 설정 > 액세스 토큰으로 이동합니다.
  2. 새 토큰 추가를 클릭합니다.
  3. 다음 구성을 설정합니다:
    • 토큰 이름: Jira VSA Integration(또는 설명적인 이름)
    • 만료일: 보안 정책에 따라 설정
    • 역할: 소유자(사용자 정의 이슈 ID를 설정하는 데 필요)
    • 범위: api 체크(전체 API 액세스)

중요: 통합이 GitLab에서 이슈를 생성할 때 사용자 정의 이슈 ID를 강제로 설정해야 하므로 소유자 수준 액세스 토큰이 필요합니다. 이는 Jira 이슈가 닫힐 때 자동화가 동일한 ID 매핑을 사용하여 해당 GitLab 이슈를 식별하고 닫을 수 있도록 보장합니다. 소유자 역할이 없으면 GitLab API는 사용자 정의 이슈 ID 설정을 허용하지 않아 Jira 이슈 닫기와 GitLab 이슈 닫기 간의 동기화가 깨집니다.

  1. 프로젝트 액세스 토큰 만들기를 클릭하고 생성된 토큰을 안전하게 저장합니다. Jira 자동화 설정에 필요합니다.

Jira 이슈 생성 워크플로우#

Jira 이슈가 생성될 때 GitLab 이슈를 자동으로 만들기 위해 Jira 자동화를 사용할 것입니다.

  1. Jira 프로젝트로 이동합니다. 사이드바에서 프로젝트 설정 > 자동화로 이동합니다.

  2. 오른쪽 상단에서 규칙 만들기를 클릭합니다.

  3. 트리거로 이슈 생성을 검색하고 선택합니다. 저장을 클릭합니다.

  4. 선택 사항: 복제할 이슈를 필터링하기 위한 조건을 추가합니다. 예를 들어, 특정 유형이나 특정 레이블이 있는 이슈만 복제하도록 이슈 필드 조건을 추가할 수 있습니다.

  5. THEN: 작업 추가를 선택합니다. 웹 요청 보내기를 검색하고 선택합니다.

  6. 웹 요청을 구성합니다:

    • 웹 요청 URL: https://gitlab.com/api/v4/projects//issues(gitlab.com을 자체 호스팅 GitLab 인스턴스 URL로 교체하고, 를 GitLab 프로젝트의 숫자 ID(예: 42718690)로 교체)
    • HTTP 방법: POST
    • 웹 요청 본문: 사용자 정의 데이터
  7. 다음 헤더를 추가합니다:

    이름
    Authorization Bearer
    Content-Type application/json

    보안을 위해 Authorization 헤더를 "숨김"으로 설정하십시오.

  8. 사용자 정의 데이터 필드에 다음을 입력합니다:

    {
      "title": "{{issue.summary}}",
      "iid": {{issue.key.replace("VSA-", "1000")}}
    }
    

    "VSA-"를 Jira 프로젝트 접두사로 교체합니다(예: Jira 이슈가 PROJ-123으로 번호가 매겨지면 "PROJ-" 사용). 1000은 GitLab UI를 통해 직접 생성된 이슈와 충돌이 없도록 하는 기본 숫자입니다. 필요에 따라 이 값을 조정할 수 있습니다.

  9. 저장을 클릭하고, 자동화에 설명적인 이름(예: Jira to GitLab Issue Creation)을 지정하고, 켜기를 클릭합니다.

Jira 이슈 해결 워크플로우#

Jira 이슈가 해결될 때 GitLab 이슈를 닫기 위한 두 번째 자동화 워크플로우를 만듭니다:

  1. 생성 워크플로우의 1-2단계를 따라 새 규칙을 시작합니다.

  2. 트리거를 이슈 전환됨으로 설정합니다:

    • "이전 상태" 필드는 비워 둡니다
    • "다음 상태"를 해결된 상태로 설정합니다: Closed, Done, Resolved(Jira 워크플로우에 따라 조정)
  3. 조건은 건너뜁니다(또는 필요한 경우 사용자 정의 조건 추가).

  4. 웹 요청 보내기 작업을 추가합니다:

    • 웹 요청 URL: https://gitlab.com/api/v4/projects//issues/{{issue.key.replace("-", "1000").urlEncode}}(gitlab.com을 자체 호스팅 GitLab 인스턴스 URL로, 를 GitLab 프로젝트 숫자 ID로, 를 Jira 프로젝트 접두사(예: VSA 또는 PROJ)로 교체)
    • HTTP 방법: PUT
    • 웹 요청 본문: 사용자 정의 데이터
  5. 생성 워크플로우와 동일한 헤더를 사용합니다.

  6. 사용자 정의 데이터 필드에 다음을 입력합니다:

    {
      "state_event": "close"
    }
    
  7. 설명적인 이름(예: Jira to GitLab Issue Closer)으로 자동화 규칙을 저장하고 활성화합니다.

Value Stream Analytics 구성#

자동화 워크플로우가 활성화되면 GitLab이 이슈 데이터를 받기 시작합니다. 분석에 액세스하는 방법은 다음과 같습니다:

Value Streams Dashboard(자동 - Ultimate 전용)#

Value Streams Dashboard는 복제된 이슈의 메트릭으로 자동 채워지며 GitLab Ultimate에서 사용 가능합니다:

  1. GitLab 프로젝트 또는 그룹에서 분석 > 분석 대시보드로 이동합니다
  2. Value Streams Dashboard를 클릭합니다
  3. 생성된 이슈, 종료된 이슈, 리드 타임, 사이클 타임을 포함한 메트릭이 표시됩니다

Value Stream Analytics(설정 필요 - Premium 및 Ultimate)#

더 자세한 분석 및 사용자 정의 값 스트림(GitLab Premium 및 Ultimate에서 사용 가능):

  1. GitLab 프로젝트 또는 그룹에서 분석 > Value stream analytics로 이동합니다
  2. 새 값 스트림을 클릭하여 사용자 정의 값 스트림을 만듭니다
  3. 개발 프로세스에 따라 단계 및 워크플로우를 구성합니다
  4. 리드 타임 및 새 이슈 수와 같은 메트릭은 자동으로 생성되어 만드는 단계 옆에 표시됩니다
  5. 자세한 설정 지침은 GitLab Value Stream Analytics 문서를 참조하십시오

여러 프로젝트 고려 사항#

단일 자동화 규칙 세트를 사용하여 여러 Jira 프로젝트에서 이슈를 복제하려면 프로젝트 접두사 방법 대신 타임스탬프 기반 접근 방식을 사용하여 고유한 이슈 ID를 생성하는 것을 고려하십시오:

사용자 정의 데이터의 iid 값을 다음으로 교체합니다:

"iid": {{issue.created.replace("-","").replace("T","").replace(":","").replace(".","").replace("+","")}}

이는 생성 타임스탬프(형식: 2025-02-15T09:45:32.7+0000)를 숫자 값으로 변환합니다. 이 방법은 이슈 ID가 매우 길 수 있으며, 두 이슈가 정확히 같은 시간에 생성되면 충돌 가능성이 약간 있습니다.

리소스#

Jira to GitLab VSA 통합

Tier: Premium, Ultimate
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가지 자동화 워크플로우를 만들 것입니다:

  1. Jira에서 생성될 때 GitLab 이슈를 생성합니다
  2. 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 프로젝트 액세스 토큰을 만들어야 합니다.

  1. Jira 이슈를 복제할 GitLab 프로젝트로 이동합니다. 사이드바에서 설정 > 액세스 토큰으로 이동합니다.
  2. 새 토큰 추가를 클릭합니다.
  3. 다음 구성을 설정합니다:
    • 토큰 이름: Jira VSA Integration(또는 설명적인 이름)
    • 만료일: 보안 정책에 따라 설정
    • 역할: 소유자(사용자 정의 이슈 ID를 설정하는 데 필요)
    • 범위: api 체크(전체 API 액세스)

중요: 통합이 GitLab에서 이슈를 생성할 때 사용자 정의 이슈 ID를 강제로 설정해야 하므로 소유자 수준 액세스 토큰이 필요합니다. 이는 Jira 이슈가 닫힐 때 자동화가 동일한 ID 매핑을 사용하여 해당 GitLab 이슈를 식별하고 닫을 수 있도록 보장합니다. 소유자 역할이 없으면 GitLab API는 사용자 정의 이슈 ID 설정을 허용하지 않아 Jira 이슈 닫기와 GitLab 이슈 닫기 간의 동기화가 깨집니다.

  1. 프로젝트 액세스 토큰 만들기를 클릭하고 생성된 토큰을 안전하게 저장합니다. Jira 자동화 설정에 필요합니다.

Jira 이슈 생성 워크플로우#

Jira 이슈가 생성될 때 GitLab 이슈를 자동으로 만들기 위해 Jira 자동화를 사용할 것입니다.

  1. Jira 프로젝트로 이동합니다. 사이드바에서 프로젝트 설정 > 자동화로 이동합니다.

  2. 오른쪽 상단에서 규칙 만들기를 클릭합니다.

  3. 트리거로 이슈 생성을 검색하고 선택합니다. 저장을 클릭합니다.

  4. 선택 사항: 복제할 이슈를 필터링하기 위한 조건을 추가합니다. 예를 들어, 특정 유형이나 특정 레이블이 있는 이슈만 복제하도록 이슈 필드 조건을 추가할 수 있습니다.

  5. THEN: 작업 추가를 선택합니다. 웹 요청 보내기를 검색하고 선택합니다.

  6. 웹 요청을 구성합니다:

    • 웹 요청 URL: https://gitlab.com/api/v4/projects//issues(gitlab.com을 자체 호스팅 GitLab 인스턴스 URL로 교체하고, 를 GitLab 프로젝트의 숫자 ID(예: 42718690)로 교체)
    • HTTP 방법: POST
    • 웹 요청 본문: 사용자 정의 데이터
  7. 다음 헤더를 추가합니다:

    이름
    Authorization Bearer
    Content-Type application/json

    보안을 위해 Authorization 헤더를 "숨김"으로 설정하십시오.

  8. 사용자 정의 데이터 필드에 다음을 입력합니다:

    {
      "title": "{{issue.summary}}",
      "iid": {{issue.key.replace("VSA-", "1000")}}
    }
    

    "VSA-"를 Jira 프로젝트 접두사로 교체합니다(예: Jira 이슈가 PROJ-123으로 번호가 매겨지면 "PROJ-" 사용). 1000은 GitLab UI를 통해 직접 생성된 이슈와 충돌이 없도록 하는 기본 숫자입니다. 필요에 따라 이 값을 조정할 수 있습니다.

  9. 저장을 클릭하고, 자동화에 설명적인 이름(예: Jira to GitLab Issue Creation)을 지정하고, 켜기를 클릭합니다.

Jira 이슈 해결 워크플로우#

Jira 이슈가 해결될 때 GitLab 이슈를 닫기 위한 두 번째 자동화 워크플로우를 만듭니다:

  1. 생성 워크플로우의 1-2단계를 따라 새 규칙을 시작합니다.

  2. 트리거를 이슈 전환됨으로 설정합니다:

    • "이전 상태" 필드는 비워 둡니다
    • "다음 상태"를 해결된 상태로 설정합니다: Closed, Done, Resolved(Jira 워크플로우에 따라 조정)
  3. 조건은 건너뜁니다(또는 필요한 경우 사용자 정의 조건 추가).

  4. 웹 요청 보내기 작업을 추가합니다:

    • 웹 요청 URL: https://gitlab.com/api/v4/projects//issues/{{issue.key.replace("-", "1000").urlEncode}}(gitlab.com을 자체 호스팅 GitLab 인스턴스 URL로, 를 GitLab 프로젝트 숫자 ID로, 를 Jira 프로젝트 접두사(예: VSA 또는 PROJ)로 교체)
    • HTTP 방법: PUT
    • 웹 요청 본문: 사용자 정의 데이터
  5. 생성 워크플로우와 동일한 헤더를 사용합니다.

  6. 사용자 정의 데이터 필드에 다음을 입력합니다:

    {
      "state_event": "close"
    }
    
  7. 설명적인 이름(예: Jira to GitLab Issue Closer)으로 자동화 규칙을 저장하고 활성화합니다.

Value Stream Analytics 구성#

자동화 워크플로우가 활성화되면 GitLab이 이슈 데이터를 받기 시작합니다. 분석에 액세스하는 방법은 다음과 같습니다:

Value Streams Dashboard(자동 - Ultimate 전용)#

Value Streams Dashboard는 복제된 이슈의 메트릭으로 자동 채워지며 GitLab Ultimate에서 사용 가능합니다:

  1. GitLab 프로젝트 또는 그룹에서 분석 > 분석 대시보드로 이동합니다
  2. Value Streams Dashboard를 클릭합니다
  3. 생성된 이슈, 종료된 이슈, 리드 타임, 사이클 타임을 포함한 메트릭이 표시됩니다

Value Stream Analytics(설정 필요 - Premium 및 Ultimate)#

더 자세한 분석 및 사용자 정의 값 스트림(GitLab Premium 및 Ultimate에서 사용 가능):

  1. GitLab 프로젝트 또는 그룹에서 분석 > Value stream analytics로 이동합니다
  2. 새 값 스트림을 클릭하여 사용자 정의 값 스트림을 만듭니다
  3. 개발 프로세스에 따라 단계 및 워크플로우를 구성합니다
  4. 리드 타임 및 새 이슈 수와 같은 메트릭은 자동으로 생성되어 만드는 단계 옆에 표시됩니다
  5. 자세한 설정 지침은 GitLab Value Stream Analytics 문서를 참조하십시오

여러 프로젝트 고려 사항#

단일 자동화 규칙 세트를 사용하여 여러 Jira 프로젝트에서 이슈를 복제하려면 프로젝트 접두사 방법 대신 타임스탬프 기반 접근 방식을 사용하여 고유한 이슈 ID를 생성하는 것을 고려하십시오:

사용자 정의 데이터의 iid 값을 다음으로 교체합니다:

"iid": {{issue.created.replace("-","").replace("T","").replace(":","").replace(".","").replace("+","")}}

이는 생성 타임스탬프(형식: 2025-02-15T09:45:32.7+0000)를 숫자 값으로 변환합니다. 이 방법은 이슈 ID가 매우 길 수 있으며, 두 이슈가 정확히 같은 시간에 생성되면 충돌 가능성이 약간 있습니다.

리소스#