풀 미러링 API

Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

REST API를 사용하여 프로젝트의 풀 미러링을 관리할 수 있습니다.

프로젝트의 풀 미러 세부정보 가져오기

  • GitLab 15.6에서 도입됨.
  • GitLab 17.5에서 미러 구성 정보를 포함하도록 확장된 응답. 다음 구성 설정이 포함됩니다: enabled, mirror_trigger_builds, only_mirror_protected_branches, mirror_overwrites_diverged_branches, 및 mirror_branch_regex.

프로젝트의 풀 미러 세부정보를 반환합니다.

GET /projects/:id/mirror/pull  

지원되는 속성:

속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.

예시 요청:

curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/mirror/pull"  

성공하면 200 OK와 다음 응답 속성이 반환됩니다:

속성 유형 설명
id 정수 미러 구성의 고유 식별자.
last_error 문자열 또는 null 최근 오류 메시지, 있으면. 오류가 발생하지 않은 경우는 null.
last_successful_update_at 문자열 마지막 성공적인 미러 업데이트의 타임스탬프.
last_update_at 문자열 가장 최근의 미러 업데이트 시도 타임스탬프.
last_update_started_at 문자열 마지막 미러 업데이트 프로세스가 시작된 타임스탬프.
update_status 문자열 미러 업데이트 프로세스의 상태.
url 문자열 미러링된 저장소의 URL.
enabled 부울 미러가 활성 상태인지 비활성 상태인지를 나타냅니다.
mirror_trigger_builds 부울 미러 업데이트에 대한 빌드를 트리거해야 하는지 여부를 결정합니다.
only_mirror_protected_branches 부울 또는 null 보호된 브랜치만 미러링해야 하는지 여부를 지정합니다. 설정되지 않은 경우는 null.
mirror_overwrites_diverged_branches 부울 미러링 중에 분기된 브랜치를 덮어써야 하는지 여부를 나타냅니다.
mirror_branch_regex 문자열 또는 null 미러링할 브랜치를 필터링하는 정규 표현식 패턴. 설정되지 않은 경우는 null.

예시 응답:

{  
  "id": 101486,  
  "last_error": null,  
  "last_successful_update_at": "2020-01-06T17:32:02.823Z",  
  "last_update_at": "2020-01-06T17:32:02.823Z",  
  "last_update_started_at": "2020-01-06T17:31:55.864Z",  
  "update_status": "finished",  
  "url": "https://*****:*****@gitlab.com/gitlab-org/security/gitlab.git",  
  "enabled": true,  
  "mirror_trigger_builds": true,  
  "only_mirror_protected_branches": null,  
  "mirror_overwrites_diverged_branches": false,  
  "mirror_branch_regex": null  
}  

프로젝트에 대한 풀 미러링 구성

원격 저장소에 공개적으로 접근할 수 있거나 username:token 인증을 사용하여 API로 새 프로젝트 생성 또는 기존 프로젝트 업데이트 시 풀 미러링을 구성하세요.

HTTP 저장소에 공개적으로 접근할 수 없는 경우 URL에 인증 정보를 추가할 수 있습니다. 예를 들어, https://username:token@gitlab.company.com/group/project.git에서 token개인 접근 토큰으로 api 범위가 활성화된 것입니다.

지원되는 속성:

속성 유형 필수 설명
import_url 문자열 미러링되는 원격 저장소의 URL(필요한 경우 user:token 포함).
mirror 부울 true로 설정 시 프로젝트에 풀 미러링을 활성화합니다.
mirror_trigger_builds 부울 아니요 true로 설정 시 미러 업데이트에 대한 파이프라인을 트리거합니다.
only_mirror_protected_branches 부울 아니요 true로 설정 시 미러링을 보호된 브랜치로만 제한합니다.
mirror_branch_regex 문자열 아니요 정규 표현식이 포함되어 있습니다. 정규 표현식과 일치하는 이름의 브랜치만 미러링됩니다. only_mirror_protected_branches가 비활성화되어 있어야 합니다.

풀 미러링으로 프로젝트 생성 예시:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
 --header "Content-Type: application/json" \
 --data '{
  "name": "new_project",
  "namespace_id": "1",
  "mirror": true,
  "import_url": "https://username:token@gitlab.example.com/group/project.git"
 }' \
 --url "https://gitlab.example.com/api/v4/projects/"

풀 미러링 추가 예시:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
 --url "https://gitlab.example.com/api/v4/projects/:id" \
 --data "mirror=true&import_url=https://username:token@gitlab.example.com/group/project.git"

풀 미러링 제거 예시:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
 --url "https://gitlab.example.com/api/v4/projects/:id"  \
 --data "mirror=false"

프로젝트에 대한 풀 미러링 프로세스 시작

프로젝트에 대한 풀 미러링 프로세스를 시작합니다.

POST /projects/:id/mirror/pull

지원되는 속성:

속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로입니다.

요청 예시:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/mirror/pull"