環境ごとに Secrets を切り替える
jobs.*.environment を切り替える。PROD_SECRET と DEV_SECRET を並べない。
PROD_SECRET / DEV_SECRET をリポジトリに並べて ref で分岐するより、environment を切り替える。
yaml
jobs:
example:
runs-on: ubuntu-latest
environment: ${{ github.ref_name == 'deploy' && 'production' || 'development' }}
steps:
- run: echo ${{ secrets.SOME_SECRET }}
- run: echo ${{ vars.SOME_VARIABLE }}Environment 自体は「環境を定義するもの」。Secrets / Variables は Actions secrets and variables か、Environment の編集画面で付ける。Workflow ファイルからは設定できない。
同名なら Environment の値が Repository の値より優先される。
CLI からも付けられる。
bash
gh secret set NAME --body VALUE --env ENVIRONMENT
gh variable set NAME --body VALUE --env ENVIRONMENT
gh secret list --env production
gh variable list --env production単一ワークフローでしか使わない値は env で足りる。複数ワークフローで共有する、変更権限を分けたい、というときは Environment Variables 向き。