Jira 클라우드 앱 관리를 위한 GitLab

Tier: Free, Premium, Ultimate Offering: Self-managed
note
이 페이지에는 Jira 클라우드 앱을 위한 관리자 문서가 포함되어 있습니다. 사용자 문서는 GitLab for Jira Cloud 앱을 참조하십시오.

GitLab for Jira Cloud 앱을 사용하면 GitLab과 Jira Cloud를 연결하여 실시간으로 개발 정보를 동기화할 수 있습니다. 이 정보는 Jira 개발 패널에서 확인할 수 있습니다.

자체 관리 인스턴스에 GitLab for Jira Cloud 앱을 설정하려면 다음 중 하나를 수행하십시오:

개요는 다음을 참조하세요. Atlassian Marketplace에서 자체 관리 인스턴스로 GitLab for Jira Cloud 앱 구성.

Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치하면 프로젝트 도구 체인을 사용하여 GitLab 저장소를 Jira 프로젝트에 연결할 수 있습니다. 프로젝트 도구 체인은 GitLab과 Jira Cloud 간의 개발 정보 동기화에 영향을 미치지 않습니다.

Jira Data Center 또는 Jira Server의 경우, Atlassian이 개발 및 유지 관리하는 Jira DVCS 커넥터를 사용하십시오.

OAuth 인증 설정

Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치하든 수동으로 설치하든 OAuth 애플리케이션을 생성해야 합니다.

자체 관리 인스턴스에서 OAuth 애플리케이션을 생성하려면 다음을 수행하십시오:

  1. 좌측 사이드바에서 맨 아래쪽에 있는 Admin을 선택합니다.
  2. Applications을 선택합니다.
  3. New application을 선택합니다.
  4. Redirect URI에서:
    • Atlassian Marketplace 목록에서 앱을 설치하는 경우, https://gitlab.com/-/jira_connect/oauth_callbacks를 입력합니다.
    • 수동으로 앱을 설치하는 경우, <instance_url>/-/jira_connect/oauth_callbacks를 입력하고 <instance_url>을 자체 인스턴스의 URL로 대체합니다.
  5. TrustedConfidential 확인란을 선택 해제하십시오.

    note
    이러한 확인란을 선택 해제하여 오류를 피해야 합니다.
  6. Scopes에서 api 확인란만 선택합니다.
  7. Save application을 선택합니다.
  8. Application ID 값을 복사합니다.
  9. 좌측 사이드바에서 Settings > General을 선택합니다.
  10. GitLab for Jira 앱을 확장합니다.
  11. Application ID 값을 Jira Connect Application ID에 붙여넣습니다.
  12. Save changes를 선택합니다.

Jira 사용자 요구사항

  • GitLab 16.6에서 도입된 org-admins 그룹 지원입니다.

Atlassian 조직에서 사용 중인 Jira 사용자가 다음 중 하나의 멤버임을 확인해야합니다:

  • 조직 관리자(org-admins) 그룹. 새로운 Atlassian 조직은 중앙화된 사용자 관리를 사용하며 org-admins 그룹이 포함되어 있습니다. 기존 Atlassian 조직은 중앙화된 사용자 관리로 이전 중입니다. 가능하다면 org-admins 그룹을 사용하여 어떤 Jira 사용자가 GitLab for Jira Cloud 앱을 관리할 수 있는지 표시해야 합니다. 또는 site-admins 그룹을 사용할 수 있습니다.
  • 사이트 관리자(site-admins) 그룹. site-admins 그룹은 원래 사용자 관리에서 사용되었습니다.

필요한 경우:

  1. 원하는 그룹을 만듭니다.
  2. 그룹을 편집하여 Jira 사용자를 멤버로 추가합니다.
  3. Jira에서 전역 권한을 사용자 정의한 경우 사용자 및 그룹 찾아보기 권한을 Jira 사용자에게 부여해야 할 수도 있습니다.

Atlassian Marketplace에서 GitLab for Jira Cloud 앱 설치

  • GitLab 15.7에서 도입되었습니다.

공식 Atlassian Marketplace에서 제공하는 GitLab for Jira Cloud 앱을 자체 관리 인스턴스에서 사용할 수 있습니다.

