テクノロジー プログラミング C i

dotenvを使ってGitHub Actionsに環境変数を渡す

dotenvを使ってGitHub Actionsに環境変数を渡す

やたら先延ばしにしていた GitHub Actions を初めて使ったものの環境変数の渡し方でちょこっと詰まったのでメモ書き。

参考にしたのは GitHub で見つけた同じ悩める子羊のstack overflowです。公式のEncrypted ecretsのところを参考にするのが一番良いかも。

  1. GitHub レポジトリの Settings > Secrets に環境変数を入れる GITHUB_から始まる変数は通らないので注意。

  2. GitHub Actions のワークフローでテストを実行する前.envファイルを作成する 前の手順で作った Secret は${{ secrets.SECRET_NAME }}でアクセスできる。

ちなみに env や with に環境変数を設定することもできるが、dotenvを使う場合は.envファイルから環境変数を取得するのでファイルを作成する必要があるらしい。

/.github/workflows/test.yml

name: Node.js CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [14.x, 16.x]

    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}
          cache: "npm"
      - run: |
          touch .env
          echo MONGO_URI =${{ secrets.MONGO_URI }} >> .env
          echo PORT =${{ secrets.PORT }} >> .env
          echo BASE_URI =${{ secrets.BASE_URI }} >> .env
          echo PASSPORT_GITHUB_CALLBACK_URL =${{ secrets.PASSPORT_GITHUB_CALLBACK_URL }} >> .env
          echo PASSPORT_GITHUB_CLIENT_ID =${{ secrets.PASSPORT_GITHUB_CLIENT_ID }} >> .env
          echo PASSPORT_GITHUB_CLIENT_SECRET =${{ secrets.PASSPORT_GITHUB_CLIENT_SECRET }} >> .env
          echo SESSION_SECRET =${{ secrets.SESSION_SECRET }} >> .env          
      - run: npm ci
      - run: npm run build --if-present
      - run: npm test