외부 상태 확인

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • GitLab 14.0에서 도입되었으며 :ff_external_status_checks 기능 플래그 뒤에서 비활성화되었습니다.
  • GitLab 14.1에서 기능 플래그가 제거되었습니다.
  • GitLab 14.9에서 failed 상태가 도입되었습니다.
  • GitLab 16.5에서 pending 상태가 도입되었습니다.
  • GitLab 16.6에서 pending 상태 확인을 위한 2분간의 제한 시간이 도입되었습니다.

상태 확인은 외부 시스템의 상태를 요청하는 API 호출입니다.

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

이 통합을 통해 ServiceNow와 같은 서드파티 워크플로우 도구 또는 사용자 지정 도구와 연동할 수 있습니다. 서드파티 도구는 연관된 상태로 응답하며, 이 상태는 다음과 같이 합병 요청 자체의 수준에서 합병 요청 작성자 또는 리뷰어에게 이 상태를 노출시킵니다.

각 개별 프로젝트에 대해 합병 요청 상태 확인을 구성할 수 있습니다. 이러한 상태 확인은 프로젝트 간에 공유되지 않습니다.

상태 확인이 2분 이상 대기 상태로 유지되면 실패합니다.

사용 사례, 기능 발견 및 개발 일정에 대한 자세한 내용은 epic 3869을 참조하십시오.

모든 상태 확인이 통과되지 않은 경우 합병을 차단

  • GitLab 15.5에서 only_allow_merge_if_all_status_checks_passed라는 플래그로 도입되었으며 기본적으로 비활성화되었습니다. GitLab 15.8에서 GitLab.com에서 활성화되었습니다.
  • GitLab 15.9에서 self-managed 및 기능 플래그가 제거되었습니다.

기본적으로 프로젝트의 합병 요청은 외부 상태 확인이 실패하더라도 병합될 수 있습니다. 외부 확인이 실패하면 합병 요청의 병합을 차단하려면 다음을 수행하십시오:

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

라이프사이클

외부 상태 확인은 비동기 워크플로우를 갖습니다. 합병 요청은 변경될 때(예: 제목 또는 설명), 합병 요청의 소스 브랜치에 코드가 푸시될 때, 합병 요청 토론에 댓글이 달릴 때마다 외부 서비스로 합병 요청 웹훅 페이로드를 보냅니다.

합병 요청이 페이로드를 받으면 외부 서비스는 응답을 게시하기 전에 필요한 프로세스를 실행할 수 있습니다 REST API를 사용하여 합병 요청에 응답합니다.

합병 요청은 현재 소스 브랜치의 HEAD를 참조하지 않는 응답에 대해 409 Conflict 오류를 반환합니다. 결과적으로 외부 서비스가 무효한 커밋을 처리하고 응답할 수 있습니다.

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

  • pending - 기본 상태입니다. 외부 서비스에서 합병 요청으로부터 아직 응답이 도착하지 않았습니다.
  • passed - 외부 서비스에서 받은 응답이 승인되었습니다.
  • failed - 외부 서비스에서 받은 응답이 거부되었습니다.

GitLab 외부에서 무언가가 변경되면, API를 사용하여 외부 상태 확인의 상태를 설정할 수 있습니다. 합병 요청 웹훅 페이로드가 먼저 전송되기를 기다릴 필요가 없습니다.

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

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

  1. 왼쪽 사이드바에서 검색 또는 이동하여를 선택하고 프로젝트를 찾습니다.
  2. 설정 > 합병 요청을 선택합니다.
  3. 아래로 내려 상태 확인을 선택합니다.

상태 확인 목록

이 목록에는 서비스 이름, API URL 및 대상 브랜치가 표시됩니다. 또한 상태 확인을 만들거나 편집 또는 제거할 수 있는 작업이 제공됩니다.

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

상태 확인 서비스 추가

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

상태 확인 생성 양식

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

상태 확인 서비스 업데이트

상태 확인 하위 섹션에서 편집(연필 아이콘)을 선택하여 편집하려는 상태 확인 옆에 있는 편집을 선택합니다. 그러면 상태 확인 업데이트 양식이 표시됩니다.

상태 확인 업데이트 양식

양식의 값을 변경하고 상태 확인 업데이트 버튼을 선택하면 상태 확인이 업데이트됩니다.

