Github ActionsからSecretを取得できない事象にはまったので解決した方法を残します。
まずEnvironment SecretとRepository Secretの2種類のSecretがあります。
2つのSecretの取得方法は異なります。
ちゃんとGithub上で環境変数を設定し、Actionsのyamlの記述もあっていそうなときは2種類のSecretを混同しているかもしれません。
Environment Secret
こちらはGithub Actionsのyamlでenvironmentを指定してSecretを取得します。
設定 > Code and automation > Environments で作成したらEnvironment Secretとなります。
test-environmentというEnvironmentの中に、VITE_SUPABASE_URL, VITE_SUPABASE_KEYの2つのSecretを作成したのが以下の画像です。
environmentを指定し、以下のように取得します。
name: Build and Deploy
on:
[push, workflow_dispatch]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
environment:
name: test-environment
steps:
- run: echo ${{ secrets.VITE_SUPABASE_URL }}
- run: echo ${{ secrets.VITE_SUPABASE_KEY }}
Repository Secret
こちらはリポジトリ内で一意のSecretです。
Github Actionsではenvironmentを指定せずに取得できます。
設定 > Secret and Valiables > Actionsで作成したらRepository Secretです。
取得は以下です。
name: Build and Deploy
on:
[push, workflow_dispatch]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- run: echo ${{ secrets.VITE_SUPABASE_URL }}
- run: echo ${{ secrets.VITE_SUPABASE_KEY }}
使い分けとしては、Repository Secretはリポジトリ内で共通で良いもの。
Environment Secretは開発、本番とでSecretを分けたいときに使用するのが良いと思います。
最後に
私はRepository SecretとEnvironment Secretを混同してしまいSecretが取れない状況にはまってしまいました。
(Environment Secretなのにenviromentsを指定せずに参照しようとしていた)
これを読んだ方がGithunのSecretには2種類あることを知り、エラーが早く解消されると嬉しいです。