如何通过API在Gitlab中更改镜像设置?

时间:2018-09-28 11:55:55

标签: api github gitlab mirror mirroring

我想更改每个存储库的Gitlab镜像设置。是否可以通过Gitlab API做到这一点?

Gitlab WebUi允许的选项如下: enter image description here

如何通过API进行更改?

备注:这不是与"How can I tell Gitlab to mirror my Github repositories over the API?"相同的问题,因为我的问题是如何开始镜像,在这里我想知道如何更改镜像设置。

3 个答案:

答案 0 :(得分:1)

https://docs.gitlab.com/ee/api/projects.html#edit-project上,有几个参数可以配置拉镜像:

> mirror
> mirror_user_id
> mirror_trigger_builds
> only_mirror_protected_branches
> mirror_overwrites_diverged_branches
  

注意:如果您的HTTP存储库不可公开访问,请添加   URL的身份验证信息:   https://username:password@gitlab.company.com/group/project.git其中   密码是启用了api范围的公共访问密钥

有关尚未实现推送镜像的通知:https://gitlab.com/gitlab-org/gitlab-ee/issues/7599

答案 1 :(得分:1)

如果有人搜索脚本,我会将其放在这里:https://github.com/SeppPenner/GitlabAutoPullMirroring(在此处镜像:https://gitlab.com/SeppPenner/GitlabAutoPullMirroring

答案 2 :(得分:0)

我无法找到镜像URL的API端点。您可以通过数据库对此进行某种分类,但是我无法弄清楚如何使我从数据库中使用的远程登录令牌(对于BitBucket)难以理解。当您通过Web界面访问时,它必须对其进行加密或将其放置在import_url之外的其他位置。无论如何,这是我为了为一些新项目建立镜像而进行​​的更改。您可以从gitlab-psql控制台执行此操作。

同样,只想重复一次,将在数据库中公开URL(包括密码),并且您可能不希望长期使用。就我而言,我最初从BitBucket导入了100多个存储库,我们打算在几周后关闭镜像。

您需要GitLab项目ID。

UPDATE projects SET import_type = 'bare_repository' WHERE id=123;
UPDATE projects SET import_url = 'https://[user]:[API token]@bitbucket.org/path/to/repo.git' WHERE id=123;
UPDATE projects SET mirror_user_id = '21' WHERE id=123;
UPDATE projects SET mirror = 't' WHERE id=123;
UPDATE projects SET only_mirror_protected_branches = 'f' WHERE id=123;
UPDATE projects SET mirror_overwrites_diverged_branches = 'f' WHERE id=123;
UPDATE project_mirror_data SET next_execution_timestamp = '2018-07-01 00:42:47.701103' WHERE project_id=123;

curl --header "PRIVATE-TOKEN:[your_gitlab_private_token]" --request POST https://gitlab.yourdomain.com/api/v4/projects/123/mirror/pull

注意:

  • mirror_user_id可能是您自己。
  • next_execution_timestamp似乎不能为空,在其中添加任何日期。
  • curl调用触发拉动。您也可以通过Web界面执行此操作。