Клонируйте проект в одной группе и используйте исходный проект .gitlab-ci.yml в качестве шаблона в целевом проекте. - PullRequest
0 голосов
/ 24 марта 2020

Существует группа, в которой размещается 00_Parent_Project: исходный проект, содержащий, например, .gitlab-ci.yml template:

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 голосов
/ 25 марта 2020

Одним из способов достижения этого является отправка POST запроса на /api/v4/projects/ со следующими заголовками :

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 импортирует репозиторий из родительского проекта. В моем случае репозиторий всего родительского проекта можно использовать в качестве шаблона для дочерних проектов, поэтому никаких дальнейших действий не требуется.

В других случаях ненужные файлы могут быть удалены через API: Файлы репозитория GitLab API описывает такие действия.

Еще одна вещь, которую следует учитывать, - это рефакторинг кода, чтобы значение import_url отсутствовало в виде простого текста: почему оно содержит имя пользователя и пароль!

...