Наша команда создает проект компонента CI/CD для выполнения общих задач по развертыванию. В этом сценарии у нас есть компонент terraform
, который инициализирует и применяет код терраформирования.
Вот как выглядит наш основной код конвейера.
# .gitlab-ci.yml
stages:
- deploy
deploy-environment-alpha:
stage: deploy
include:
- local: path/to/deploy.yml
# Trigger downstream pipeline with component(s)
trigger-downstream-pipeline:
stage: triggers
trigger:
include:
- local: path/to/deploy.yml
strategy: depend
#### Additional CD triggers ...
Учитывая приведенное ниже содержимое файла path/to/deploy.yml, конвейер работает должным образом. Он запускает дочерний конвейер и импортирует компонент.
# path/to/deploy.yml
include:
- component: /path/to/[email protected]
inputs:
job-name: deploy-alpha
job-stage: deploy
foo: alpha
Теперь я хочу обновить файл Deploy.yml, включив в него два компонента.
# path/to/deploy.yml
include:
- component: /path/to/[email protected]
inputs:
job-name: deploy-alpha
job-stage: deploy
foo: alpha
# path/to/deploy.yml
include:
- component: /path/to/[email protected]
inputs:
job-name: deploy-beta
job-stage: deploy
foo: beta
По какой-то причине Gitlab показывает только задание развертывания альфа-версии. Есть ли причина, по которой он игнорирует бета-версию развертывания?
Ключевое слово include
является глобальным и поэтому не принадлежит ни одному заданию. Честно говоря, я удивлен, что ваша фактическая настройка работает, поскольку ключевое слово include
не должно использоваться в задании, как указано в документации :
Тип ключевого слова: глобальное ключевое слово.
Тем не менее, я думаю, что то, чего вы хотите достичь, можно сделать по-другому. Учитывая пример компонента:
spec:
inputs:
foo:
default: alpha
---
deploy-environment-alpha:
stage: $[[ inputs.foo ]]
script: echo "Deploy alpha"
deploy-environment-beta:
stage: $[[ inputs.foo ]]
script: echo "Deploy beta"
Затем вы можете ссылаться на него несколько раз в своем файле yaml
:
stages: [alpha, beta]
include:
- component: /path/to/[email protected]
inputs:
foo: alpha
- component: /path/to/[email protected]
inputs:
foo: beta
Ключом было наличие одного ключевого слова включения со всеми перечисленными элементами. Спасибо за вашу помощь!
Пожалуйста, рад, что помог! :)
Вы правы: в исходном сообщении у меня был неверный код CI. Я обновлю, чтобы исправить это.