Jira DVCS 커넥터 문제 해결
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
Jira DVCS 커넥터를 사용할 때 다음과 같은 문제가 발생할 수 있습니다. Add New Account 양식을 작성하고 접근 권한을 부여한 뒤 다음 오류가 발생하면 Jira와 GitLab 이 연결되지 않은 것입니다.
Jira DVCS 커넥터를 사용할 때 다음과 같은 문제가 발생할 수 있습니다.
Jira가 GitLab 서버에 접근할 수 없음#
Add New Account 양식을 작성하고 접근 권한을 부여한 뒤 다음 오류가 발생하면 Jira와 GitLab 이 연결되지 않은 것입니다. 로그에는 다른 오류 메시지가 나타나지 않습니다.
Error obtaining access token. Cannot access https://gitlab.example.com from Jira.
Jira의 세션 토큰 버그#
GitLab을 Jira Server와 함께 사용하면 Jira의 세션 토큰 버그가 발생할 수 있습니다. 이 버그는 Jira Server 8.20.8, 8.22.3, 8.22.4, 9.4.6, 9.4.14 버전에 영향을 미칩니다.
이 문제를 해결하려면 Jira Server 8.20.11 이상 또는 9.1.0 이상 버전을 사용합니다.
SSL 및 TLS 문제#
SSL 및 TLS 관련 문제가 있으면 다음 오류 메시지가 발생할 수 있습니다.
Error obtaining access token. Cannot access https://gitlab.example.com from Jira.
- Jira 이슈 연동은 GitLab 이 Jira에 연결해야 합니다. 프라이빗 인증 기관이나 자체 서명 인증서로 인해 발생하는 TLS 문제는 GitLab 이 TLS 클라이언트이므로 GitLab 서버에서 해결합니다.
- Jira 개발 패널은 Jira가 GitLab에 연결해야 하므로 Jira가 TLS 클라이언트가 됩니다. GitLab 서버의 인증서가 공인 인증 기관에서 발급되지 않았다면 적절한 인증서(예: 조직의 루트 인증서)를 Jira Server의 Java Truststore에 추가합니다.
Jira 설정에 대한 자세한 내용은 Atlassian 문서와 Atlassian Support를 참고합니다.
- 트러스트 스토어에
인증서를 추가합니다.
- 가장 간단한 방법은
keytool을 사용하는 것입니다. - Jira가 공인 인증 기관도 신뢰하도록 Java의 기본 Truststore(
cacerts)에 루트 인증서를 추가로 등록합니다. - Jira Java 런타임을 업그레이드한 뒤 연동이 동작하지 않는다면 업그레이드 과정에서
cacertsTruststore가 교체되었을 수 있습니다.
- 가장 간단한 방법은
SSLPokeJava 클래스를 사용해 TLS 핸드셰이킹을 포함한 연결 문제를 해결합니다.- Atlassian 지식 기반에서 이 클래스를 Jira Server의 디렉터리(예:
/tmp)로 다운로드합니다. - Jira와 동일한 Java 런타임을 사용합니다.
- 프록시 설정이나 대체 루트 Truststore(
-Djavax.net.ssl.trustStore) 등 Jira 호출 시 사용되는 네트워킹 관련 파라미터를 모두 전달합니다.
${JAVA_HOME}/bin/java -Djavax.net.ssl.trustStore=/var/atlassian/application-data/jira/cacerts -classpath /tmp SSLPoke gitlab.example.com 443
Successfully connected 메시지가 나타나면 TLS 핸드셰이크가 성공한 것입니다.
문제가 있으면 Java TLS 라이브러리가 오류를 생성하며, 자세한 내용은 해당 오류를 조회하여 확인할 수 있습니다.
DVCS로 Jira에 연결할 때 발생하는 스코프 오류#
The requested scope is invalid, unknown, or malformed.
가능한 해결 방법:
- Jira DVCS 커넥터 설정에서
Jira 로부터 리디렉션된 후 브라우저에 표시되는 URL의 쿼리 문자열에
scope=api가 포함되어 있는지 확인합니다. - URL에
scope=api가 없다면 GitLab 계정 설정을 편집합니다. Scopes 섹션을 확인하고api체크박스가 선택되어 있는지 확인합니다.
오류: 410 Gone#
Jira에 연결하여 리포지터리를 동기화할 때 410 Gone 오류가 발생할 수 있습니다.
이 문제는 Jira DVCS 커넥터를 사용하면서 연동이 GitHub Enterprise를 사용하도록
구성된 경우 발생합니다.
자세한 내용은 이슈 340160을 참고합니다.
동기화 문제#
Jira에 삭제된 브랜치와 같은 잘못된 정보가 표시된다면 정보를 다시 동기화해야 할 수 있습니다.
- Jira에서 Jira Administration > Applications > DVCS accounts를 선택합니다.
- 계정(그룹 또는 하위 그룹)에 대해 ellipsis_h 메뉴에서 Refresh repositories를 선택합니다.
- 각 프로젝트마다 Last activity 날짜 옆에서 다음을 수행합니다.
- 소프트 재동기화를 수행하려면 동기화 아이콘을 선택합니다.
- 전체 동기화를 완료하려면
Shift를 누른 상태로 동기화 아이콘을 선택합니다.
자세한 내용은 Atlassian 문서를 참고합니다.
오류: Sync Failed#
특정 프로젝트에 대해
리포지터리 데이터를 새로고침할 때 Jira에서
Sync Failed 오류가 발생하면 Jira DVCS 커넥터 로그를 확인합니다. GitLab의 API 리소스에
요청을 실행할 때 발생하는 오류를 찾습니다. 예를 들면 다음과 같습니다.
Failed to execute request [https://gitlab.com/api/v4/projects/:id/merge_requests?page=1&per_page=100 GET https://gitlab.com/api/v4/projects/:id/merge_requests?page=1&per_page=100 returned a response status of 403 Forbidden] errors:
{"message":"403 Forbidden"}
403 Forbidden 오류가 발생하면 해당 프로젝트에서
일부 GitLab 기능이 꺼져
있을 수 있습니다. 앞의 예시에서는 머지 리퀘스트 기능이 꺼져 있습니다.
이 문제를 해결하려면 관련 기능을 켭니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- Visibility, project features, permissions를 확장합니다.
- 토글을 사용해 필요한 기능을 켭니다.
DVCS로 연결된 프로젝트에서 웹훅 로그 찾기#
DVCS로 연결된 프로젝트에서 웹훅 로그를 찾으려면 다음과 같이 합니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Webhooks를 선택합니다.
- 아래로 스크롤하여 Project hooks로 이동합니다.
- Jira 인스턴스를 가리키는 로그 옆에서 Edit를 선택합니다.
- 아래로 스크롤하여 Recent events로 이동합니다.
프로젝트에서 웹훅 로그를 찾을 수 없다면 DVCS 설정에 문제가 없는지 확인합니다.