이 방법을 사용하면:

  • GitLab.com은 Jira Cloud에서 보내는 설치 및 제거 라이프사이클 이벤트를 처리하고 이를 GitLab 인스턴스로 전달합니다. 자체 관리 인스턴스의 모든 데이터가 여전히 직접 Jira Cloud로 전송됩니다.
  • GitLab.com은 브랜치 생성 링크를 처리하여 이를 인스턴스로 리디렉션합니다.
  • 17.2 버전 이전의 GitLab에서는 자체 관리 인스턴스에서 Jira Cloud에서 브랜치를 생성하는 것이 불가능합니다. 자세한 내용은 issue 391432를 참조하십시오.

대안으로, 다음 중 하나의 경우 Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 수동으로 설치할 수 있습니다:

사전 조건

  • 인스턴스는 공개적으로 사용 가능해야 합니다.
  • 인스턴스는 GitLab 버전 15.7 이상이어야 합니다.
  • OAuth 인증을 설정해야 합니다.
  • GitLab 인스턴스는 HTTPS를 사용해야 하며, GitLab 인증서는 공개적으로 신뢰할 수 있거나 완전한 체인 인증서를 포함해야 합니다.
  • 네트워크 구성은 다음을 허용해야 합니다:
    • 자체 관리형 인스턴스에서 Jira Cloud로의 아웃바운드 연결 (Atlassian IP 주소)
    • 자체 관리형 인스턴스와 GitLab.com 간의 인바운드 및 아웃바운드 연결 (GitLab.com IP 주소)
    • 방화벽 뒤의 자체 관리형 인스턴스의 경우:
      1. 자체 관리형 인스턴스 앞에 인터넷을 향한 리버스 프록시를 설정하세요.
      2. 리버스 프록시를 구성하여 GitLab.com으로부터의 인바운드 연결을 허용하세요 (GitLab.com IP 주소)
      3. 위에서 설명한 아웃바운드 연결도 여전히 자체 관리형 인스턴스에서 가능하도록 보장하세요.
  • 앱을 설치하고 구성하는 Jira 사용자는 특정한 요구 사항을 충족해야 합니다.

인스턴스 설정

사전 조건

GitLab 15.7 이상에서 GitLab for Jira Cloud 앱을 자체 관리형 인스턴스에 설정하려면 다음을 수행하세요:

  1. 왼쪽 사이드바에서 가장 아래에서 Admin을 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. GitLab for Jira App을 확장합니다.
  4. Jira Connect Proxy URL에서 https://gitlab.com을 입력하세요.
  5. 변경 사항 저장을 선택합니다.

인스턴스 연결

사전 조건

자체 관리형 인스턴스를 GitLab for Jira Cloud 앱에 연결하려면:

  1. GitLab for Jira Cloud 앱을 설치하세요.
  2. GitLab for Jira Cloud 앱을 구성하세요.
  3. 선택 사항: Jira Cloud가 현재 연결되었는지 확인.

Jira Cloud가 연결되었는지 확인

Rails 콘솔을 사용하여 Jira Cloud가 연결되었는지 확인할 수 있습니다.

  • 특정 그룹:

    JiraConnectSubscription.where(namespace: Namespace.by_path('group/subgroup'))
    
  • 특정 프로젝트:

    Project.find_by_full_path('path/to/project').jira_subscription_exists?
    
  • 모든 그룹:

    installation = JiraConnectInstallation.find_by_base_url("https://customer_name.atlassian.net")
    installation.subscriptions
    

GitLab for Jira Cloud 앱 수동 설치

공식 Atlassian Marketplace 목록 사용을 원하지 않는 경우 GitLab for Jira Cloud 앱을 수동으로 설치해야 합니다.

각 Jira Cloud 앱은 단일 위치에서 설치해야 합니다. Jira는 제공하는 위치에서 manifest 파일을 가져옵니다. manifest 파일은 시스템에 앱을 설명합니다.

자체 관리형 인스턴스를 Jira Cloud에서 지원하려면 다음 중 하나를 수행하세요:

