我们的团队正在创建一个 CI/CD 组件项目来运行常见的部署任务。在这种情况下,我们有一个名为
terraform
的组件,它初始化并应用 terraform 代码。
这是我们的主要管道代码的样子。
# .gitlab-ci.yml
stages:
- deploy
deploy-environment-alpha:
stage: deploy
include:
- local: path/to/deploy.yml
#### Some other configuration
鉴于 path/to/deploy.yml 的以下内容,管道按预期工作。它触发子管道并导入组件。
# path/to/deploy.yml
deploy-environment-alpha:
stage: deploy
include:
- component: /path/to/[email protected]
inputs:
foo: alpha
现在,我想更新deploy.yml以包含两个组件。
# path/to/deploy.yml
deploy-environment-alpha:
stage: deploy
include:
- component: /path/to/[email protected]
inputs:
foo: alpha
deploy-environment-beta:
stage: deploy
include:
- component: /path/to/[email protected]
inputs:
foo: beta
由于某种原因,Gitlab 仅显示 deploy-environment-alpha 作业。它有什么理由忽略 deploy-environment-beta?
include
关键字是全局的,因此不属于任何作业。老实说,我很惊讶您的实际设置确实有效,因为 include
关键字不应该在作业中使用,如 docs 指定的那样:
关键字类型:全局关键字。
也就是说,我认为你想要实现的目标可以通过不同的方式来完成。给定一个示例组件:
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