| #################################################################################################### |
| # Helpers for defining environment variables for CircleCI. |
| # |
| # In CircleCI, each step runs in a new shell. The way to share ENV variables across steps is to |
| # export them from `$BASH_ENV`, which is automatically sourced at the beginning of every step (for |
| # the default `bash` shell). |
| # |
| # See also https://circleci.com/docs/2.0/env-vars/#using-bash_env-to-set-environment-variables. |
| #################################################################################################### |
| |
| # Set and print an environment variable. |
| # |
| # Use this function for setting environment variables that are public, i.e. it is OK for them to be |
| # visible to anyone through the CI logs. |
| # |
| # Usage: `setPublicVar <name> <value>` |
| function setPublicVar() { |
| setSecretVar $1 "$2"; |
| echo "$1=$2"; |
| } |
| |
| # Set (without printing) an environment variable. |
| # |
| # Use this function for setting environment variables that are secret, i.e. should not be visible to |
| # everyone through the CI logs. |
| # |
| # Usage: `setSecretVar <name> <value>` |
| function setSecretVar() { |
| # WARNING: Secrets (e.g. passwords, access tokens) should NOT be printed. |
| # (Keep original shell options to restore at the end.) |
| local -r originalShellOptions=$(set +o); |
| set +x -eu -o pipefail; |
| |
| echo "export $1=\"${2:-}\";" >> $BASH_ENV; |
| |
| # Restore original shell options. |
| eval "$originalShellOptions"; |
| } |