사전 조건

  • 인스턴스는 공개적으로 사용 가능해야 합니다.
  • OAuth 인증을 설정해야 합니다.
  • 네트워크 구성은 다음을 허용해야 합니다:
    • 자체 관리형 인스턴스와 Jira Cloud 간의 인바운드 및 아웃바운드 연결 (Atlassian IP 주소).
    • 방화벽 뒤의 자체 관리형 인스턴스의 경우:
      1. 자체 관리형 인스턴스 앞에 리버스 프록시를 설정하세요.
      2. 리버스 프록시를 구성하여 Jira Cloud로부터의 인바운드 연결을 허용하세요 (Atlassian IP 주소).
      3. 위에서 설명한 아웃바운드 연결도 여전히 자체 관리형 인스턴스에서 가능하도록 보장하세요.
  • 앱을 설치하고 구성하는 Jira 사용자는 특정한 요구 사항을 충족해야 합니다.

인스턴스 설정

사전 조건

GitLab 15.7 이상에서 GitLab for Jira Cloud 앱을 자체 관리형 인스턴스에 설정하려면 다음을 수행하세요:

  1. 왼쪽 사이드바에서 가장 아래에서 Admin을 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. GitLab for Jira App을 확장합니다.
  4. Jira Connect Proxy URL이 비어 있는지 확인하세요.
  5. 변경 사항 저장을 선택합니다.

개발 모드에서 앱 설치

사전 조건

Jira 인스턴스를 구성하여 Atlassian Marketplace 외부에서 앱을 설치할 수 있도록 설정해보세요:

  1. 관리자로서 Jira 인스턴스에 로그인합니다.
  2. 사이트에서 개발 모드를 활성화하세요.
  3. 관리자로서 GitLab에 로그인합니다.
  4. Jira 인스턴스에서 GitLab 설치하기:
    1. Jira 인스턴스에서 Apps > 앱 관리로 이동하여 앱 업로드를 선택합니다.
    2. 앱 설명자 URL에서 인스턴스 구성에 기반한 매니페스트 파일의 전체 URL을 제공하세요.

      기본적으로 매니페스트 파일은 /-/jira_connect/app_descriptor.json에 위치합니다. 예를 들어, GitLab 자체 관리형 인스턴스 도메인이 app.pet-store.cloud라면 매니페스트 파일은 https://app.pet-store.cloud/-/jira_connect/app_descriptor.json에 위치합니다.

    3. 업로드를 선택합니다.
    4. 구성하는 시작을 선택하세요.
  5. 사이트의 개발 모드를 비활성화하세요.

Apps > 앱 관리에서 GitLab for Jira Cloud이 이제 표시됩니다. 또한 GitLab for Jira Cloud 앱을 구성하도록 선택할 수 있습니다.

GitLab 업그레이드로 인해 앱 설명자에 변경 사항이 있으면, 앱을 다시 설치해야 합니다.

Atlassian Marketplace 리스팅 생성

전제 조건

개발 모드를 사용하지 않으려면 Atlassian Marketplace 리스팅을 직접 생성할 수 있습니다. 이렇게 하면 Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치할 수 있습니다.

Atlassian Marketplace 리스팅을 생성하려면 다음을 수행하세요.

  1. Atlassian Marketplace 벤더로 등록하세요.
  2. 응용 프로그램 설명자 URL을 사용하여 응용 프로그램을 나열하세요.
    • manifest 파일의 위치: https://your.domain/your-path/-/jira_connect/app_descriptor.json
    • 응용 프로그램을 private로 나열해야 합니다. 왜냐하면 공개 응용 프로그램은 모든 사용자에의해 볼 수 있고 설치될 수 있기 때문입니다.
  3. 응용 프로그램에 대한 테스트 라이선스 토큰을 생성하세요.

GitLab.com Marketplace 리스팅과 마찬가지로, 이 방법은 자동 업데이트를 사용합니다.

Atlassian Marketplace 리스팅을 생성하는 자세한 정보는 Atlassian 문서를 참조하세요.

GitLab 인스턴스를 프록시로 설정

GitLab 인스턴스는 GitLab for Jira Cloud 앱을 통해 다른 GitLab 인스턴스에 대한 프록시로 작동할 수 있습니다. 여러 개의 GitLab 인스턴스를 관리하지만 앱을 한 번만 수동으로 설치하고 싶은 경우에 프록시를 사용하고 싶을 수 있습니다.

