やたら先延ばしにしていた GitHub Actions を初めて使ったものの環境変数の渡し方でちょこっと詰まったのでメモ書き。
参考にしたのは GitHub で見つけた同じ悩める子羊のstack overflowです。公式のEncrypted ecretsのところを参考にするのが一番良いかも。
GitHub レポジトリの Settings > Secrets に環境変数を入れる
GITHUB_
から始まる変数は通らないので注意。
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