【GitHub Actions】Linterと単体テストのチェックをサクっと自動化したい
2024-03-15
ストーリー
元々デプロイのワークフローの中でテストも同時に走らせていたが、
PRのマージ前にテストの確認を忘れてしまった場合、デプロイがキャンセルされる。
その場合は追加でhotfixを入れてデプロイされるようにする対応をしていた。
↑どう考えても非効率。
このくらいのチェックは自動化してしまいたいので、マージ前にテストだけ走るようにしてしまいたい。
ついでにLinterのチェックも一緒にしちゃえ!
今回の環境
- フレームワーク: Nuxt3
- 単体テスト: Vitest
- Linter: ESLint
ワークフローの中身
name: Linter & Unit Test Check
on:
pull_request:
# PRがOpenになった時、PRにコミットが追加された時
types: [opened, reopened, ready_for_review, synchronize]
jobs:
CI:
name: CI
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.x]
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
# 依存関係をインストール
- name: npm install(ci)
run: npm ci
# envファイルの作成
- name: make env
run: |
touch ./.env
echo "GITHUB_ACTIONS=true" >> ./.env
# .nuxt/生成 & 型チェック
- name: Run nuxi typecheck
run: npx nuxi typecheck
- name: Run ESLint
run: npx eslint --ext .js,.vue,.ts --ignore-path .gitignore --max-warnings=0 .
- name: Run test(Vitest)
id: e2e_test
run: npm run test
型チェックはnuxi typecheck
コマンド。
このコマンドを実行することで、.nuxt/
フォルダとその配下のファイルも自動生成される。
ESLint のチェックは--max-warnings=0
オプションを追加することで、Warnings があった場合もエラー扱いでコマンドが終了される。
ちなみにreviewdogというサードパーティのアクションを使用することで、より高度なチェックを実施できる。
(勝手にサードパーティ製のアクション入れたくなかったので今回はスルー)
GITHUB_ACTIONS
という環境変数を定義していれば、自動的にエラー発生ケースにアノテーションが付与される
スポンサーリンク