GitLab 인스턴스를 프록시로 설정하려면 다음을 수행하세요.

  1. 좌측 사이드바에서 가장 아래쪽에서 관리를 선택하세요.
  2. 설정 > 일반을 선택하세요.
  3. GitLab for Jira App을 확장하세요.
  4. 공개 키 저장 활성화를 선택하세요.
  5. 변경 사항 저장을 선택하세요.
  6. GitLab for Jira Cloud 앱을 수동으로 설치하세요.

프록시를 사용하는 다른 GitLab 인스턴스는 다음과 같이 프록시 인스턴스를 가리키도록 다음 설정을 구성해야 합니다.

보안 고려 사항

다음 보안 고려 사항은 앱을 관리하는 데 특화되어 있습니다. 앱을 사용하는 데 관련된 고려 사항은 보안 고려 사항을 참조하세요.

GitLab.com 앱 수명주기 이벤트 처리

Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치하면 GitLab.com은 Jira로부터 수명주기 이벤트를 받습니다. 이러한 이벤트는 앱이 Jira 프로젝트에 설치되거나 제거될 때에만 발생합니다.

설치 이벤트에서, GitLab.com은 Jira로부터 시크릿 토큰을 받습니다. GitLab.com은 이 토큰을 AES256-GCM으로 암호화하여 이후 Jira로부터 수신되는 수명주기 이벤트를 검증합니다.

그런 다음 GitLab.com은 이 토큰을 귀하의 독립형 인스턴스에 전달하여 귀하의 인스턴스가 동일한 토큰을 사용하여 Jira에 대한 데이터 요청을 인증할 수 있도록 합니다. 또한 귀하의 독립형 인스턴스에게 GitLab for Jira Cloud 앱이 설치되었거나 제거된 사실을 알리게 합니다.

귀하의 독립형 인스턴스에서 Jira 개발 패널로 데이터를 전송할 때, 해당 데이터는 귀하의 독립형 인스턴스에서 직접 Jira로 전송되며 GitLab.com으로 전송되지 않습니다. GitLab.com은 귀하의 Jira 프로젝트의 데이터에 액세스하기 위해 토큰을 사용하지 않습니다. 귀하의 독립형 인스턴스는 Jira에 대한 데이터 접근을 위해 토큰을 사용합니다.

GitLab.com이 수신하는 수명주기 이벤트 및 페이로드에 대한 자세한 정보는 Atlassian 문서를 참조하세요.

sequenceDiagram accTitle: Atlassian Marketplace에서 설치된 GitLab for Jira Cloud 앱의 데이터 흐름 accDescr: GitLab.com이 Atlassian Marketplace에서 GitLab for Jira Cloud 앱이 설치된 경우의 수명주기 이벤트 처리 방법 participant Jira participant 귀하의 인스턴스 participant GitLab.com Jira->>+GitLab.com: 앱 설치/제거 이벤트 GitLab.com->>-귀하의 인스턴스: 앱 설치/제거 이벤트 귀하의 인스턴스->>Jira: 개발 데이터

브랜치 생성에 대한 GitLab.com 처리

Atlassian Marketplace에서 GitLab for Jira Cloud 앱을 설치한 경우, 개발 패널에서 브랜치를 만들기 위한 링크는 초기에 사용자를 GitLab.com으로 보냅니다.

Jira는 GitLab.com에게 JWT 토큰을 전송합니다. GitLab.com은 토큰을 확인한 후 요청을 귀하의 GitLab 인스턴스로 리디렉션합니다.

OAuth를 통한 GitLab 액세스

GitLab은 Jira와 액세스 토큰을 공유하지 않습니다. 그러나 사용자는 앱을 구성하기 위해 OAuth를 통해 인증해야 합니다.

액세스 토큰은 PKCE OAuth 흐름을 통해 검색되고 클라이언트 측에만 저장됩니다. OAuth 흐름을 초기화하는 앱 프론트엔드는 Jira의 iframe에서 GitLab으로부터 로드되는 JavaScript 애플리케이션입니다.

