Для выполнения действия необходимы учётные данные:

  • password — пароль (токен) пользователя, от имени которого будет выполнено действие;
  • username — имя пользователя, от имени которого будет выполнено действие.

UpgradeRepositoryFromTemplatePack — переносит в репозиторий микросервиса изменения новой версии пакета шаблона. В интерфейсе действие называется «Обновить репозиторий из пакета шаблонов».

Действие не изменяет основную ветку: оно создаёт ветку обновления с изменениями, которые затем предлагаются в merge request действием CreateGitlabMergeRequestReview. Механизм обновления описан в разделе «Обновление из шаблона».

Действие выполняется для сущности микросервиса.

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

templateVersion: 1.3.0
upgradeStrategy: selective
updateOverwrite:
  - .gitlab-ci.yml
updateAddIfMissing:
  - docs/CONTRIBUTING.md

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

Незаданные поля templateId, templatePackSource, targetRepositoryUrl и targetBranch заполняются из параметров сущности микросервиса по ролям правил маппинга.

НазваниеОбязательностьОписаниеЗначение по умолчанию
targetRepositoryUrlДаHTTPS-адрес репозитория микросервисаРоль microservice_repository
targetBranchНетВетка, от которой создаётся ветка обновленияРоль microservice_default_branch, затем «Ветка по умолчанию» реестра шаблонов, затем main
sourceBranchНетВетка, в которую записываются изменения<префикс ветки обновления><версия>, например ddp/template-upgrade-1.3.0
templateIdДаИдентификатор шаблонаРоль microservice_binding_template_id
templatePackSourceДаНазвание подключения в реестре шаблоновРоль microservice_binding_template_source
templateVersionНетЦелевая версия шаблона в формате semverПоследняя версия шаблона
upgradeStrategyНетСтратегия обновления: selective, additive, selective_additive, full или mergeПараметр микросервиса, затем стратегия пакета, затем selective
updateOverwriteНетGlob-шаблоны перезаписываемых путейПараметр микросервиса, затем список пакета
updateAddIfMissingНетGlob-шаблоны путей, добавляемых при отсутствииПараметр микросервиса, затем список пакета
valuesНетЗначения параметров шаблона. Объединяются со значениями из lock-файла-
additionalIgnorePatternsНетДополнительные glob-шаблоны путей, которые не отрисовываются и не копируются-
commitMessageНетСообщение коммитаchore(template): upgrade <id> <old> -> <new>

Стратегии и обязательные для них списки путей описаны в разделе «Стратегии обновления».

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

DDP:

  1. Клонирует ветку targetBranch и читает lock-файл .ddp/template.lock.yaml. Если версия в каталоге отличается от версии в lock-файле, исправляет параметр версии шаблона микросервиса.
  2. Если версия в lock-файле не ниже целевой, завершает действие успешно без изменений.
  3. Отрисовывает целевую версию пакета со значениями из lock-файла и из поля values.
  4. Создаёт ветку sourceBranch и применяет изменения по стратегии обновления. Файлы не удаляются.
  5. Записывает в lock-файл новую версию и значения параметров, создаёт коммит и отправляет ветку sourceBranch.

При конфликте слияния в стратегии merge в репозиторий ничего не записывается.

Ответ

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

ПолеОписание
templateIdИдентификатор шаблона
templateSourceНазвание подключения реестра
previousVersionВерсия шаблона до обновления
targetVersionЦелевая версия
sourceBranchВетка обновления
targetBranchВетка, от которой создана ветка обновления
strategyПрименённая стратегия
commitShaSHA коммита обновления
upgradeSkippedtrue, если репозиторий уже на целевой версии
versionDriftСведения об исправлении версии в каталоге по lock-файлу

Коды ошибок описаны в разделе «Устранение ошибок».