Jira Cloud 앱 관리를 위한 GitLab 문제 해결

Tier: Free, Premium, Ultimate Offering: Self-managed

GitLab for Jira Cloud 앱을 관리하는 동안 다음과 같은 문제가 발생할 수 있습니다.

사용자 설명서는 GitLab for Jira Cloud 앱을 참조하세요.

이미 로그인한 상태에서 로그인 메시지가 표시됨

이미 로그인한 상태에서 다음과 같은 메시지가 표시될 수 있습니다.

계속하려면 로그인하거나 가입해야 합니다.

GitLab for Jira Cloud 앱은 설정 페이지에 그룹을 추가하기 위해 iframe을 사용합니다. 일부 브라우저는 교차 사이트 쿠키를 차단할 수 있으며, 이로 인해 이 문제가 발생할 수 있습니다.

이 문제를 해결하려면 OAuth 인증을 설정하세요.

수동 설치 실패

공식 마켓플레이스 목록에서 GitLab for Jira Cloud 앱을 설치하고 수동 설치로 대체한 경우 다음 오류 중 하나가 발생할 수 있습니다.

앱 "gitlab-jira-connect-gitlab.com"을(를) 로컬 앱으로 설치하지 못했습니다. Atlassian Marketplace에서 이전에 설치되었던 앱이기 때문입니다.
앱 호스트가 설치 중에 연락을 시도했을 때 HTTP 응답 코드 401이 반환되었습니다. 나중에 다시 시도하거나 앱 공급업체에 문의하세요.

이 문제를 해결하려면 Jira Connect Proxy URL 설정을 비활성화하세요.

  • GitLab 15.7에서:

    1. 레일즈 콘솔을 엽니다.
    2. ApplicationSetting.current_without_cache.update(jira_connect_proxy_url: nil) 명령을 실행합니다.
  • GitLab 15.8 이상에서:

    1. 왼쪽 사이드바에서 맨 아래쪽에 있는 관리를 선택합니다.
    2. 왼쪽 사이드바에서 설정 > 일반을 선택합니다.
    3. GitLab for Jira 앱을 확장합니다.
    4. Jira Connect Proxy URL 텍스트 상자를 지웁니다.
    5. 변경 사항 저장을 선택합니다.

문제가 계속되는 경우, 자체 호스팅된 GitLab 인스턴스가 Atlassian의 공개 키를 가져오기 위해 connect-install-keys.atlassian.com에 연결할 수 있는지 확인하세요. 연결성을 테스트하려면 다음 명령을 실행하세요.

# 토큰을 전달하지 않아서 `404 Not Found`가 예상됩니다
curl --head "https://connect-install-keys.atlassian.com"

Invalid JWT로 데이터 동기화 실패

GitLab for Jira Cloud 앱이 자체 호스팅된 GitLab 인스턴스에서 데이터를 지속적으로 동기화하지 못하는 경우, 비밀 토큰이 오래되었을 수 있습니다. Atlassian이 새로운 비밀 토큰을 GitLab으로 보낼 수 있습니다. 그러나 GitLab이 이러한 토큰을 처리하거나 저장하지 못하면 Invalid JWT 오류가 발생합니다.

이 문제를 해결하기 위해 자체 호스팅된 GitLab 인스턴스에서 다음을 수행하세요.

앱을 설치한 방법에 따라 다음을 확인하기를 원할 수 있습니다.

  • 공식 Atlassian Marketplace 목록에서 앱을 설치한 경우 GitLab for Jira Cloud 앱에서 GitLab 버전을 전환하세요:

    1. Jira에서 상단 바에서 앱 > 앱 관리를 선택합니다.
    2. GitLab for Jira (gitlab.com)을 확장합니다.
    3. 시작하기를 선택합니다.
    4. GitLab 버전 변경을 선택합니다.
    5. GitLab.com (SaaS)을 선택하고 저장을 선택합니다.
    6. GitLab 버전 변경을 다시 선택합니다.
    7. GitLab (자체 호스팅)을 선택하고 다음을 선택합니다.
    8. 모든 확인란을 선택하고 다음을 선택합니다.
    9. GitLab 인스턴스 URL을 입력하고 저장을 선택합니다.

    이 방법이 작동하지 않는 경우 프리미엄 또는 얼티밋 고객인 경우 지원 티켓을 제출하세요. GitLab 지원팀은 다음 스크립트를 실행하여 문제를 해결하려고 시도할 수 있습니다.

    # GitLab.com이 자체 호스팅된 인스턴스에 연결할 수 있는지 확인하세요
    checker = Gitlab::TcpChecker.new("gitlab.example.com", 443)
    
    # 성공하면 `true`를 반환
    checker.check
    
    # 검사가 실패하면 오류가 반환됩니다
    checker.error
    
    # 자체 호스팅된 인스턴스의 설치 레코드를 찾습니다.
    installation = JiraConnectInstallation.find_by_instance_url("https://gitlab.example.com")
    
    # GitLab.com에서 자체 호스팅된 인스턴스로부터 토큰을 다시 보내려고 합니다.
    ProxyLifecycleEventService.execute(installation, :installed, installation.instance_url)
    
  • 수동으로 앱을 설치한 경우:

오류: GitLab 인스턴스 업데이트에 실패함

GitLab for Jira Cloud 앱을 설정할 때 자체 관리 인스턴스 URL을 입력한 후 GitLab 인스턴스 업데이트에 실패함 오류가 발생할 수 있습니다.

이 문제를 해결하려면 설치 방법의 모든 전제 조건이 충족되었는지 확인하세요:

전제 조건을 확인한 후에도 문제가 지속되면 Jira Connect Proxy URL을 구성하고 나서 문제가 지속되는 경우 Jira Connect Proxy 문제 디버깅를 참조하세요.

GitLab 15.8 이전 버전을 사용하고 있고 이전에 jira_connect_oauth_self_managedjira_connect_oauth 기능 플래그를 모두 활성화했다면 알려진 문제로 인해 jira_connect_oauth_self_managed 플래그를 비활성화해야 합니다. 이러한 플래그를 확인하려면:

  1. Rails 콘솔을 엽니다.
  2. 다음 코드를 실행합니다:

    # 모든 기능 플래그가 활성화되어 있는지 확인합니다.
    # 플래그가 활성화된 경우, 이 명령은 `true`를 반환합니다.
    Feature.enabled?(:jira_connect_oauth)
    Feature.enabled?(:jira_connect_oauth_self_managed)
    
    # 두 플래그가 모두 활성화된 경우, `jira_connect_oauth_self_managed` 플래그를 비활성화합니다.
    Feature.disable(:jira_connect_oauth_self_managed)
    

Jira Connect Proxy 문제 디버깅

Jira Connect Proxy URLhttps://gitlab.com로 설정한 경우, 인스턴스 설정 시, 브라우저 개발 도구에서 네트워크 트래픽을 검사하고 자세한 정보를 얻을 수 있습니다. 더 많은 정보를 얻으려면 Failed to update the GitLab instance 오류를 재현하세요.

이때 https://gitlab.com/-/jira_connect/installationsGET 요청을 볼 수 있어야 합니다.

이 요청은 200 OK를 반환해야 하지만 문제가 있을 경우 422 Unprocessable Entity를 반환할 수 있습니다. 에러를 확인하기 위해 응답 본문을 확인할 수 있습니다.

