Gitlab CI - 根据另一个变量计算变量名

Gitlab CI - Compute variable name based off another variable

我正在尝试使用一个部分编译自另一个变量(基于分支名称)的变量。我在 Gitlab 中配置了环境变量,如下所示:

Key: s3_bucket_development
Value: https://dev.my-bucket.com

Key: s3_bucket_production
Value: https://prod.my-bucket.com

我正在部署的分支称为开发分支,其想法是能够根据当前所在的分支动态调用 s3_bucket_development 变量。

到目前为止,我已经做到了这一点:

eval echo $s3_bucket_${CI_COMMIT_REF_NAME}

不幸的是,上面只输出 development 到控制台,而不是 $s3_bucket_development 的值,它应该是 https://dev.my-bucket.com

不确定我做错了什么?

从这个 link here 中复制了一点,但似乎不起作用

$ s3_bucket_development=test
$ CI_COMMIT_REF_NAME=development
$ eval echo $s3_bucket_${CI_COMMIT_REF_NAME}
test

您只需要对第一个 $ 进行转义,这样它就不会被过早地解析为变量。


此外,由于这是 gitlab ci 的特例 ci,我认为您可能以错误的方式解决了问题。在gitlab中,可以设置gitlab变量,定义什么显示在哪里。

  variables:
    s3_bucket: $s3_bucket
  environment:
    name: $CI_COMMIT_REF_NAME