CircleCIに入門したときに、ちょっと思いついたので備忘録です。
CircleCI2.0でMySQLを使ったLaravelのテストを実行する
こちらの記事を参考に、 config.yml
を設定していたのですが、ふと疑問に思いました。
これって他のAPIキーとか設定する場合、べた書きだとまずいよな......
単純にCircleCIの環境変数を使えばいいのでは?と思ったのですが、せっかくなので.env.testing
をそのまま使いたいところです。
ですが、APIキーが書かれた.env.testing
をGit
で管理はしたくないです。(するべきではないです)
そこで、.env.testing
の中身をすべて環境変数につっこんでしまおう、と考えました。
.envの中身を出力する
例えばこんな.env
ファイルがあったとします。
APP_ENV=testing
APP_KEY=base64:tekitounamojiretsu
APP_DEBUG=true
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=circle_test
DB_USERNAME=root
EXAMPLE_API_KEY=qwerty
EXAMPLE_API_SECRET=ytrewq
それをbase64
にエンコードして出力します。
$ cat .env.testing | base64
QVBQX0VOVj10ZXN0aW5nCkFQUF9LRVk9YmFzZTY0OnRla2l0b3VuYW1vamlyZXRzdQpBUFBfREVC
VUc9dHJ1ZQoKREJfQ09OTkVDVElPTj1teXNxbApEQl9IT1NUPTEyNy4wLjAuMQpEQl9QT1JUPTMz
MDYKREJfREFUQUJBU0U9Y2lyY2xlX3Rlc3QKREJfVVNFUk5BTUU9cm9vdAoKRVhBTVBMRV9BUElf
S0VZPXF3ZXJ0eQpFWEFNUExFX0FQSV9TRUNSRVQ9eXRyZXdxCg==
出力された文字列をコピーします。
CircleCIの環境変数に設定する
CircleCIにログインし、対象のリポジトリのSettings > BUILD SETTINGS > Environment Variables
を開き、Add Variable
から環境変数を設定します。
Name
はENV_FILE
とします。
config.ymlを設定する
.circleci/config.yml
に.env.testing
ファイル作成コマンドを記述します。
※詳細は、CircleCI2.0でMySQLを使ったLaravelのテストを実行するのものを参考にしてください。
# steps 配下
- run:
name: base64 decode env file
# ファイルに改行が含まれているので`-i`オプションを付ける
command: echo $ENV_FILE | base64 -di > .env.testing
これでローカルなどと同じように.env.testing
ファイルが利用できます。
とはいえ、あまり使いどころはないかもしれませんが......