- 모든 상태 검사가 통과할 때까지 병합 요청의 병합 차단
- 라이프사이클
- 상태 검사 서비스 보기
- 상태 검사 서비스 추가 또는 업데이트
- 상태 검사 서비스 삭제
- 상태 확인 위젯
- 문제 해결
- 관련 주제
외부 상태 검사
상태 검사는 외부 시스템에 외부 요구 사항의 상태를 요청하는 API 호출입니다.
타사 도구에 병합 요청 데이터를 전송하는 상태 검사를 생성할 수 있습니다.
사용자가 병합 요청을 생성, 변경 또는 닫을 때 GitLab은 알림을 전송합니다.
사용자 또는 자동화된 워크플로우는 GitLab 외부에서 병합 요청의 상태를 업데이트할 수 있습니다.
이 통합을 통해 ServiceNow와 같은 타사 워크플로우 도구 또는
선택한 사용자 정의 도구와 통합할 수 있습니다.
타사 도구는 관련된 상태로 응답합니다.
이 상태는 병합 요청 수준에서 병합 요청 작성자 또는 검토자에게 이 상태를 표시하기 위해
비차단 위젯으로 표시됩니다.
각 개별 프로젝트에 대해 병합 요청 상태 검사를 구성할 수 있습니다.
이는 프로젝트 간에 공유되지 않습니다.
상태 검사는 pending
상태가 두 분을 초과하면 실패합니다.
사용 사례, 기능 발견 및 개발 타임라인에 대한 더 많은 정보는
에픽 3869를 참조하세요.
모든 상태 검사가 통과할 때까지 병합 요청의 병합 차단
- GitLab 15.5에서 도입됨
- GitLab.com에서 활성화됨 GitLab 15.8에서.
- 자기 관리형에서 활성화되었고 기능 플래그가 삭제됨 GitLab 15.9에서.
기본적으로 프로젝트의 병합 요청은 외부 상태 검사가 실패하더라도 병합할 수 있습니다.
외부 검사가 실패할 때 병합 요청의 병합을 차단하려면:
- 왼쪽 사이드바에서 검색하거나 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > 병합 요청을 선택합니다.
- 상태 검사가 성공해야 함 체크박스를 선택합니다.
- 변경 사항 저장을 선택합니다.
라이프사이클
외부 상태 검사는 비동기 워크플로우를 가지고 있습니다. 병합 요청은 다음과 같은 경우 외부 서비스에 병합 요청 웹훅 페이로드를 전송합니다:
- 병합 요청이 업데이트, 닫히거나, 다시 열리거나, 승인, 비승인되거나, 병합됩니다.
- 코드가 병합 요청의 소스 브랜치에 푸시됩니다.
페이로드가 수신되면, 외부 서비스는 응답을 병합 요청에 다시 게시하기 전에
필요한 프로세스를 실행할 수 있습니다 REST API를 사용하여.
병합 요청은 소스 브랜치의 현재 HEAD
와 관련이 없는 응답에 대해 409 Conflict
오류를 반환합니다.
따라서 외부 서비스는 오래된 커밋을 처리하고 응답하기가 안전합니다.
외부 상태 검사는 다음 상태를 가집니다:
-
pending
- 기본 상태입니다. 외부 서비스에서 병합 요청으로 응답이 수신되지 않았습니다. -
passed
- 외부 서비스에서 응답이 수신되고 승인되었습니다. -
failed
- 외부 서비스에서 응답이 수신되고 거부되었습니다.
GitLab 외부에서 무언가가 변경된 경우 API를 사용하여
외부 상태 검사의 상태를 설정할 수 있습니다.
먼저 병합 요청 웹훅 페이로드가 전송될 때까지 기다릴 필요가 없습니다.
상태 검사 서비스 보기
Merge request 설정에서 프로젝트에 추가된 상태 검사 서비스 목록을 보려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > Merge requests를 선택합니다.
-
상태 검사로 스크롤합니다. 이 목록은 서비스 이름, API URL, 대상 브랜치,
및 HMAC 인증 상태를 보여줍니다.
상태 검사 서비스 목록은 브랜치 규칙 설정에서도 볼 수 있습니다.
상태 검사 서비스 추가 또는 업데이트
상태 검사 서비스 추가
상태 검사 하위 섹션 내에서 상태 검사 추가 버튼을 선택합니다.
이후 상태 검사 추가 양식이 표시됩니다.
양식을 작성하고 상태 검사 추가 버튼을 선택하면 새로운 상태 검사가 생성됩니다.
상태 검사 서비스 업데이트
상태 검사 하위 섹션 내에서 수정할 상태 검사 옆의 편집 ()를 선택합니다.
이후 상태 검사 업데이트 양식이 표시됩니다.
참고:
HMAC 공유 비밀의 값을 볼 수 없거나 수정할 수 없습니다. 공유 비밀을 변경하려면 외부 상태 검사를 삭제하고 새 값으로 다시 생성해야 합니다.
양식의 값을 변경하고 상태 검사 업데이트 버튼을 선택하면 상태 검사가 업데이트됩니다.
양식 값
일반적인 양식 오류에 대해서는 아래의 문제 해결 섹션을 참조하세요.
서비스 이름
이 이름은 알파벳 및 숫자로 이루어진 값으로 설정되어야 합니다. 이름은 프로젝트 내에서 고유해야 합니다.
이름은 프로젝트 생략 없이 고유해야 합니다.
검사할 API
이 필드는 URL을 필요로 하며 HTTP 또는 HTTPS 프로토콜을 사용해야 합니다.
Merge request 데이터 전송 시 보호를 위해 HTTPS를 사용하는 것을 추천합니다.
URL은 설정되어야 하며 프로젝트 내에서 고유해야 합니다.
대상 브랜치
상태 검사를 단일 브랜치로 제한하고 싶다면, 이 필드를 사용하여 이 제한을 설정할 수 있습니다.
브랜치 목록은 프로젝트의 보호된 브랜치에서 불러옵니다.
브랜치 수가 많고 찾고 있는 브랜치가 즉시 나타나지 않을 경우, 브랜치 목록을 스크롤하거나 검색 상자를 사용할 수 있습니다.
검색 상자는 검색을 시작하기 위해 세 개의 알파벳 숫자가 입력되어야 합니다.
상태 검사가 모든 merge request에 적용되도록 하려면 모든 브랜치 옵션을 선택할 수 있습니다.
HMAC 공유 비밀
HMAC 인증은 요청의 변조를 방지하고 요청이 합법적인 출처에서 오는지를 보장합니다.
상태 검사 서비스 삭제
상태 검사 하위 섹션 내에서 삭제할 상태 검사 옆의 제거 ()를 선택합니다.
이후 상태 검사 제거? 모달이 표시됩니다.
상태 검사 삭제를 완료하려면 상태 검사 제거 버튼을 선택해야 합니다. 이 작업은 상태 검사를 영구적으로 삭제하며 복구할 수 없습니다.
상태 확인 위젯
상태 확인 위젯은 병합 요청에 표시되며 다음 상태를 표시합니다:
- pending () - GitLab이 외부 상태 확인의 응답을 기다리는 동안.
- success () 또는 failed () - GitLab이 외부 상태 확인의 응답을 수신할 때.
대기 중인 상태 확인이 있을 때, 위젯은 success 또는 failed 응답을 받을 때까지 몇 초마다 업데이트를 폴링합니다.
실패한 상태 확인을 다시 시도하려면:
- 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Code > Merge requests를 선택하고 병합 요청을 찾습니다.
- 병합 요청 보고서 섹션으로 스크롤하고, 외부 상태 확인 목록을 표시하기 위해 드롭다운 목록을 확장합니다.
- 실패한 외부 상태 확인 행에서 Retry ()를 선택합니다. 상태 확인이 대기 상태로 돌아갑니다.
조직에는 외부 상태 확인이 통과하지 않으면 병합 요청을 병합할 수 없도록 하는 정책이 있을 수 있습니다. 그러나 위젯의 세부정보는 정보 제공을 위한 것입니다.
문제 해결
중복 값 오류
이름이 이미 사용 중입니다
---
외부 API가 다른 상태 확인에 의해 이미 사용 중입니다
프로젝트별로 상태 확인은 이름이나 API URL을 한 번만 사용할 수 있습니다.
이 오류는 상태 확인 이름 또는 API URL이 이 프로젝트의 상태 확인에서 이미 사용되었음을 의미합니다.
현재 상태 확인에서 다른 값을 선택하거나 기존 상태 확인의 값을 업데이트해야 합니다.
잘못된 URL 오류
유효한 URL을 제공하십시오
체크 필드에 대한 API는 제공된 URL이 HTTP 또는 HTTPs 프로토콜을 사용해야 합니다.
이 요구 사항을 충족하도록 필드 값을 업데이트해야 합니다.
검색 또는 검색 중 브랜치 목록 오류
브랜치 목록을 가져올 수 없습니다. 양식을 닫고 다시 시도하십시오.
브랜치 검색 API에서 예상치 못한 응답을 수신했습니다.
제안된 대로 양식을 닫고 다시 열거나 페이지를 새로 고쳐야 합니다.
이 오류는 일시적이어야 하지만, 계속되면 GitLab 상태 페이지를 확인하여 더 광범위한 장애가 있는지 확인하십시오.
상태 확인을 로드하지 못했습니다
상태 확인을 로드하지 못했습니다
외부 상태 확인 API에서 예상치 못한 응답을 수신했습니다.
다음과 같이 수행해야 합니다:
- 이 오류가 일시적일 수 있으므로 페이지를 새로 고칩니다.
- 문제가 지속되면 GitLab 상태 페이지를 확인하여 더 광범위한 장애가 있는지 확인합니다.