やりたいこと
タイトルがややこしいですが、モチベーションは 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 などの環境変数の値が設定される。