문제를 해결할 수 없고 GitLab 고객이라면, GitLab 지원팀에 문의하여 도움을 받으세요. GitLab 지원팀에 다음 정보를 제공하세요.

  • 자체 관리 인스턴스 URL
  • GitLab.com 사용자명
  • 실패한 GET 요청에 대한 X-Request-Id 응답 헤더(선택 사항)
  • 문제를 캡처한 HAR 파일harcleaner(https://gitlab.com/gitlab-com/support/toolbox/harcleaner)로 처리된 파일(선택 사항)

그 후 GitLab 지원팀은 GitLab.com 서버 로그에서 문제를 조사할 수 있습니다.

GitLab 지원팀

참고: 이러한 단계는 GitLab 지원팀에서만 완료할 수 있습니다.

https://gitlab.com/-/jira_connect/installations Jira Connect Proxy URL로 수행된 각 GET 요청은 두 개의 로그 항목을 생성합니다.

Kibana에서 해당 로그 항목을 찾으려면 다음 중 하나를 수행합니다.

  • https://gitlab.com/-/jira_connect/installationsGET 요청에 대한 X-Request-Id값이나 상관 ID가 있을 경우, Kibana 로그에서 json.meta.caller_id: JiraConnect::InstallationsController#update, NOT json.status: 200json.correlation_id: <X-Request-Id>로 필터링하면 두 개의 로그 항목이 반환됩니다.

  • 고객의 자체 관리 URL이 있을 경우:

    1. Kibana 로그에서 json.meta.caller_id: JiraConnect::InstallationsController#update, NOT json.status: 200json.params.value: {"instance_url"=>"https://gitlab.example.com"}로 필터링하면 하나의 로그 항목이 반환됩니다. 자체 관리 URL에 앞부분 슬래시가 없어야 합니다.
    2. json.correlation_id를 필터에 추가합니다.
    3. json.params.value 필터를 제거합니다. 다른 로그 항목이 반환될 것입니다.

첫 번째 로그에서:

  • json.status422 Unprocessable Entity입니다.
  • json.params.value는 자체 관리 GitLab URL [[FILTERED], {"instance_url"=>"https://gitlab.example.com"}]과 일치해야 합니다.

두 번째 로그에서는 다음과 같은 시나리오가 있을 수 있습니다.

  • 시나리오 1:
    • json.message, json.jira_status_codejson.jira_body가 있습니다.
    • json.messageProxy lifecycle event received error response 또는 유사한 경우입니다.
    • json.jira_status_codejson.jira_body는 자체 관리 인스턴스 또는 인스턴스 앞에있는 프록시에서 수신한 응답을 포함할 수 있습니다.
    • json.jira_status_code401 Unauthorized이고 json.jira_body(empty)인 경우:
      • Jira Connect Proxy URLhttps://gitlab.com로 설정되지 않았을 수 있습니다.
      • 자체 관리 인스턴스가 외부 연결을 차단하고 있을 수 있습니다. 자체 관리 인스턴스가 connect-install-keys.atlassian.comgitlab.com에 연결할 수 있는지 확인하세요.
      • 자체 관리 인스턴스가 Jira에서 JWT 토큰을 해독할 수 없습니다. GitLab 16.11부터 exceptions_json.log에 오류에 대한 자세한 정보가 포함되어 있습니다.
      • 자체 관리 인스턴스 앞에 역방향 프록시가 있는 경우, 역방향 프록시 FQDN과 일치하지 않는 Host 헤더가 자체 관리 인스턴스로 전송되었을 수 있습니다. 자체 관리 인스턴스의 Workhorse 로그를 확인하세요:

        grep /-/jira_connect/events/installed /var/log/gitlab/gitlab-workhorse/current
        

        출력에는 다음과 유사한 내용이 포함될 수 있습니다:

        {
          "host":"gitlab.mycompany.com:443", // 호스트는 GitLab for Jira Cloud app에 입력된 역방향 프록시 FQDN과 일치해야 합니다
          "remote_ip":"34.74.226.3", //  IP는 GitLab.com IP 범위 내에 있어야 합니다 https://docs.gitlab.com/ee/user/gitlab_com/#ip-range
          "status":401,
          "uri":"/-/jira_connect/events/installed"
        }
        
  • 시나리오 2:
    • json.exception.classjson.exception.message가 있습니다.
    • json.exception.classjson.exception.message는 자체 관리 인스턴스 연락 중에 문제가 발생했는지 여부를 나타냅니다.

오류: 그룹 연결에 실패함

그룹을 연결할 때 다음과 같은 오류 메시지가 표시될 수 있습니다.

그룹 연결에 실패했습니다. 다시 시도하세요.

이 오류는 여러 가지 이유로 발생할 수 있습니다.

  • 사용자 정보가 권한 부족으로 인해 Jira에서 가져올 수 없을 때 403 금지됨이 반환될 수 있습니다. 이 문제를 해결하려면, 앱을 설치하고 구성하는 Jira 사용자가 특정 요구 사항을 충족하는지 확인하세요.

  • 이 오류는 또한 역방향 프록시와 함께 리라이트 또는 서브필터를 사용하는 경우에도 발생할 수 있습니다. 요청에 사용된 앱 키에 서버 호스트 이름의 일부가 포함되어 있어 일부 역방향 프록시 필터가 이를 캡처할 수 있습니다. Atlassian 및 GitLab의 앱 키가 인증이 올바르게 작동하려면 일치해야 합니다.

  • 이 오류는 GitLab 인스턴스가 처음 설치될 때 초기에 잘못 구성되었을 때 발생할 수 있습니다. 이 경우, jira_connect_installation 테이블의 데이터가 삭제되어야 할 수 있습니다. 기존의 GitLab for Jira 앱 설치가 유지해야 할 필요가 없는 경우에만 해당 데이터를 삭제하세요.

    1. Jira 프로젝트에서 GitLab for Jira Cloud 앱을 제거하세요.
    2. 레코드를 삭제하려면 GitLab Rails 콘솔에서 다음 명령을 실행하세요:

      JiraConnectInstallation.delete_all
      

오류: Jira Connect 응용프로그램 ID를 로드하지 못함

자체 관리 인스턴스를 가리킨 후 GitLab for Jira Cloud 앱에 로그인하려고 하면 다음과 같은 오류 메시지가 표시될 수 있습니다.

Jira Connect 응용프로그램 ID를 로드하지 못했습니다. 다시 시도하세요.

브라우저 콘솔을 확인하면 다음 메시지도 표시될 수 있습니다.

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://gitlab.example.com/-/jira_connect/oauth_application_id. (Reason: CORS header 'Access-Control-Allow-Origin' missing). Status code: 403.

이 문제를 해결하려면:

  1. /-/jira_connect/oauth_application_id이 외부에서 접근 가능하고 JSON 응답을 반환하는지 확인하세요:

    curl --include "https://gitlab.example.com/-/jira_connect/oauth_application_id"
    
  2. Atlassian Marketplace 목록에서 앱을 설치했다면 Jira Connect Proxy URL을 후행 슬래시 없이 https://gitlab.com으로 설정하세요.

오류: 필수 매개변수가 누락됨: client_id

자체 관리 인스턴스를 가리킨 후 GitLab for Jira Cloud 앱에 로그인하려고 하면 다음과 같은 오류 메시지가 표시될 수 있습니다.

필수 매개변수가 누락됨: client_id

이 문제를 해결하려면 설치 방법에 대한 모든 전제 조건이 충족되었는지 확인하세요:

오류: GitLab에 로그인하지 못했습니다

자체 관리 인스턴스를 가리킨 후 GitLab for Jira Cloud 앱에 로그인하려고 하면 다음과 같은 오류 메시지가 표시될 수 있습니다.

GitLab에 로그인하지 못했습니다.

이 문제를 해결하려면 앱을 위해 생성된 OAuth 애플리케이션에서 신뢰비밀 확인란이 선택 해제되었는지 확인하세요.