environment-variables - 特拉维斯 : Can you construct env var using other env vars?

标签 environment-variables travis-ci

我想要做的是设置我的 travis.yml 以根据正在构建的分支使用适当命名的环境变量。

我在想,如果我已经存储在 travis $DEV_ARTIFACTS_KEY/$TEST_ARTIFACTS_KEY 等

然后我推送到 DEV 分支,所以 $TRAVIS_BRANCH = DEV

然后我可以执行以下操作:ARTIFACTS_KEY=${$TRAVIS_BRANCH}_ARTIFACTS_KEY
它变成:ARTIFACTS_KEY=$DEV_ARTIFACTS_KEY

显然,上面带有 {} 的语法不起作用,否则我不会在这里!想知道理论上这种方法是否可行,如果可行,如何!?

编辑:有关我正在尝试做什么的更多详细信息

我想以上述方式设置 3 个变量。

ARTIFACTS_KEY、ARTIFACTS_SECRET 和 ARTIFACTS_BUCKET 从
{BRANCH}_ARTIFACTS_KEY、{BRANCH}_ARTIFACTS_SECRET、{BRANCH}_ARTIFACTS_BUCKET

我让它在没有分支变量的情况下工作,例如:

env:
  - ARTIFACTS_KEY=$DEV_ARTIFACTS_KEY ARTIFACTS_SECRET=$DEV_ARTIFACTS_SECRET ARTIFACTS_BUCKET=$DEV_ARTIFACTS_BUCKET

其中 $DEV_ARTIFACTS_KEY 等是在 Travis 中定义的。但是,到目前为止,我未能即时用分支名称替换 DEV 部分。

最佳答案

这适用于 bash,因此也适用于 Travis:

# setup dummy values
TRAVIS_BRANCH=DEV
DEV_ARTIFACTS_KEY=dev-artifacts-key-value
DEV_ARTIFACTS_SECRET=dev-artifacts-secret-value
DEV_ARTIFACTS_BUCKET=dev-artifacts-bucket-value

# actual lines you want
eval ARTIFACTS_KEY=\$${TRAVIS_BRANCH}_ARTIFACTS_KEY
eval ARTIFACTS_SECRET=\$${TRAVIS_BRANCH}_ARTIFACTS_SECRET
eval ARTIFACTS_BUCKET=\$${TRAVIS_BRANCH}_ARTIFACTS_BUCKET

# test results
echo "key=$ARTIFACTS_KEY"
echo "secret=$ARTIFACTS_SECRET"
echo "bucket=$ARTIFACTS_BUCKET"

每当你在另一个变量中有一个变量的名字时,你需要 eval来解释它。当 bash 看到这一行时:

eval ARTIFACTS_KEY=\$${TRAVIS_BRANCH}_ARTIFACTS_KEY

它首先扩展变量(并留下转义的 $):

eval ARTIFACTS_KEY=\$DEV_ARTIFACTS_KEY

然后它执行 eval在字符串 ARTIFACTS_KEY=$DEV_ARTIFACTS_KEY依次扩展 $DEV_ARTIFACTS_KEY并将值赋给 ARTIFACTS_KEY .

关于environment-variables - 特拉维斯 : Can you construct env var using other env vars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42107655/

相关文章:

c - Travis-CI 上的 GTK2 链接错误

php - 如何使环境变量可用于 Apache,作为服务启动?

python - 我如何告诉 POpen 使用/设置某些环境变量?

windows - 如何在 Windows 上为 Mercurial 指定不同的编辑器?

node.js - 在 prod env 中更新 Node nvm 后找不到/.bin/webpack Webpack 命令

perl - "…/auto/List/Util/Util.so: undefined symbol: PL_stack_sp at …/XSLoader.pm"仅当在 Travis CI 上使用 CGI::Test _and_ 运行测试套件时

php - 如何在 codeception 中的 accespance.suite.yml 文件中定义 browserstack 的安全 key

Travis CI 上的 git、devscripts、debhelper

python - 如何在 Python 中设置环境变量?

windows - 引用 %USERPROFILE% 环境变量失败