
CircleCI 2.0に環境変数を一つ一つ登録するのではなく.envファイルとして扱う方法はとても便利です。今回はCircleCI 2.0に.envファイルを環境変数として登録して使う方法を紹介します。
はじめに
アプリケーションでGitにコミットできない情報として環境変数があります。環境変数にはAPIキーなどのいろいろな機密情報が含まれているわけですが、どこかのサーバーにアプリケーションをデプロイする場合は、当然そのサーバーに環境変数を登録する必要があります。この環境変数をファイルにまとめたものが.envファイルです。Docker Composeでも簡単に読み込めるため、とても便利です。
ただ、ローカルでは.envファイルはそのまま使っても問題ありませんが、サーバー上やCircleCIなどのサービス上で扱う場合はセキュリティを担保しつつ利用するか、あるいは利用しないで環境変数を直接登録する必要があります。
今回は.envファイルを安全に扱う一つの方法として、base64にして環境変数に登録する方法を紹介します。
Base64とは?
Base64とは、データを64種類の印字可能な英数字のみで表現するエンコード方式で、7ビットのデータしか扱うことの出来ない通信環境でデータを扱うために使います。7ビットのデータしか扱うことの出来ない通信環境の例は電子メールで、電子メールの添付ファイルはBase64エンコードされて文字列として送信されています。
これを応用すると、.envファイルを文字列に変換して利用できます。
.envファイルを環境変数に登録する
プロジェクトのカレントディレクトリに.envファイルがある前提で進めます。
.envファイルをbase64エンコードする
以下のコマンドでbase64エンコードすると、.envファイルを文字列に変換できます。
$ cat .env | base64
CircleCIの環境変数として登録する
Base64エンコードした文字列を環境変数として登録します。今回は「ENV_FILE」という環境変数名で登録しています
CircleCIのジョブ内でbase64デコードして使う
CirlceCI 2.0の設定ファイルconfig.ymlに以下のタスクをアプリケーションが環境変数を利用する前に追記します。
- run:
name: Decode dotenv file
command: echo $ENV_FILE | base64 --decode > .env
実際にCircleCIで実行すると以下のようにデコードされ、後の処理で.envファイルを利用できます。
当然、.envファイルの利用自体はアプリケーションやらDocker Composeやらに書いておく必要があります。
最後に
いかがでしたか?これでCircleCI 2.0で.envファイルを環境変数として扱る方法が分かったと思います。必要な場面で試してみて下さい。では。