In the circle ci dashboard I set enviornment variables like DEV_USEFUl_API_KEY, PROD_USEFUL_API_KEY. Then in my circleci config file (v2.1) I do this
- 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
The idea been when my tests are run, the environment variable will be read. I have printed out within my node application process.env and I can see the variables PROD_FIREBASE_API_KEY, DEV_FIREBASE_API_KEY are within the environment, however there is no FIREBASE_API_KEY as intended.
I have tried chaning the syntax of the command to:
echo 'export FIREBASE_API_KEY=$PROD_FIREBASE_API_KEY' >> $BASH_ENV
and also
echo 'export FIREBASE_API_KEY="$PROD_FIREBASE_API_KEY"' >> $BASH_ENV
However its not making any difference, the variable FIREBASE_API_KEY is not set, can anyone please advise? Thanks.
The solution was to put yarn test in another run step, as its necessary for the bash profile to be reloaded after setting new env vars (which happens at the beginning of every run).
- 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