외부 상태 확인

세부정보: Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

상태 확인은 외부 시스템으로의 API 호출로, 외부 요구 사항의 상태를 요청합니다.

Merge Request 데이터를 제3자 도구로 보내는 상태 확인을 만들 수 있습니다. 사용자가 Merge Request을 생성, 변경 또는 닫을 때 GitLab은 알림을 보냅니다. 사용자 또는 자동화된 워크플로우에서 GitLab 외부에서 Merge Request의 상태를 업데이트할 수 있습니다.

본 통합을 통해 ServiceNow와 같은 제3자 워크플로우 도구 또는 사용자가 선택한 사용자 정의 도구와 통합할 수 있습니다. 제3자 도구는 관련된 상태와 함께 응답합니다. 그 후 이 상태는 Merge Request에서 논블로킹 위젯으로 표시되어 Merge Request 작성자나 리뷰어가 Merge Request 수준에서 이 상태를 볼 수 있습니다.

각 개별 프로젝트에 대해 Merge Request 상태 확인을 구성할 수 있습니다. 이것들은 프로젝트간에 공유되지 않습니다.

상태 확인이 두 분을 초과하여 pending 상태에 머물 경우 실패합니다.

사용 사례, 피처 발견 및 개발 타임라인에 대한 자세한 정보는 에픽 3869을 참조하세요.

Merge Request의 모든 상태 확인이 통과하지 않으면 Merge을 차단합니다

기본적으로 프로젝트의 Merge Request은 외부 상태 확인 실패 시에도 Merge될 수 있습니다. 외부 확인이 실패할 때 Merge Request의 Merge을 차단하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동하여 프로젝트를 찾습니다.
  2. 설정 > Merge Request을 선택합니다.
  3. 상태 확인이 성공해야 함 확인란을 선택합니다.
  4. 변경 사항 저장을 선택합니다.

라이프사이클

외부 상태 확인에는 비동기 워크플로우가 있습니다. Merge Request이 변경될 때마다 외부 서비스로 Merge Request 웹훅 페이로드를 보냅니다.

  • 예: 제목 또는 설명이 변경됨.
  • 소스 브랜치에 코드가 푸시됨.
  • Merge Request 토론에 댓글이 달림.
sequenceDiagram Merge Request->>+외부 서비스: Merge Request 페이로드 외부 서비스-->>-Merge Request: 상태 확인 응답 외부 서비스, Merge Request 상 단에서 참고: 응답은 HEAD에 대한 SHA를 포함합니다.

페이로드를 받으면 외부 서비스는 Merge Request에 대한 응답을 다시 게시하기 전에 필요한 프로세스를 실행할 수 있습니다.

Merge Request은 외부 서비스를 참조하지 않는 응답에 대해 409 Conflict 오류를 반환합니다. 결과적으로 외부 서비스가 오래된 커밋을 처리하고 응답해도 안전합니다.

외부 상태 확인에는 다음과 같은 상태가 있습니다:

  • pending - 기본 상태입니다. Merge Request에서 외부 서비스로부터 응답을 받지 않았습니다.
  • passed - 외부 서비스로부터 응답이 도착하여 승인되었습니다.
  • failed - 외부 서비스로부터 응답이 거부되었습니다.

GitLab 외부에서 무언가가 변경되면 외부 상태 확인의 상태를 설정할 수 있습니다. Merge Request 웹훅 페이로드가 먼저 전송되어야 하는 것을 기다릴 필요가 없습니다.

프로젝트에서 상태 확인 보기

각 프로젝트의 설정에서 프로젝트에 추가된 상태 확인 서비스 디렉터리을 볼 수 있습니다:

  1. 왼쪽 사이드바에서 검색 또는 이동하여 프로젝트를 찾습니다.
  2. 설정 > Merge Request을 선택합니다.
  3. 아래로 스크롤하여 상태 확인을 선택합니다.

상태 확인 디렉터리

이 디렉터리에서 서비스 이름, API URL 및 대상 브랜치를 보여줍니다. 또한 서비스를 만들거나 편집 또는 삭제할 수 있는 작업을 제공합니다.

상태 확인 서비스 추가 또는 업데이트

상태 확인 서비스 추가

상태 확인 하위 섹션에서 상태 확인 추가 버튼을 선택합니다. 그러면 상태 확인 추가 양식이 표시됩니다.

상태 확인 생성 양식

양식을 작성한 다음 상태 확인 추가 버튼을 선택하면 새로운 상태 확인이 생성됩니다.

상태 확인 서비스 업데이트

상태 확인 하위 섹션에서 편집할 상태 확인 옆의 편집 ({연필})을 선택합니다. 그러면 상태 확인 업데이트 양식이 표시됩니다.

상태 확인 업데이트 양식

양식의 값을 변경한 다음 상태 확인 업데이트 버튼을 선택하여 상태 확인을 업데이트합니다.

양식 값

일반적인 양식 오류에 대한 자세한 내용은 아래의 문제 해결 섹션을 참조하세요.

