GitHub Actions

GitHub Actions上でJestとESLintを実行する

GitHub Actions上でJestとESLintを実行する
NestJSで作っているアプリのJestとESLintのチェックをGitHub Actions上で実行したい。どうすればいいのだろう。。

今回はこういった疑問にお答えします。

少しでもGitHub Actions上でJestとESLintを実行する上で参考になれば幸いです。

GitHub Actions上でJestとESLintを実行する

結論から言うと、以下のようなymlファイルを配置することで、GitHub Actions上でJestとESLintを実行することが可能となります。

※DBにDocker、ORMにPrismaの使用を想定しています

name: lint-and-test

on: push

jobs:
  lint_and_test:
    runs-on: ubuntu-latest

    stetps:
      - name: checkout code
        uses: actions/checkout@v3

      - name: setup Node.js
        uses: actions/seup-node@v3
        with:
          node-version: 18
          cache: npm

      - name: install npm packagegs
        run: npm ci

      - name: generate prisma client to use prisma
        run: npx prisma generate

      - name: execute ESLint
        uses: reviewdog/action-eslint@1
        with:
          workdir: ./
          reporter: github-pr-review
          fail_on_error: true

      - name: setup test db
        run: docker compose up -d db --wait

      - name: execute unit test
        env:
          DATABASE_URL: mysql://user:password@localhost:3306/sample
        uses: ArtiomTr/jest-coverage-report-action@v2.0-rc.6
        with:
          working-directory: ./
          test-script: npm run test

 

それぞれの処理を簡単に説明していきます。

 

checkout codeではコードをチェックアウトしています。

要は、リポジトリのソースコードをcloneしているようなものです。

 

setup Node.jsでは、指定したバージョンのNode.jsをインストールしています。

また、cache: npmと記述することで、node_modulesをキャッシュすることができます。

これにより、次のステップのnpm ciを高速化することが可能となります。

 

さらに、generate prisma client to use prismaではPrisma Clientをインストールしています。

これによりPrismaを使ってDB操作をすることが可能となります。

 

execute ESLintでは、reviewdogを使ってESLintを実行しています。

reporter: github-pr-reviewにより、PRで構文エラーを通知してくれます。

さらに、fail_on_error: trueと記述することで、構文エラーを解消するまでプルリクエストのマージができなくなります。

 

setup test dbではdocker-composeに設定したテスト用のdbを用意しています。

 

最後のexecute unit testではテストの実行をしています。

ArtiomTr/jest-coverage-report-actionを使うことで、プルリクエスト上にテストのカバレッジ情報を通知してくれます。

 

GitHub Actions上でJestとESLintを実行する:おわりに

今回は、GitHub Actions上でJestとESLintを実行する方法を紹介しました。

この記事がGitHub Actions上でJestとESLintを実行する上で少しでも参考になっていたら幸いです。

 

最後まで読んでいただきありがとうございました。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA