#################################################################################################### # 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 ` 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 ` 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"; }