保护远端镜像 API

在项目仓库设置中定义的推送镜像被称为“远端镜像”。您可以使用远端镜像 API 查询和修改这些镜像的状态。

出于安全原因,API 响应中的 url 参数始终会清除用户名和密码信息。

note 拉取镜像使用不同的 API 端点以进行显示和更新。

列出项目的远端镜像

返回远端镜像及其状态的阵列:

GET /projects/:id/remote_mirrors

请求示例:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/42/remote_mirrors"

响应示例:

[
  {
    "enabled": true,
    "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",
    "only_protected_branches": true,
    "keep_divergent_refs": true,
    "update_status": "finished",
    "url": "https://*****:*****@gitlab.com/gitlab-org/security/gitlab.git"
  }
]

获取单个项目的远端镜像

引入于极狐GitLab 14.10。

返回远端镜像及其状态:

GET /projects/:id/remote_mirrors/:mirror_id

请求示例:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486"

响应示例:

{
  "enabled": true,
  "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",
  "only_protected_branches": true,
  "keep_divergent_refs": true,
  "update_status": "finished",
  "url": "https://*****:*****@gitlab.com/gitlab-org/security/gitlab.git"
}

创建拉取镜像

学习如何使用保护 API 配置拉取镜像

创建推送镜像

  • 字段 mirror_branch_regex 引入于极狐GitLab 15.8,功能标志mirror_only_branches_match_regex。默认禁用。
  • 默认启用于极狐GitLab 16.0。
  • 一般可用于极狐GitLab 16.2。移除功能标志 mirror_only_branches_match_regex

推送镜像默认禁用。您可以在创建镜像的时候包括可选参数 enabled 来进行开启:

POST /projects/:id/remote_mirrors
参数 类型 是否必需 描述
url String yes 仓库要镜像到的目的 URL
enabled Boolean no 镜像是否开启
only_protected_branches Boolean no 是否只镜像受保护的分支
keep_divergent_refs Boolean no 是否跳过不同的引用
mirror_branch_regex String no 包含正则表达式。仅镜像名称与正则表达式匹配的分支。需要禁用 only_protected_branches

请求示例:

curl --request POST --data "url=https://username:token@example.com/gitlab/example.git" \
     --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/42/remote_mirrors"

响应示例:

{
    "enabled": false,
    "id": 101486,
    "last_error": null,
    "last_successful_update_at": null,
    "last_update_at": null,
    "last_update_started_at": null,
    "only_protected_branches": false,
    "keep_divergent_refs": false,
    "update_status": "none",
    "url": "https://*****:*****@example.com/gitlab/example.git"
}

更新远端镜像的参数

打开或关闭远端镜像,或更改镜像的分支类型:

PUT /projects/:id/remote_mirrors/:mirror_id
参数 类型 是否必需 描述
mirror_id Integer yes 远端镜像 ID
enabled Boolean no 镜像是否开启
only_protected_branches Boolean no 是否只镜像受保护的分支
keep_divergent_refs Boolean no 是否跳过不同的引用
mirror_branch_regex String no 确定是否仅镜像名称与正则表达式匹配的分支。only_protected_branches 启用时不可用

请求示例:

curl --request PUT --data "enabled=false" --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486"

响应示例:

{
    "enabled": false,
    "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",
    "only_protected_branches": true,
    "keep_divergent_refs": true,
    "update_status": "finished",
    "url": "https://*****:*****@gitlab.com/gitlab-org/security/gitlab.git"
}

删除远端镜像

引入于极狐GitLab 14.10。

删除远端镜像。

DELETE /projects/:id/remote_mirrors/:mirror_id
参数 类型 是否必需 描述
mirror_id Integer yes 远端镜像 ID

请求示例:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/42/remote_mirrors/101486"