【发布时间】:2022-01-10 01:35:28
【问题描述】:
在我的 Gitlab 项目中,我设置了 Gitlab 变量 MY_VAR_DEV 和 MY_VAR_PROD。
根据提交分支,我希望 CI/CD 管道(.gitlab-ci.yml 文件)上有不同的行为,根据以下代码:
- if [ $CI_COMMIT_BRANCH == "dev" ]; then export ENV="DEV"; fi
- if [ $CI_COMMIT_BRANCH == "prod" ]; then export ENV="PROD"; fi
- TMP_MY_VAR="MY_VAR_${ENV}"
- export MY_VAR=$( eval echo \$$TMP_MY_VAR )
#- ... bla bla with $MY_VAR use
有没有办法合并最后两行并直接影响MY_VAR MY_VAR_${ENV} 的评估值? (我的意思是不要使用TMP_MY_VAR)
感谢您的帮助:)
【问题讨论】:
-
顺便说一句,BashFAQ #6 是该主题的综合资源。
-
另外,
[ $CI_COMMIT_BRANCH == "dev" ]引用了完全错误的内容。健壮正确的代码看起来像[ "$CI_COMMIT_BRANCH" = dev ]——常量不需要引用;参数扩展 确实 需要引用才能正确处理所有可能的值;test的唯一 POSIX 标准字符串比较运算符是=,而不是==。
标签: bash shell variables gitlab-ci indirection