一个简单的请求,但找不到任何示例。
假设,我想设置一个环境变量,取决于分支名称。
类似这样的东西(当然,这段代码不起作用)
variables:
rules:
- if: '$CI_COMMIT_BRANCH != "master"'
variables:
env: "dev"
- if: '$CI_COMMIT_BRANCH == "master"'
variables:
env: "prod"
stackName: projectA-${env}
因此 stackName 或其他变量可以使用 ${env}
作为名称后缀,我也可以在 jobs 、 script 或 stage 中使用 ${env}
如何设置?
最佳答案
变量env
或stackName
可以在两个不同的作业中设置,这两个作业根据分支按照规则运行。您可以定义一个模板作业,为两个环境做同样的事情。例如,使用模板定义两个这样的作业:
.template-job:
script:
- echo $STACK_NAME
prod-job:
variables:
STACK_NAME: projectA-prod
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
extends: .template-job
dev-job:
variables:
STACK_NAME: projectA-dev
rules:
- if: '$CI_COMMIT_BRANCH != "master"'
extends: .template-job
使用它,您有两个作业,但它们扩展了相同的template-job
,该模板使用变量$STACK_NAME
。您当然可以将其命名为 ENV
或其他名称。
关于gitlab - if gitlab-ci.yml 中的条件变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72446777/