やりたいこと
タイトルがややこしいですが、モチベーションは Travis とかで環境毎の環境変数を簡単に設定したいという所です。
Travis で dev, stg, prod のデプロイを行っており、Travis の環境変数設定で
SECRET_dev
, SECRET_stg
, SECRET_prod
のような環境変数が設定されている。
アプリケーションとしては SECRET
という環境変数を読み取っているので、デプロイする環境のサフィックスがついた環境変数を SECRET
として設定したい。
やりかた
デプロイするスクリプトで以下の関数を定義して使う
ENV_SUFFIX=${TRAVIS_BRANCH}
set_env () {
local ENV_NAME=$(echo ${1}_${ENV_SUFFIX})
eval $(echo "export ${1}=${!ENV_NAME}")
}
set_env "SECRET"
今はサフィックスの値を TRAVIS_BRANCH
から持ってきているので、dev, stg, prod のブランチでデプロイをすると SECRET
という環境変数に SECRET_dev
などの環境変数の値が設定される。