Для выполнения действия необходимы учётные данные password — токен GitLab пользователя, от имени которого будет выполнено действие.

CreateGitlabMergeRequestReview — создаёт merge request в GitLab из уже существующей ветки. В интерфейсе действие называется «Создать MR в Gitlab для существующей ветки».

В отличие от CreateGitlabMergeRequest, действие не создаёт ветку и не записывает файлы, а перед созданием проверяет открытые merge request проекта. Действие используется процессом обновления микросервиса из шаблона.

Пример запроса

skipReview: false
sourceBranch: ddp/template-upgrade-1.2.0
targetBranch: main
dedupBranchPrefix: ddp/template-upgrade-
repositoryRef:
  gitlabProjectId: "0"
mergeRequestSpec:
  title: Upgrade template
  description: Apply template upgrade changes

Спецификация запроса

НазваниеОбязательностьОписаниеЗначение по умолчанию
skipReviewНетПри значении true действие завершается успешно без создания merge requestfalse
sourceBranchДаСуществующая ветка с изменениями-
targetBranchНетВетка, в которую предлагаются изменения. Если не задана и действие выполняется для сущности микросервиса, используется значение роли маппинга microservice_default_branchmain
dedupBranchPrefixНетПрефикс веток для поиска открытых merge requestЗначение «Префикс ветки обновления» реестра шаблонов, иначе ddp/template-upgrade-
repositoryRef.gitlabProjectIdДаИдентификатор проекта GitLab. Если не задан и действие выполняется для сущности микросервиса, используется ID проекта микросервиса-
mergeRequestSpec.titleНетЗаголовок merge requestUpgrade template (<sourceBranch>)
mergeRequestSpec.descriptionНетОписание merge request-

Алгоритм работы

DDP:

  1. Запрашивает открытые merge request проекта, ветки которых начинаются с префикса dedupBranchPrefix.
  2. Если открыт merge request из ветки sourceBranch, завершает действие успешно и возвращает этот merge request.
  3. Если открыт merge request из другой ветки с тем же префиксом, завершает действие ошибкой review_already_open: open review for branch <branch> blocks <sourceBranch>.
  4. Иначе создаёт merge request из sourceBranch в targetBranch.

Проверяется одна страница из 100 открытых merge request проекта.

Ответ

Ответ действия содержит поля:

ПолеОписание
skippedtrue, если действие завершилось без создания merge request по skipReview
deduplicatedtrue, если возвращён уже открытый merge request
providerПровайдер системы контроля версий, gitlab
reviewIdНомер merge request (iid) в проекте
reviewUrlСсылка на merge request
sourceBranchВетка-источник
targetBranchЦелевая ветка

Примечание

Действие осуществляет GET- и POST-запросы по URL: /api/v4/projects/:id/merge_requests. Ошибка создания merge request возвращается с кодом review_create_failed.