環境ごとに Secrets を切り替える

jobs.*.environment を切り替える。PROD_SECRET と DEV_SECRET を並べない。

  • #GitHub Actions

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 向き。

編集