양식 값

일반적인 양식 오류에 대해서는 아래의 문제 해결 섹션을 참조하세요.

서비스 이름

이 이름은 알파벳 및 숫자 값이 될 수 있으며 필수로 설정되어야 합니다. 해당 이름은 프로젝트 내에서 고유해야 합니다. 프로젝트 내에서 이름은 고유해야 합니다.

확인할 API

이 필드는 URL이 필요하며 반드시 HTTP 또는 HTTPS 프로토콜을 사용해야 합니다. 데이터가 이동 중일 때 병합 요청 데이터를 보호하기 위해 HTTPS를 사용하는 것이 권장됩니다. URL은 설정되어 있어야 하며 프로젝트 내에서 고유해야 합니다.

대상 브랜치

상태 확인을 단일 브랜치에 제한하려면 이 필드를 사용할 수 있습니다.

상태 확인 브랜치 선택기

브랜치 목록은 프로젝트의 보호된 브랜치에서 가져옵니다.

브랜치 목록을 스크롤하거나 검색 상자를 사용하여 필요한 브랜치가 바로 나타나지 않을 때 검색 상자를 사용할 수 있습니다. 검색 상자에는 검색을 시작하려면 세 개의 알파벳 문자가 필요합니다.

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

상태 확인 서비스 삭제

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

상태 확인 삭제 모달

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

상태 확인 위젯

  • GitLab 14.1에서 도입.
  • GitLab 15.2에서 UI가 업데이트됨.
  • GitLab 15.8에서 실패한 외부 상태 확인을 다시 시도할 수 있는 기능이 추가됨.
  • GitLab 15.11에서 보류 중인 상태 확인이 있을 때 업데이트를 확인하기 위해 위젯이 업데이트됨.

상태 확인 위젯은 병합 요청에서 다음과 같은 상태를 표시합니다:

  • 보류 중 (): GitLab이 외부 상태 확인으로부터 응답을 기다리는 동안.
  • 성공 () 또는 실패 (): GitLab이 외부 상태 확인으로부터 응답을 받았을 때.

상태 확인이 보류 중인 경우 위젯은 몇 초마다 업데이트를 확인합니다. 이후 성공 또는 실패 응답을 받을 때까지.

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

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 병합 요청을 찾습니다.
  3. 병합 요청 보고서 섹션으로 스크롤하여 보류 중인 상태 확인 목록을 표시합니다.
  4. 실패한 외부 상태 확인 행에서 재시도()를 선택합니다. 상태 확인이 다시 보류 상태로 변경됩니다.

어떤 조직은 외부 상태 확인이 통과되지 않으면 병합 병합 요청하는 것을 허용하지 않는 정책을 가질 수 있습니다. 그러나 위젯의 세부 정보는 정보 제공용으로만 제공됩니다.

참고: GitLab은 관련 외부 서비스에 의해 외부 상태 확인이 적절히 처리된다고 보장할 수 없습니다.

문제 해결

중복 값 오류

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

프로젝트별로 상태 확인은 이름 또는 API URL을 한 번만 사용할 수 있습니다. 이러한 오류는 해당 프로젝트의 상태 확인이름 또는 API URL이 이미 사용된 경우입니다.

현재 상태 확인에서 다른 값으로 선택하거나 기존 상태 확인에서 값을 업데이트해야 합니다.

유효하지 않은 URL 오류

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

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

검색 중 또는 검색 중에 발생한 브랜치 목록 오류

브랜치 목록을 가져오거나 검색하는 동안에 브랜치 목록을 가져올 수 없습니다. 양식을 닫고 다시 시도하십시오.

브랜치를 가져오는 API로부터 예상치 못한 응답을 받았습니다. 추천하는 대로 양식을 닫고 다시 열거나 페이지를 새로고침하세요. 이 오류는 임시적일 것이지만, 계속해서 지속된다면, 보다 넓은 문제가 있는지 확인하려면 GitLab 상태 페이지를 확인하세요.

상태 확인 불러오기 실패

상태 확인을 불러오는 데 실패했습니다

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

  • 이 오류가 일시적인 경우 페이지를 새로 고침하세요.
  • 문제가 지속된다면, GitLab 상태 페이지를 확인하여 더 넓은 장애가 있는지 확인하세요.

관련 주제