Для выполнения действия необходимы учётные данные:
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:
- Клонирует ветку
targetBranchи читает lock-файл.ddp/template.lock.yaml. Если версия в каталоге отличается от версии в lock-файле, исправляет параметр версии шаблона микросервиса. - Если версия в lock-файле не ниже целевой, завершает действие успешно без изменений.
- Отрисовывает целевую версию пакета со значениями из lock-файла и из поля
values. - Создаёт ветку
sourceBranchи применяет изменения по стратегии обновления. Файлы не удаляются. - Записывает в lock-файл новую версию и значения параметров, создаёт коммит и отправляет ветку
sourceBranch.
При конфликте слияния в стратегии merge в репозиторий ничего не записывается.
Ответ
Ответ действия содержит поля:
| Поле | Описание |
|---|---|
templateId | Идентификатор шаблона |
templateSource | Название подключения реестра |
previousVersion | Версия шаблона до обновления |
targetVersion | Целевая версия |
sourceBranch | Ветка обновления |
targetBranch | Ветка, от которой создана ветка обновления |
strategy | Применённая стратегия |
commitSha | SHA коммита обновления |
upgradeSkipped | true, если репозиторий уже на целевой версии |
versionDrift | Сведения об исправлении версии в каталоге по lock-файлу |
Коды ошибок описаны в разделе «Устранение ошибок».