github actions で.envファイルを上書きする


はじめに

github actionsでビルド後、指定サーバにデプロイを行います。
.envファイルが指定サーバ毎に変更になります。
secretsに.envの内容を登録して、利用したいのですが、うまくいかず、試行錯誤しました。

TL;DR

方法1

.envの内容をbase64エンコードしてserectsに登録をして、actionのスクリプト内でbase64デコードをして利用する

openssl base64 -A -in .env.xxx -out .env.xxx.base64.txt

このファイルの内容をsecretsに登録する。

      - name: Update .env file
        run: |
          echo "${{secrets.xxxxxx}}" | base64 --decode > .env

参考文献: https://stackoverflow.com/a/64452700

方法2

暗号化してリポジトリに保存をして、複合する鍵をsecretsにいれて利用する。

公式ドキュメントにありますが、Secrets自体がリポジトリで100件、サイズが64KBなど制限があります。これの代替案として、秘密情報を暗号化してリポジトリに保存をして利用するという方法です。

まとめ

手間として方法1も方法2も、.envファイルをエンコードOR暗号化する手間があるので変わらないです。
暗号化したファイルでも、リポジトリに登録するというのが精神衛生上よくないので、方法1が好きかな?

ただ、方法1だとオリジナルの.envファイルがsecretsの中なので、デプロイ先を確認しないといけないので、方法2の方がいいって人もいるでしょうね。

生の.envファイルが登録しても、きちんと利用できない理由がわからないです。
secretsは、ログに残らないように処理するために、構造化データは使わないでって注意書きがあるので、このあたりが原因な気がしています。