Задание ветвления, в котором свойство ветвления свойства триггера использует переменную, всегда будет терпеть неудачу по причине: нисходящий конвейер не может быть создан.
Действия по воспроизведению
- Настройте нисходящий конвейер со свойством
trigger
, как обычно. - Добавьте свойство
branch
к свойству триггера. Напишите имя существующей ветки в нижележащем репозитории, например _3 _ / _ 4_, или имя ветки функции. - Запустите конвейер и убедитесь, что последующий конвейер успешно создан.
- Теперь измените свойство
branch
, чтобы вместо него использовалась переменная, напримерbranch: $CI_TARGET_BRANCH
. - Вручную запустите конвейер CI с этим, задав переменную через графический интерфейс GitLab.
- Задание немедленно завершится ошибкой по причине: нисходящий трубопровод не может быть создан.
Пример кода
Цель состоит в том, чтобы создать конфигурацию GitLab CI, которая запускает конвейер указанной нижестоящей ветви. Ошибка возникает при попытке сделать это с переменной.
Это работает, создавая нисходящий конвейер, как обычно. Но имя ветки жестко запрограммировано:
stages:
- deploy
deploy:
variables:
environment: dev
stage: deploy
trigger:
project: group/project
branch: foo
strategy: depend
Это не работает; хотя TARGET_BRANCH
установлен успешно, задание не выполняется, потому что нисходящий конвейер не может быть создан:
stages:
- removeme
- deploy
before_script:
- if [ -z "$TARGET_BRANCH" ]; then TARGET_BRANCH="main"; fi
- echo $TARGET_BRANCH
test_variable:
stage: removeme
script:
- echo $TARGET_BRANCH
deploy:
variables:
environment: dev
stage: deploy
trigger:
project: group/project
branch: $TARGET_BRANCH
strategy: depend
Если вы знаете, что я делаю неправильно, или у вас есть что-то, что работает с расширением переменных свойства ветки, поделитесь этим (вместе со своей версией GitLab). Альтернативные решения также приветствуются, но кажется, что это должно сработать.
Версия GitLab, в которой возникает ошибка
Самостоятельная версия GitLab Community Edition 12.10.7
Каково текущее поведение ошибки?
Работа всегда терпит неудачу по причине: нисходящий трубопровод не может быть создан.
Какое поведение ожидается правильным?
Свойству branch
должно быть присвоено значение переменной, и последующий конвейер должен быть создан как обычно, как если бы вы просто жестко запрограммировали / набрали имя ветки.
Подробнее
- Возможность использовать расширение переменной в свойстве ветви триггера была добавлена в v12.4, а явно упоминается в документации.
- I searched for other .gitlab-ci.yml / GitLab config files. Every single one that attempted to use variable expansion in the branch property had it commented out, saying it was bugged for an unknown reason (example.
- I haven't been able to find a repository in which someone claimed to have a working variable expansion for the
branch
property of the trigger property.
- I haven't been able to find a repository in which someone claimed to have a working variable expansion for the
- К сожалению, альтернативными решениями являются либо (а) жесткое кодирование каждого имени дочерней ветки в конфигурацию GitLab CI восходящего проекта, либо (б) невозможность протестировать изменения в нижней части конфигурации GitLab CI без предварительной фиксации их в _12 _ / _ 13_, или вам необходимо использовать _14 _ / _ 15_.
TL; DR: как использовать значение переменной для свойства ветвления задания моста? Мое текущее решение позволяет избежать сбоя задания и не создавать конвейер ниже по потоку.