풀 미러링 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
}

프로젝트의 풀 미러링 구성

  • mirror_branch_regex 필드는 GitLab 15.8에서 도입되었으며 기본적으로 mirror_only_branches_match_regex라는 플래그와 함께 사용됩니다. 기본값은 비활성화됩니다.
  • GitLab 16.0에서 기본적으로 활성화됩니다.
  • GitLab 16.2에서 일반적으로 사용 가능합니다. 기능 플래그 mirror_only_branches_match_regex가 제거되었습니다.

원격 저장소가 공개적으로 접근 가능한 경우, API를 사용하여 새 프로젝트를 만들거나 기존 프로젝트를 업데이트하는 동안 풀 미러링을 구성할 수 있습니다. HTTP 저장소에 공개 액세스 권한이 없는 경우, URL에 인증 정보를 추가할 수 있습니다. 예를 들어, https://username:token@gitlab.company.com/group/project.git에서 tokenapi 스코프가 활성화된 개인 액세스 토큰입니다.

지원되는 속성:

속성 유형 필수 설명
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"

프로젝트의 Pull 미러링 프로세스 시작하기

프로젝트의 Pull 미러링 프로세스를 시작합니다.

POST /projects/:id/mirror/pull

지원되는 속성:

속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL-encoded 경로.

예시 요청:

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