今回はこういった疑問にお答えします。
少しでも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を実行する上で少しでも参考になっていたら幸いです。
最後まで読んでいただきありがとうございました。

