InfoGrab Docs

외부 상태 확인

요약

상태 확인은 외부 요구 사항의 상태를 요청하는 외부 시스템에 대한 API 호출입니다. 머지 리퀘스트 데이터를 서드파티 도구에 보내는 상태 확인을 생성할 수 있습니다. 이 통합을 통해 ServiceNow와 같은 서드파티 워크플로우 도구나 원하는 사용자 정의 도구와 통합할 수 있습니다.

히스토리
  • pending 상태가 GitLab 16.5에서 도입되었습니다.
  • pending 상태 확인에 대한 2분 타임아웃 간격이 GitLab 16.6에서 도입되었습니다.

상태 확인은 외부 요구 사항의 상태를 요청하는 외부 시스템에 대한 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에서 제거되었습니다.

기본적으로 프로젝트의 머지 리퀘스트는 외부 상태 확인이 실패해도 병합할 수 있습니다. 외부 확인이 실패할 때 머지 리퀘스트 병합을 차단하려면:

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Settings > Merge requests를 선택합니다.
  3. Status checks must succeed 체크박스를 선택합니다.
  4. Save changes를 선택합니다.

라이프사이클#

외부 상태 확인은 비동기 워크플로우를 가집니다. 머지 리퀘스트는 다음과 같은 경우 외부 서비스에 머지 리퀘스트 웹훅 페이로드를 전송합니다:

  • 머지 리퀘스트가 업데이트, 종료, 다시 열기, 승인, 승인 취소 또는 병합될 때.
  • 머지 리퀘스트의 소스 브랜치에 코드가 푸시될 때.
Mermaid 다이어그램 (8줄)
소스 코드 보기
%%{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를 사용하여 외부 상태 확인의 상태를 설정할 수 있습니다. 먼저 머지 리퀘스트 웹훅 페이로드가 전송될 때까지 기다릴 필요가 없습니다.

상태 확인 서비스 보기#

머지 리퀘스트 설정에서 프로젝트에 추가된 상태 확인 서비스 목록을 보려면:

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Settings > Merge requests를 선택합니다.
  3. 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 버튼을 선택해야 합니다. 이렇게 하면 상태 확인이 영구적으로 삭제되며 복구할 수 없습니다.

상태 확인 위젯#

히스토리
  • UI가 GitLab 15.2에서 업데이트되었습니다.
  • 실패한 외부 상태 확인을 다시 시도하는 기능이 GitLab 15.8에서 추가되었습니다.
  • 대기 중인 상태 확인이 있을 때 업데이트를 폴링하도록 위젯이 GitLab 15.11에서 업데이트되었습니다.

상태 확인 위젯은 머지 리퀘스트에 표시되며 다음 상태를 표시합니다:

  • pending ([status-neutral]): GitLab이 외부 상태 확인의 응답을 기다리는 동안.
  • success ([status-success]) 또는 failed ([status-failed]): GitLab이 외부 상태 확인의 응답을 받을 때.

대기 중인 상태 확인이 있을 때 위젯은 success 또는 failed 응답을 받을 때까지 몇 초마다 업데이트를 폴링합니다.

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

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
  3. 머지 리퀘스트 보고서 섹션으로 스크롤하여 드롭다운 목록을 펼쳐 외부 상태 확인 목록을 표시합니다.
  4. 실패한 외부 상태 확인 행에서 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 상태 페이지를 확인하여 더 광범위한 중단이 있는지 확인합니다.

관련 항목#

외부 상태 확인

Tier: Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

상태 확인은 외부 요구 사항의 상태를 요청하는 외부 시스템에 대한 API 호출입니다. 머지 리퀘스트 데이터를 서드파티 도구에 보내는 상태 확인을 생성할 수 있습니다. 이 통합을 통해 ServiceNow와 같은 서드파티 워크플로우 도구나 원하는 사용자 정의 도구와 통합할 수 있습니다.

히스토리
  • pending 상태가 GitLab 16.5에서 도입되었습니다.
  • pending 상태 확인에 대한 2분 타임아웃 간격이 GitLab 16.6에서 도입되었습니다.

상태 확인은 외부 요구 사항의 상태를 요청하는 외부 시스템에 대한 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에서 제거되었습니다.

기본적으로 프로젝트의 머지 리퀘스트는 외부 상태 확인이 실패해도 병합할 수 있습니다. 외부 확인이 실패할 때 머지 리퀘스트 병합을 차단하려면:

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Settings > Merge requests를 선택합니다.
  3. Status checks must succeed 체크박스를 선택합니다.
  4. Save changes를 선택합니다.

라이프사이클#

외부 상태 확인은 비동기 워크플로우를 가집니다. 머지 리퀘스트는 다음과 같은 경우 외부 서비스에 머지 리퀘스트 웹훅 페이로드를 전송합니다:

  • 머지 리퀘스트가 업데이트, 종료, 다시 열기, 승인, 승인 취소 또는 병합될 때.
  • 머지 리퀘스트의 소스 브랜치에 코드가 푸시될 때.
Mermaid 다이어그램 (8줄)
소스 코드 보기
%%{init: { "fontFamily": "GitLab Sans" }}%%
sequenceDiagram
    accTitle: 외부 상태 확인을 위한 워크플로우
    accDescr: 머지 리퀘스트가 외부 서비스에 페이로드를 보내고 상태 확인 응답을 받음
Merge request-&gt;&gt;+External service: Merge request payload
External service--&gt;&gt;-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를 사용하여 외부 상태 확인의 상태를 설정할 수 있습니다. 먼저 머지 리퀘스트 웹훅 페이로드가 전송될 때까지 기다릴 필요가 없습니다.

상태 확인 서비스 보기#

머지 리퀘스트 설정에서 프로젝트에 추가된 상태 확인 서비스 목록을 보려면:

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Settings > Merge requests를 선택합니다.
  3. 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 버튼을 선택해야 합니다. 이렇게 하면 상태 확인이 영구적으로 삭제되며 복구할 수 없습니다.

상태 확인 위젯#

히스토리
  • UI가 GitLab 15.2에서 업데이트되었습니다.
  • 실패한 외부 상태 확인을 다시 시도하는 기능이 GitLab 15.8에서 추가되었습니다.
  • 대기 중인 상태 확인이 있을 때 업데이트를 폴링하도록 위젯이 GitLab 15.11에서 업데이트되었습니다.

상태 확인 위젯은 머지 리퀘스트에 표시되며 다음 상태를 표시합니다:

  • pending ([status-neutral]): GitLab이 외부 상태 확인의 응답을 기다리는 동안.
  • success ([status-success]) 또는 failed ([status-failed]): GitLab이 외부 상태 확인의 응답을 받을 때.

대기 중인 상태 확인이 있을 때 위젯은 success 또는 failed 응답을 받을 때까지 몇 초마다 업데이트를 폴링합니다.

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

  1. 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
  3. 머지 리퀘스트 보고서 섹션으로 스크롤하여 드롭다운 목록을 펼쳐 외부 상태 확인 목록을 표시합니다.
  4. 실패한 외부 상태 확인 행에서 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 상태 페이지를 확인하여 더 광범위한 중단이 있는지 확인합니다.

관련 항목#