서비스 이름

이 이름은 알파벳 또는 숫자 값이 될 수 있으며 반드시 설정해야 합니다. 프로젝트에 대해 이름은 고유해야 합니다.

API 확인

이 필드에는 URL이 필요하며, 반드시 HTTP 또는 HTTPS 프로토콜을 사용해야 합니다. 데이터의 안전을 위해 HTTPS를 사용하는 것을 권장합니다. URL은 설정되어 있어야 하며 프로젝트마다 고유해야 합니다.

대상 브랜치

상태 확인을 특정 브랜치로 제한하려면 이 필드를 사용하여 제한을 설정할 수 있습니다.

상태 확인 브랜치 선택기

브랜치 디렉터리은 프로젝트의 보호된 브랜치에서 가져옵니다.

브랜치 디렉터리을 스크롤하거나 검색 상자를 사용하여 원하는 브랜치가 바로 나타나지 않을 때 검색 상자를 사용할 수 있습니다. 검색 상자를 사용하려면 검색을 시작하려면 세 개의 알파벳 문자 이상 입력해야 합니다.

상태 확인을 모든 Merge Request에 적용하려면 모든 브랜치 옵션을 선택할 수 있습니다.

상태 확인 서비스 삭제

상태 확인 하위 섹션에서 삭제할 상태 확인 옆에 있는 제거()를 선택합니다. 그러면 상태 확인 제거 모달이 표시됩니다.

상태 확인 삭제 모달

상태 확인을 완전히 삭제하려면 상태 확인 제거 버튼을 선택해야 합니다. 이로써 상태 확인이 영구적으로 삭제되며, 복구할 수 없습니다.

상태 확인 위젯

  • GitLab 14.1에서 도입.
  • GitLab 15.2에서 UI가 업데이트되었습니다.
  • GitLab 15.8에서 실패한 외부 상태 확인을 다시 시도하는 기능이 추가되었습니다.
  • 보류 중인 상태 확인이 있을 때 GitLab 15.11에서 상태 확인을 다시 가져오도록 위젯이 업데이트되었습니다.

상태 확인 위젯은 Merge Request에서 다음 상태를 표시합니다:

  • pending (): GitLab이 외부 상태 확인으로부터 응답을 기다리는 동안.
  • success () 또는 failed (): GitLab이 외부 상태 확인으로부터 응답을 받은 경우.

보류 중인 상태 확인이 있을 때 위젯은 몇 초마다 업데이트를 가져올 때까지 계속해서 상태를 가져옵니다.

실패한 상태 확인을 다시 시도하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > Merge Request을 선택하고 Merge Request을 찾습니다.
  3. Merge Request 보고서 섹션으로 스크롤하고 드롭다운 디렉터리을 확장하여 외부 상태 확인 디렉터리을 표시합니다.
  4. 실패한 외부 상태 확인 행에서 다시 시도()를 선택합니다. 상태 확인이 보류 상태로 다시 전환됩니다.

조직에서는 외부 상태 확인이 통과하지 않을 경우에는 Merge Request을 Merge할 수 없는 정책이 있을 수 있습니다. 그러나 위젯에 표시된 세부 정보는 정보 제공을 목적으로만 합니다.

note
GitLab은 외부 상태 확인이 관련된 외부 서비스에서 올바르게 처리되는 것을 보장할 수 없습니다.

문제 해결

중복 값을 나타내는 오류들

이름이 이미 사용 중입니다
---
외부 API가 다른 상태 확인에서 이미 사용 중입니다

프로젝트별로 상태 확인은 이름 또는 API URL을 한 번만 사용할 수 있습니다. 이러한 오류는 현재의 상태 확인에서는 다른 값을 선택하거나 기존 상태 확인의 값을 업데이트해야 함을 의미합니다.

잘못된 URL 오류

유효한 URL을 제공해 주십시오

상태 확인 필드에 제공된 URL은 HTTP 또는 HTTPs 프로토콜 중 하나를 사용해야 합니다. 이 요구 사항을 충족시키기 위해 필드의 값을 업데이트해야 합니다.

검색 중 또는 검색 중에 브랜치 디렉터리 오류

브랜치 디렉터리을 가져오지 못했습니다. 양식을 닫은 다음 다시 시도하십시오

브랜치 검색 API에서 예상치 못한 응답을 받았습니다. 제안대로, 양식을 닫고 다시 열거나 페이지를 새로고침 하십시오. 이 오류는 일시적일 수 있지만, 지속되는 경우 폭넓은 장애가 있는지 GitLab 상태 페이지를 확인하십시오.

상태 확인 로드 실패

상태 확인을 로드하지 못했습니다

외부 상태 확인 API에서 예상치 못한 응답을 받았습니다. 다음을 해야 합니다:

  • 이 오류가 일시적인 경우 페이지를 새로고침하십시오.
  • 문제가 지속되는 경우 GitLab 상태 페이지를 확인하여 폭넓은 장애가 있는지 확인하십시오.

관련 주제