Gitlab CI 作业中的变量

Gitlab CI variables in jobs

我在定义工作时遇到了一些问题。我正处于定义我的管道的早期阶段,我正在尝试用变量解决我的问题 :)。我在 gcp/live/development 下有几个子文件夹,我正在尝试 cd 它们,然后 运行 terraform 东西:

.plan-development:
  variables:
    ENVIRONMENT: "development"
    TERRAFORM_DEVELOPMENT_PATH: "gcp/live/development"
    TF_ROOT: ${TERRAFORM_DEVELOPMENT_PATH}/${CI_JOB_NAME%-plan-development}
  stage: plan-development
  script:
    - cd ${TF_ROOT}
    - gitlab-terraform plan
    - gitlab-terraform plan-json
  artifacts:
    name: plan-${ENVIRONMENT}-${CI_JOB_NAME%-plan-development}
    paths:
      - ${TF_ROOT}/plan.cache
    reports:
      terraform: ${TF_ROOT}/plan.json

但是根据我失败的管道,第一个脚本部分 cd ${TF_ROOT} 没有进入 gcp/live/development/cloud-nat 的预期文件夹。

我有一些调试输出,它告诉我以下内容:

$ cd ${TF_ROOT}
$ pwd && ls
/builds/b79ya_1j/0/devops/terraform/gcp/live/development
cloud-nat
firewall
gke
vpc
$ echo "${CI_JOB_NAME%-plan-development}"
cloud-nat

我是否遗漏了结合两个变量 (TF_ROOT: ${TERRAFORM_DEVELOPMENT_PATH}/${CI_JOB_NAME%-plan-development}) 的内容?

希望你能帮帮我。

Am I missing something combing two variables (TF_ROOT: ${TERRAFORM_DEVELOPMENT_PATH}/${CI_JOB_NAME%-plan-development})?

问题是 variables section 中的 Gitlab 不执行 bash 操作,就像您在此处尝试的那样

${CI_JOB_NAME%-plan-development}

Gitlab literally搜索名为CI_JOB_NAME%-plan-development

的变量

这就是为什么当它创建 TF_ROOT 变量时它的值为 gcp/live/development/ 因为它找不到名为 CI_JOB_NAME%-plan-development[= 的变量17=]