Задание ветвления, в котором свойство ветвления свойства триггера использует переменную, всегда будет терпеть неудачу по причине: нисходящий конвейер не может быть создан.
Шаги для воспроизведения
- Настройте нисходящий конвейер со свойством
trigger
, как обычно. - Добавьте свойство
branch
к свойству триггера. Напишите имя существующей ветки в репозитории ниже по потоку, например master
/ main
или имя ветки функции. - Запустите конвейер и убедитесь, что конвейер вниз по течению успешно создан.
- Теперь измените свойство
branch
, чтобы вместо этого использовалась переменная, например branch: $CI_TARGET_BRANCH
. - Вручную запустите конвейер CI с этим, задав переменную через GitLab GUI.
- Задание немедленно завершится ошибкой по причине: нисходящий конвейер не может быть создан.
Пример кода
Цель состоит в том, чтобы создать конфигурацию 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 поискал другие файлы конфигурации .gitlab-ci.yml / GitLab. Каждый, кто пытался использовать расширение переменной в свойстве ветки, закомментировал это, сказав, что это было ошибкой по неизвестной причине ( пример .
- Я не смог найти репозиторий, в котором кто-то утверждал, что у него есть расширение рабочей переменной для свойства
branch
свойства триггера.
- К сожалению, альтернативные решения либо (а) жестко кодируют каждое имя дочерней ветви в конфигурация GitLab CI восходящего проекта или (б) невозможность протестировать изменения в нисходящей конфигурации GitLab CI без предварительной фиксации их в
master
/ main
или необходимости использовать only
/ except
.
TL; DR : как использовать значение переменной для свойства ветвления задания моста? Мое текущее решение делает это поэтому задание завершается ошибкой и последующий конвейер не создается.