외부 상태 확인

Tier: Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • pending 상태는 GitLab 16.5에서 도입되었습니다.
  • pending 상태 확인을 위한 2분의 타임아웃 간격은 GitLab 16.6에서 도입되었습니다.

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

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

이 통합을 사용하면 ServiceNow와 같은 제3자 워크플로우 도구 또는 사용자 지정 도구와 통합할 수 있습니다. 제3자 도구가 연관된 상태로 응답합니다. 그런 다음 해당 상태가 합병 요청 작성자 또는 리뷰어에게 합병 요청 수준에서 표시됩니다.

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

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

사례 사용, 기능 발견 및 개발 일정에 대한 자세한 정보는 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. 변경 사항 저장을 선택합니다.

라이프사이클

외부 상태 확인은 비동기 워크플로우를 갖고 있습니다. 합병 요청이 업데이트되거나 닫히거나 다시 열리거나 승인되거나 승인이 취소되거나 병합될 때마다 합병 요청 웹훅 페이로드를 외부 서비스로 보냅니다.

소스 브랜치로 코드가 푸시되면.

sequenceDiagram 합병 요청->>+외부 서비스: 합병 요청 페이로드 외부 서비스-->>-합병 요청: 상태 확인 응답 외부 서비스, 합병 요청 위에 주석: 응답은 현재 HEAD의 SHA를 포함

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

합병 요청은 현재 HEAD가 아닌 커밋에 대해서는 409 충돌 오류를 리턴합니다. 따라서 외부 서비스가 오래된 커밋을 처리하고 응답해도 안전합니다.

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

  • pending - 기본 상태입니다. 외부 서비스에서 합병 요청으로부터 응답을받지 못했습니다.
  • passed - 외부 서비스에서 응답을 받았으며 승인되었습니다.
  • failed - 외부 서비스에서 응답을 받았으며 거부되었습니다.

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

상태 확인 서비스 보기

합병 요청 설정에서 프로젝트에 추가된 상태 확인 서비스 목록을 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 합병 요청을 선택합니다.
  3. 아래로 스크롤하여 상태 확인을 선택합니다. 이 목록에는 서비스 이름, API URL, 대상 브랜치, 및 HMAC 인증 상태가 표시됩니다.

상태 확인 목록

또한 브랜치 규칙 설정에서 상태 확인 서비스 목록을 볼 수 있습니다.

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

상태 확인 서비스 추가

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

상태 확인 생성 양식

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

상태 확인 서비스 업데이트

상태 확인 하위 섹션에서 편집(🖉) 옆의 편집을 선택하여 편집하려는 상태 확인 옆에서 상태 확인 업데이트 양식이 표시됩니다.

상태 확인 업데이트 양식

참고: HMAC 공유 비밀의 값은 볼 수도 수정할 수도 없습니다. 공유 비밀 값을 변경하려면 HMAC 공유 비밀의 값을 삭제하고 새로운 값을 사용하여 외부 상태 확인을 다시 생성해야 합니다.

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

양식 값

일반적인 양식 오류는 아래의 문제 해결 섹션을 참조하십시오.

서비스 이름

이 이름은 모든 문자(알파벳과 숫자)가 포함되어야 하며 반드시 설정되어야 합니다. 프로젝트 내에서 이름은 반드시 고유해야 합니다.

확인할 API

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

대상 브랜치

상태 확인을 특정 브랜치로 제한하려면 이 필드를 사용하여이 제한을 설정할 수 있습니다. 모든 브랜치에 상태 확인을 적용하려면 모든 브랜치 옵션을 선택할 수 있습니다.

상태 확인 브랜치 선택기

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

브랜치가 많고 원하는 브랜치가 즉시 나타나지 않는 경우 목록을 스크롤하거나 검색 상자를 사용할 수 있습니다. 검색 상자를 사용하려면 검색이 시작되려면 세 개의 문자가 필요합니다.

::EndTabs

HMAC 공유 비밀

HMAC 인증은 요청의 위조를 방지하고 요청이 정당한 출처에서 온 것을 보장합니다.

상태 확인 서비스 삭제

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

상태 확인 삭제 모달

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

상태 확인 위젯

  • UI가 GitLab 15.2에서 업데이트되었습니다.
  • 실패한 외부 상태 확인을 다시 시도하는 기능이 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 상태 페이지에서 넓은 장애가 있는지 확인합니다.

관련 주제