OAuth 애플리케이션은 API에 대한 완전한 읽기 및 쓰기 액세스를 부여하는 api 스코프가 있어야 합니다. 이 액세스에는 그룹 및 프로젝트, 컨테이너 레지스트리, 패키지 레지스트리가 포함됩니다. 그러나 GitLab for Jira Cloud 앱은 이 액세스를 다음과 같은 목적으로만 사용합니다.

  • 링크할 그룹 표시.
  • 그룹 링크.

OAuth를 통한 액세스는 사용자가 GitLab for Jira Cloud 앱을 구성하는 동안에만 필요합니다. 자세한 내용은 액세스 토큰 만료를 참조하세요.

역방향 프록시 사용

가능한 경우 본인의 독립형 인스턴스 앞에 역방향 프록시를 사용하는 것을 피해야 합니다. 대신, 공개 IP 주소를 사용하고 도메인을 방화벽으로 보호하는 것을 고려하세요.

인터넷에서 직접 액세스할 수 없는 독립형 인스턴스에 GitLab for Jira Cloud 앱을 위해 역방향 프록시를 사용해야만 하는 경우 다음 사항을 염두에 두세요.

  • Atlassian IP 주소로부터 들어오는 유입 트래픽을 허용하기 위해 내부 GitLab FQDN 및 역방향 프록시 FQDN에 액세스할 수 있는 클라이언트를 사용하세요.
  • GitLab for Jira Cloud 앱을 수동으로 설치할 때, 리디렉션 URI에 역방향 프록시 FQDN을 사용하세요(Oauth 인증 설정).
  • 역방향 프록시는 설치 방법에 대한 전제 조건을 충족해야 합니다.
  • Jira 개발 패널은 내부 GitLab FQDN이나 GitLab.com 대신 역방향 프록시 FQDN으로 연결될 수 있습니다. 자세한 내용은 issue 434085를 참조하세요.
  • 공개 인터넷에서 역방향 프록시를 보호하기 위해 Atlassian IP 주소로부터의 들어오는 트래픽만 허용하세요.
  • 프록시에서 rewrite 또는 subfilter를 사용하는 경우, 프록시가 gitlab-jira-connect-${host} 앱 키를 재작성하거나 교체하지 않도록 해야 합니다. 그렇지 않으면 Failed to link group 오류가 발생할 수 있습니다.

외부 NGINX

이 서버 블록은 Jira Cloud와 함께 작동하는 GitLab용 reverse proxy를 구성하는 예시입니다:

server {
  listen *:80;
  server_name gitlab.mycompany.com;
  server_tokens off;
  location /.well-known/acme-challenge/ {
    root /var/www/;
  }
  location / {
    return 301 https://gitlab.mycompany.com:443$request_uri;
  }
}
server {
  listen *:443 ssl;
  server_tokens off;
  server_name gitlab.mycompany.com;
  ssl_certificate /etc/letsencrypt/live/gitlab.mycompany.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/gitlab.mycompany.com/privkey.pem;
  ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
  ssl_protocols  TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers off;
  ssl_session_cache  shared:SSL:10m;
  ssl_session_tickets off;
  ssl_session_timeout  1d;
  access_log "/var/log/nginx/proxy_access.log";
  error_log "/var/log/nginx/proxy_error.log";
  location / {
    proxy_pass https://gitlab.internal;
    proxy_hide_header upgrade;
    proxy_set_header Host             gitlab.mycompany.com:443;
    proxy_set_header X-Real-IP        $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
  }
}

이 예시에서:

  • gitlab.mycompany.com을 reverse proxy FQDN으로, gitlab.internal을 내부 GitLab FQDN으로 대체합니다.
  • ssl_certificatessl_certificate_key는 유효한 인증서로 설정합니다 (예시에서 Certbot을 사용하였습니다).
  • Host 프록시 헤더를 reverse proxy FQDN으로 설정하여 GitLab과 Jira Cloud가 성공적으로 연결되도록 합니다.

Jira Cloud를 GitLab에 연결하려면 반드시 reverse proxy FQDN을 사용해야 합니다. 내부 GitLab FQDN에서 GitLab에 계속 액세스해야 합니다. 만약 reverse proxy FQDN에서 GitLab에 접근하면, GitLab이 예상대로 작동하지 않을 수 있습니다. 더 많은 정보를 보려면 이슈 21319를 참조하세요.