代码之家  ›  专栏  ›  技术社区  ›  FranzHuber23

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

  •  3
  • FranzHuber23  · 技术社区  · 6 年前

    我想更改每个存储库的Gitlab镜像设置。有没有可能通过Gitlab API实现这一点?

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

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

    3 回复  |  直到 6 年前
        1
  •  1
  •   djuarezg    6 年前

    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
    

    URL的身份验证信息: https://username:password@gitlab.company.com/group/project.git 哪里 密码是启用api作用域的公共访问密钥

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

        2
  •  1
  •   FranzHuber23    6 年前
        3
  •  0
  •   user278978    5 年前

    我找不到镜像URL的API端点。你可以通过数据库破解,但我不知道如何从数据库中隐藏我使用的远程登录令牌(用于BitBucket)。当您通过web界面时,它必须对其进行加密或将其放置在导入url以外的其他位置。不管怎样,以下是我为一些新项目建立镜像所做的更改。您可以从gitlab psql控制台执行此操作。

    您需要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
    

    • 镜像用户id可能是您自己。
    • curl调用触发一个pull。你也可以通过网络界面来实现。