외부 상태 확인
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
상태 확인은 외부 요구 사항의 상태를 요청하는 외부 시스템에 대한 API 호출입니다. 머지 리퀘스트 데이터를 서드파티 도구에 보내는 상태 확인을 생성할 수 있습니다. 이 통합을 통해 ServiceNow와 같은 서드파티 워크플로우 도구나 원하는 사용자 정의 도구와 통합할 수 있습니다.
상태 확인은 외부 요구 사항의 상태를 요청하는 외부 시스템에 대한 API 호출입니다.
머지 리퀘스트 데이터를 서드파티 도구에 보내는 상태 확인을 생성할 수 있습니다. 사용자가 머지 리퀘스트를 생성, 변경 또는 닫을 때 GitLab이 알림을 보냅니다. 그런 다음 사용자나 자동화된 워크플로우가 GitLab 외부에서 머지 리퀘스트의 상태를 업데이트할 수 있습니다.
이 통합을 통해 ServiceNow와 같은 서드파티 워크플로우 도구나 원하는 사용자 정의 도구와 통합할 수 있습니다. 서드파티 도구는 관련 상태로 응답합니다. 이 상태는 머지 리퀘스트 수준에서 머지 리퀘스트 작성자나 검토자에게 이 상태를 표시하는 비차단 위젯으로 머지 리퀘스트 내에 표시됩니다.
각 개별 프로젝트에 대해 머지 리퀘스트 상태 확인을 구성할 수 있습니다. 이는 프로젝트 간에 공유되지 않습니다.
상태 확인은 2분 이상 대기 중인 상태로 유지되면 실패합니다.
접근 권한#
외부 상태 확인 응답은 다음이 볼 수 있습니다:
- 프로젝트에서 Reporter, Developer, Maintainer 또는 Owner 권한을 가진 사용자
- 프로젝트가 내부 가시성을 가질 때 머지 리퀘스트를 볼 수 있는 인증된 모든 사용자
이는 내부 프로젝트가 있는 경우 머지 리퀘스트에 접근할 수 있는 로그인한 모든 사용자가 외부 상태 확인 응답을 볼 수 있음을 의미합니다.
사용 사례, 기능 발견 및 개발 일정에 대한 자세한 내용은 에픽 3869를 참조하세요.
모든 상태 확인이 통과될 때까지 머지 리퀘스트 병합 차단#
히스토리
- GitLab 15.5에서
only_allow_merge_if_all_status_checks_passed라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 15.8에서 GitLab.com에서 활성화되었습니다.
- GitLab Self-Managed에서 활성화되고 기능 플래그가 GitLab 15.9에서 제거되었습니다.
기본적으로 프로젝트의 머지 리퀘스트는 외부 상태 확인이 실패해도 병합할 수 있습니다. 외부 확인이 실패할 때 머지 리퀘스트 병합을 차단하려면:
- 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Settings > Merge requests를 선택합니다.
- Status checks must succeed 체크박스를 선택합니다.
- Save changes를 선택합니다.
라이프사이클#
외부 상태 확인은 비동기 워크플로우를 가집니다. 머지 리퀘스트는 다음과 같은 경우 외부 서비스에 머지 리퀘스트 웹훅 페이로드를 전송합니다:
- 머지 리퀘스트가 업데이트, 종료, 다시 열기, 승인, 승인 취소 또는 병합될 때.
- 머지 리퀘스트의 소스 브랜치에 코드가 푸시될 때.
소스 코드 보기
%%{init: { "fontFamily": "GitLab Sans" }}%%
sequenceDiagram
accTitle: 외부 상태 확인을 위한 워크플로우
accDescr: 머지 리퀘스트가 외부 서비스에 페이로드를 보내고 상태 확인 응답을 받음
Merge request->>+External service: Merge request payload
External service-->>-Merge request: Status check response
Note over External service,Merge request: Response includes SHA at HEAD</code></pre></details></div>
페이로드가 수신되면 외부 서비스는 필요한 프로세스를 실행한 후 REST API를 사용하여 머지 리퀘스트에 응답을 게시할 수 있습니다.
머지 리퀘스트는 소스 브랜치의 현재 HEAD를 참조하지 않는 응답에 409 Conflict 오류를 반환합니다. 결과적으로 외부 서비스가 오래된 커밋을 처리하고 응답하는 것이 안전합니다.
외부 상태 확인의 상태는 다음과 같습니다:
pending - 기본 상태. 외부 서비스에서 머지 리퀘스트가 응답을 받지 못했습니다.
passed - 외부 서비스에서 응답을 받았고 승인되었습니다.
failed - 외부 서비스에서 응답을 받았고 거부되었습니다.
GitLab 외부에서 무언가 변경되면 API를 사용하여 외부 상태 확인의 상태를 설정할 수 있습니다. 먼저 머지 리퀘스트 웹훅 페이로드가 전송될 때까지 기다릴 필요가 없습니다.
상태 확인 서비스 보기#
머지 리퀘스트 설정에서 프로젝트에 추가된 상태 확인 서비스 목록을 보려면:
- 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Settings > Merge requests를 선택합니다.
- Status checks까지 스크롤을 내립니다. 이 목록에는 서비스 이름, API URL, 대상 브랜치 및 HMAC 인증 상태가 표시됩니다.

브랜치 규칙 설정에서도 상태 확인 서비스 목록을 볼 수 있습니다.
상태 확인 서비스 추가 또는 업데이트#
상태 확인 서비스 추가#
Status checks 하위 섹션에서 Add status check 버튼을 선택합니다.
그러면 Add status check 양식이 표시됩니다.

