リポジトリ
https://github.com/nnahito/env-replacer
前置き
皆さんはLaravelの.envをどのように管理していますか?
意外とGit / GitHubにコミット&Pushしてしまっているプロジェクト、多くないですか?
AWS / ECS環境だと、パラメータストアを使ってECSコンテナに環境変数としてExportする方法なども取れますが、
AWSを使っていない個人のプロジェクトだったり、もうちょっとラクしたい(パラメータストア管理だと、デプロイ時のスクリプトに.envのキーを全部定義する必要がある)とか思ったりしますよね?
なので、GitHub Actionsのシークレットに登録したキーが.env.exampleに存在する場合、
.envにその値を自動で記載するActionを作成しました。
使い方
自分の環境だと、
GitHubにPush
↓
GitHub ActionsでDockerイメージを作成
↓
GitHub Container RegistoryにPush
↓
レンタルサーバにSSHし、Container RegistoryからDockerイメージをPull
↓
コンテナの入れ替え
という手順でデプロイをしています。
AWSを使っていません。
GitHub ActionsでDockerイメージを作成時点で.env.exampleにGitHubの「Secrets and variables」から値を取得し、値を追加しています。
例
GitHubのSecrets and variablesに以下があるとします。
HOGE_TOKEN=ABCD1234
.env.exampleに以下があるとします。
APP_ENV=production
APP_NAME=HOGE
HOGE_TOKEN=
このとき、 https://github.com/nnahito/env-replacer を使うと、
コンテナの中に
APP_ENV=production
APP_NAME=HOGE
HOGE_TOKEN=ABCD1234
という.envが作成されます。
GitHub Actionsでの使い方
README記載のとおりです。
steps:
- uses: actions/checkout@v4
- uses: nnahito/env-replacer@main
with:
secrets: ${{ toJSON(secrets) }}
copy-from-example: 'true' # ← 任意: .envファイルを.env.exampleから利用するかどうか。true or falseを指定する。デフォルトはfalse
env-file: 'subdir/.env' # ← 任意: .envが実行ディレクトリ外にある場合に指定。省略時は.envがデフォルト値
env-example: '.env.example' # ← 任意: .env.exampleが実行ディレクトリ外にある場合に指定。省略時は.env.exampleがデフォルト値
このように、.envをGitHubだけで簡潔に管理できます。
よかったら使ってみてください。