在同一组内克隆项目,并使用源项目 .github-ci.yml 作为目标项目中的模板

Clone project withing the same group, and use source project's .gitlab-ci.yml as a template in target project

有一个组主持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 模板,因为目标项目将由来自后端服务器的请求创建。

实现此目标的最有效方法是什么?

实现此目的的一种方法是使用以下 headers:

/api/v4/projects/ 发送 POST 请求
Content-Type: application/json
Private-Token: <gitlab token>

body喜欢:

{
    "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 立即从 parent 项目导入存储库。在我的例子中,整个 parent 项目的存储库可以用作 children 项目的模板,因此不需要进一步的操作。

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

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