Для выполнения действия необходимы учётные данные:
password— пароль (токен) пользователя, от имени которого будет запускаться выполнение действия.username— имя пользователя, от которого будет запускаться выполнение действия.
CreateGitlabMergeRequest — создаёт новый Merge Request (MR) в целевом репозитории. В Merge Request добавляются файлы, хранящиеся в репозитории-источнике. Файлы могут содержать переменные, значение которых будет подставлено в момент создания MR.
Пример запроса
source_project_id: '0'
source_project_branch: example
source_project_tag: v1.0.0
target_project_id: '0'
merge_request_spec:
source_branch: example
target_branch: '1'
title: example
additionalIgnoreFiles:
- .ignore
- .example
values:
key1: value1
nested:
enabled: true
subkey: 123Спецификация запроса
| Название | Обязательность | Описание | Значение по умолчанию |
|---|---|---|---|
| source_project_id | Да | Идентификатор проекта, который служит источником для Merge Request | - |
| target_project_id | Да | Идентификатор целевого проекта, в котором будет сформирован Merge Request | - |
| merge_request_spec | Да | Спецификация, соответствующая GitLab Merge Requests API | - |
| source_project_tag | Нет | Тег в проекте-источнике, из которого будет сформирован Merge Request. Если не указан, используется ветка в проекте-источнике | - |
| source_project_branch | Нет | Ветка в проекте-источнике, из которой будет сформирован Merge Request | main |
| additionalIgnoreFiles | Нет | Список файлов, содержащих пути для исключения из MR. Заполняется по аналогии с .templateignore | - |
| values | Нет | Переменные, используемые при шаблонизации, в формате ключ: значение | - |
Алгоритм работы
Платформа:
- Клонирует репозиторий-шаблон для генерации MR по его идентификатору (
source_project_id). Подробнее — в «Деталях работы». - Считывает файл
values.yaml, хранящийся в корне репозитория, и определяет переменные по умолчанию для шаблонизации. - Считывает переменные, передаваемые при запуске действия, и объединяет (merge) их с переменными из
values.yaml. Приоритет отдаётся переменным, передаваемым при запуске действия. - Считывает файл
.templateignoreи определяет директории и файлы, исключаемые из шаблонизации. - Рендерит файлы из шаблонов, учитывая
values.yamlи переданных в действие переменных. - Изменяет удалённый (remote) репозиторий на целевой, согласно его ID (
target_project_id), и выполняет git push в ветку в проекте-источнике (source_project_branch), либо в основную веткуmain. - Создаёт MR согласно заданным настройкам путём отправки POST-запроса в GitLab API.
Примечание
Действие осуществляет POST-запрос по URL: /api/v4/projects/:id/merge_requests.