🎓

Github Actionsのコードカバレッジが失敗した件

に公開

ことのあらまし

pull requestを作成し、さあマージしようとしたら...

なんでかコードカバレッジの実行結果がずっと失敗する...なんでだ

エラー解析

detailの画面に進む

FAIL src/tests/integration/app.test.ts
  ● Test suite failed to run

    TypeError: The "url" argument must be of type string. Received undefined

      3 | dotenv.config()
      4 |
    > 5 | export const db = new Sequelize(process.env.DATABASE_URL, {
        |                   ^
      6 |   models: [__dirname + '/../models/**/*'],
      7 |   logging: false,
      8 |   define: {

なるほど。
今回(というか当然だが).envは.ignoreに含んでいるので、
Github Actionsの方でも環境変数が使えるように、
.envで設定していた環境変数を、Githubリポジトリの方にも設定しないといけないらしい。

解決方法

Github Secretsの設定方法

  1. GithubリポジトリのSettingsタブを選択
  2. Secrets andvariables > Actionsを右タブから選択
  3. New repository secretをクリックし、以下のように設定
      Name: DATABASE_URL
    Value: <該当URL>

Github Actionsの設定ファイルの編集

Github Actionsの設定ファイルにも、今回Github Secretsに設定した環境変数を追加する

code-coverage.yml
name: Test and Coverage

on:
  push:
    branches:
      - main
      - develop
  pull_request:

jobs:
  build-and-test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '20'

      - name: Install dependencies
        run: cd backend && yarn install
        env:
          DATABASE_URL: ${{ secrets.DATABASE_URL }}

      - name: Run tests with coverage
        run: cd backend && yarn coverage
        env:
          DATABASE_URL: ${{ secrets.DATABASE_URL }}

      - name: Upload coverage report
        uses: actions/upload-artifact@v4
        with:
          name: coverage-report
          path: backend/coverage

これでもう一回プッシュする

コードカバレッジも成功!!

おわりに

先日Github Actionsの導入を始めて行ったので、
今後似たようなことがあったら勉強しながら設定ファイルなりリポジトリの設定を変えていきたい

Discussion