Circleci 从现有的环境变量创建环境变量
Posted
技术标签:
【中文标题】Circleci 从现有的环境变量创建环境变量【英文标题】:Circleci create environment variable from existing env var 【发布时间】:2021-11-09 12:47:03 【问题描述】:在圆形 ci 仪表板中,我设置了环境变量,例如 DEV_USEFUl_API_KEY、PROD_USEFUL_API_KEY。然后在我的 circleci 配置文件 (v2.1) 我这样做
- run:
name: Run Tests
command: |
if [ "$CIRCLE_BRANCH" == "master" ]; then
echo 'export FIREBASE_API_KEY=$PROD_FIREBASE_API_KEY' >> $BASH_ENV
elif [[ "$CIRCLE_BRANCH" == "develop" ]]; then
echo 'export FIREBASE_API_KEY=$DEV_FIREBASE_API_KEY' >> $BASH_ENV
fi
yarn test
我的想法是当我的测试运行时,环境变量将被读取。我已经在我的节点应用程序 process.env 中打印出来,我可以看到变量 PROD_FIREBASE_API_KEY、DEV_FIREBASE_API_KEY 在环境中,但是没有预期的 FIREBASE_API_KEY。
我已尝试将命令的语法更改为:
echo 'export FIREBASE_API_KEY=$PROD_FIREBASE_API_KEY' >> $BASH_ENV
还有
echo 'export FIREBASE_API_KEY="$PROD_FIREBASE_API_KEY"' >> $BASH_ENV
但是它没有任何区别,变量 FIREBASE_API_KEY 没有设置,有人可以请教吗?谢谢。
【问题讨论】:
您可以尝试在您的管道中记录“$CIRCLE_BRANCH”的值吗?我认为你的 if 和 else if 条件都没有满足,所以它甚至不会去那里。或者尝试使用相同的命令添加 else 条件 它的值是master。CIRCLE_BRANCH: 'master'
用“”代替“”
请问在哪一部分? @猎户座
echo "export FIREBASE_API_KEY=$PROD_FIREBASE_API_KEY" >> $BASH_ENV
【参考方案1】:
解决方案是将纱线测试放在另一个运行步骤中,因为它需要在设置新的环境变量后重新加载 bash 配置文件(这发生在每次运行开始时)。
- run:
name: Configure Environment Variables
command: |
if [ "$CIRCLE_BRANCH" == "master" ]; then
# Set env variables
elif [[ "$CIRCLE_BRANCH" == "develop" ]]; then
# Set env variables
fi
- run:
name: Run Tests
command: |
yarn test
【讨论】:
以上是关于Circleci 从现有的环境变量创建环境变量的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 Heruku 帐户之间的 circleci 中分离环境?