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

问题描述 投票:3回答:3

我想更改每个存储库的Gitlab镜像设置。是否可以通过Gitlab API执行此操作?

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

如何通过API更改它们?

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

api github gitlab mirror mirroring
3个回答
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:[email protected]/group/project.git,其中password是启用了api范围的公共访问密钥

请注意,尚未实现推送镜像:https://gitlab.com/gitlab-org/gitlab-ee/issues/7599


1
投票

如果有人搜索它,我把我的脚本放在这里:https://github.com/SeppPenner/GitlabAutoPullMirroring(镜像在这里:https://gitlab.com/SeppPenner/GitlabAutoPullMirroring


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似乎不能为空,在那里放任何日期。
  • 卷曲调用会触发拉动。您也可以通过Web界面执行此操作。
© www.soinside.com 2019 - 2024. All rights reserved.