양식을 작성하고 Add status check 버튼을 선택하면 새 상태 확인이 생성됩니다.
상태 확인은 모든 새 머지 리퀘스트에 적용되지만 기존 머지 리퀘스트에는 소급 적용되지 않습니다.
상태 확인 서비스 업데이트#
Status checks 하위 섹션에서 편집할 상태 확인 옆의 Edit (✏️)를 선택합니다.
그러면 Update status check 양식이 표시됩니다.

Note
HMAC 공유 비밀의 값을 보거나 수정할 수 없습니다. 공유 비밀을 변경하려면 새 공유 비밀 값으로 외부 상태 확인을 삭제하고 다시 생성합니다.
상태 확인을 업데이트하려면 양식의 값을 변경하고 Update status check를 선택합니다.
상태 확인 업데이트는 모든 새 머지 리퀘스트에 적용되지만 기존 머지 리퀘스트에는 소급 적용되지 않습니다.
양식 값#
일반적인 양식 오류에 대해서는 아래 문제 해결 섹션을 참조하세요.
서비스 이름#
이 이름은 영숫자 값이 될 수 있으며 반드시 설정해야 합니다. 이름은 프로젝트에서 반드시 고유해야 합니다.
확인할 API#
이 필드에는 URL이 필요하며 HTTP 또는 HTTPS 프로토콜을 반드시 사용해야 합니다.
전송 중 머지 리퀘스트 데이터를 보호하기 위해 HTTPS를 사용할 것을 권장합니다.
URL은 반드시 설정하고 프로젝트에서 반드시 고유해야 합니다.
대상 브랜치#
상태 확인을 단일 브랜치로 제한하려면 이 필드를 사용하여 이 제한을 설정할 수 있습니다.

브랜치 목록은 프로젝트의 보호 브랜치에서 채워집니다.
브랜치가 많고 찾고 있는 브랜치가 바로 표시되지 않을 때 브랜치 목록을 스크롤하거나 검색 상자를 사용할 수 있습니다. 검색 상자는 검색을 시작하기 위해 세 개 이상의 영숫자 문자를 입력해야 합니다.
상태 확인을 모든 머지 리퀘스트에 적용하려면 All branches 옵션을 선택할 수 있습니다.
HMAC 공유 비밀#
HMAC 인증은 요청의 변조를 방지하고 합법적인 소스에서 온 것을 보장합니다.
상태 확인 서비스 삭제#
Status checks 하위 섹션에서 삭제할 상태 확인 옆의 Remove ([remove])를 선택합니다.
그러면 Remove status check? 대화 상자가 표시됩니다.

상태 확인 삭제를 완료하려면 Remove status check 버튼을 선택해야 합니다. 이렇게 하면 상태 확인이 영구적으로 삭제되며 복구할 수 없습니다.
상태 확인 위젯#
히스토리
상태 확인 위젯은 머지 리퀘스트에 표시되며 다음 상태를 표시합니다:
- pending ([status-neutral]): GitLab이 외부 상태 확인의 응답을 기다리는 동안.
- success ([status-success]) 또는 failed ([status-failed]): GitLab이 외부 상태 확인의 응답을 받을 때.
대기 중인 상태 확인이 있을 때 위젯은 success 또는 failed 응답을 받을 때까지 몇 초마다 업데이트를 폴링합니다.
실패한 상태 확인을 다시 시도하려면:
- 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
- 머지 리퀘스트 보고서 섹션으로 스크롤하여 드롭다운 목록을 펼쳐 외부 상태 확인 목록을 표시합니다.
- 실패한 외부 상태 확인 행에서 Retry ([retry])를 선택합니다. 상태 확인이 다시 대기 중 상태가 됩니다.
조직에 외부 상태 확인이 통과되지 않으면 머지 리퀘스트 병합을 허용하지 않는 정책이 있을 수 있습니다. 그러나 위젯의 세부 정보는 정보 제공 목적으로만 사용됩니다.
Note
GitLab은 관련 외부 서비스가 외부 상태 확인을 적절히 처리한다는 것을 보장할 수 없습니다.
문제 해결#
중복 값 오류#
Name is already taken
---
External API is already in use by another status check
프로젝트별로 상태 확인은 이름이나 API URL을 한 번만 사용할 수 있습니다.
이러한 오류는 상태 확인 이름이나 API URL이 이 프로젝트의 상태 확인에서 이미 사용되었음을 의미합니다.
현재 상태 확인에서 다른 값을 선택하거나 기존 상태 확인의 값을 업데이트해야 합니다.
유효하지 않은 URL 오류#
Please provide a valid URL
확인할 API 필드는 제공된 URL이 HTTP 또는 HTTPS 프로토콜을 사용하도록 요구합니다.
이 요구 사항을 충족하도록 필드 값을 업데이트해야 합니다.
검색 또는 검색 중 브랜치 목록 오류#
Unable to fetch branches list, please close the form and try again
브랜치 검색 API에서 예기치 않은 응답이 수신되었습니다.
제안된 대로 양식을 닫고 다시 열거나 페이지를 새로 고칩니다. 이 오류는 일시적이어야 하지만, 지속되면 GitLab 상태 페이지를 확인하여 더 광범위한 중단이 있는지 확인하세요.
상태 확인 로드 실패#
Failed to load status checks
외부 상태 확인 API에서 예기치 않은 응답이 수신되었습니다.
다음을 수행해야 합니다:
- 이 오류가 일시적인 경우 페이지를 새로 고칩니다.
- 문제가 지속되면 GitLab 상태 페이지를 확인하여 더 광범위한 중단이 있는지 확인합니다.
관련 항목#
