克隆具有相同组的项目,并使用源项目的.gitlab-ci.yml作为目标项目中的模板

时间:2020-03-24 16:18:33

标签: gitlab gitlab-api gitlab-ce

有一个托管00_Parent_Project的组:源项目包含例如.gitlab-ci.yml模板:

Group
   [project] 00_Parent_Project
      [repo] .gitlab-ci.yml

如何使用GitLab API克隆源项目,以便目标项目已包含带有.gitlab-ci.yml的存储库?:

Group
   [project] 00_Parent_Project
      [repo] .gitlab-ci.yml

   [project] 01_Child_Project
      [repo] .gitlab-ci.yml

   [project] 02_Child_Project
      [repo] .gitlab-ci.yml

我不确定是否应该考虑在项目之间共享CI模板,因为目标项目将由来自后端服务器的请求创建。

最有效的方法是什么?

1 个答案:

答案 0 :(得分:0)

一种实现此目的的方法是使用以下标头POST发送/api/v4/projects/请求:

Content-Type: application/json
Private-Token: <gitlab token>

身体,例如:

{
    "name": "01_New_Child_Project",
    "namespace_id": <ID of a Group>,
    "description": "Project description here",
    "import_url": "https://username:password@gitlab.example.com/my_group/00_parent_project.git"
}

在创建新项目后,GitLab就从父项目导入存储库。就我而言,整个父项目的存储库都可以用作子项目的模板,因此无需采取进一步措施。

在其他情况下,可以通过API删除不必要的文件:GitLab Repository files API描述了此类操作。

要考虑的另一件事是重构代码,以使import_url值不以纯文本形式出现:为什么它包含用户名和密码!