是否可以在 Gitlab 管道上执行多个 CI/CD 组件?

问题描述 投票:0回答:1

我们的团队正在创建一个 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

gitlab gitlab-ci
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.