#continuous-integration #gitlab #include #gitlab-ci
#непрерывная интеграция #gitlab #включить #gitlab-ci
Вопрос:
Чтобы улучшить структуру моего файла Gitlab CI, я включаю некоторые конкретные файлы, например,
include:
- '/ci/config/linux.yml'
- '/ci/config/windows.yml'
# ... more includes
Чтобы избежать подверженной ошибкам избыточности пути, я подумал поместить его в переменную, например:
variables:
CI_CONFIG_DIR: '/ci/config'
include:
- '${CI_CONFIG_DIR}/linux.yml' # ERROR: "Local file `${CI_CONFIG_DIR}/linux.yml` does not exist!"
- '${CI_CONFIG_DIR}/windows.yml'
# ... more includes
Но это не работает. Gitlab CI утверждает, что ${CI_CONFIG_DIR}/linux.yml
этого не существует, хотя в документации говорится, что переменные во включаемых путях разрешены, см. https://docs.gitlab.com/ee/ci/variables/where_variables_can_be_used.html#gitlab-ciyml-file .
Что также не сработало, так это включить файл /ci/config/main.yml
и из него включить конкретные конфигурации без путей:
# /ci/config/main.yml
include:
- 'linux.yml' # ERROR: "Local file `linux.yml` does not exist!"
- 'windows.yml'
# ... more includes
Как я могу заставить это работать или есть альтернатива для определения пути только в одном месте, не делая его слишком сложным?
Ответ №1:
Похоже, на данный момент это не реализовано, и на данный момент в отставании есть открытая проблема.
Кроме того, в документации говорится, что вы можете использовать variables
в include
разделах, они предназначены только для предопределенных переменных.
Комментарии:
1. Спасибо. Я боялся, что это будет ответ, но надеялся на что-то другое. По крайней мере, теперь я знаю, что люди работают над этим. Что касается документов, вы заставили меня понять, что я не уделял достаточного внимания пунктуации, а именно двоеточию, поэтому я подумал, что ограничен только именами для своих собственных переменных.
2. Приведенный пример показывает, что он не только предопределен: OUT_PATH и PACKAGE_PATH были динамически сгенерированы из предопределенного, но можно предположить, что предопределенное также может быть заменено строкой, и вы могли бы заставить его работать; просто сделав это примечание.
Ответ №2:
Посмотрите, может ли помочь GitLab 14.2 (август 2021):
Используйте переменные CI / CD в операторах include в .gitlab-ci.yml
Теперь вы можете использовать переменные как часть
include
инструкций в.gitlab-ci.yml
файлах.
Эти переменные могут быть переменными экземпляра, группы или проекта CI / CD.Это улучшение обеспечивает большую гибкость при определении конвейеров.
Вы можете скопировать один и тот же.gitlab-ci.yml
файл в несколько проектов и использовать переменные для изменения его поведения.
Это позволяет уменьшить дублирование в.gitlab-ci.yml
файле и уменьшает необходимость сложной настройки для каждого проекта.См. Документацию и проблему.
Комментарии:
1. Спасибо, что указали на это. Теперь я с нетерпением жду, когда моя организация обновится до 14.2 (в настоящее время мы находимся на 14.0), чтобы попробовать это.
2. @bjhend OK. Не забудьте обновить эту страницу, если это действительно работает.