今回はGitHub Actionsにてユニットテスト(Jest)を実行させるように設定します。
ただそれだけです。
この記事でできること
- GitHub ActionsでNode.jsの環境を構築する
- GitHub Actionsでユニットテスト(Jest)を実行する
目次
対象環境
Jestのセットアップが完了し、Jestが実行可能なプロジェクトを対象としています。
本記事においては以下の記事で作成した環境を利用します。
Jestのセットアップが完了していない方はご参考にどうぞ。
とにかくやるだけ!Next.js + TypeScript + Chakra UI + ESLint + Prettier + commitlint + Jest + husk…
JavaScript(TypeScript)開発環境の構築はセットアップすることが多くて大変。
そこでよく使いそうな構成の環境構築手順をまるっとまとめて紹介します。
ワークフローの設定
設定ファイルの作成
テストを動かすために最低限やることとしては、以下のステップになるかと思います。
- OS環境を構築する
- Node.js実行環境を構築する
- リポジトリからソースコードを取得する
- npmパッケージをインストールする
- テストを実行する
これをワークフロー設定ファイルで表現していきます。
name: Testing
on:
# ここではプルリクエスト作成時に動作するよう設定
pull_request:
branches: [ "master" ]
# 動作確認しやすいように手動実行を可能に
workflow_dispatch:
jobs:
unit-testing:
# 【① OS環境構築】、Node.jsはデフォルトで使用できるので【② Node.js環境構築】もここで完了
runs-on: ubuntu-latest
steps:
# ③ リポジトリからソースコードを取得
- uses: actions/checkout@v3
# ④ npmパッケージのインストール
- name: npm install root
run: npm i
- name: npm install next
run: |
cd next
npm i
# ⑤ テストの実行
- name: run test
run: npm run test
実行コマンドやディレクトリ構造などは各々のプロジェクトで適切なものに置き換えてください。
動作確認
ワークフローを動かすと無事にテストが実行されます。
Node.js実行環境とバージョン
先ほどの設定ファイルで示したように、Node.jsについては特になにかしなくてもデフォルトで使えるようです。
デフォルトバージョンの確認
2022年6月現在のOSバージョンとNode.jsバージョンのセットを確認してみました。
以下のようにバージョン確認コマンドを実行するワークフローを作成して、
name: NODE_VERSION
on:
workflow_dispatch:
jobs:
ubuntu:
runs-on: ubuntu-latest
steps:
- name: os version
run: lsb_release -a
- name: node -v
run: node -v
windows:
runs-on: windows-latest
steps:
- name: os version
run: systeminfo
- name: node -v
run: node -v
mac:
runs-on: macos-latest
steps:
- name: os version
run: sw_vers
- name: node -v
run: node -v
実行すると以下のような結果が得られました。
各OSでNode.jsがデフォルトでインストールされていることがわかります。
バージョン指定
Node.jsのバージョンを指定したい場合はsetup-nodeというアクションが使用できます。
以下のように設定することでバージョン指定が可能です。
name: NODE_VERSION
on:
workflow_dispatch:
jobs:
ubuntu:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
with:
node-version: 14
- name: node -v
run: node -v
実行してみると指定したバージョン(v14)となっていることが確認できます。
参考リンク
Node.js のビルドとテスト – GitHub Docs
Node.jsプロジェクトのビルドとテストのための継続的インテグレーション(CI)ワークフローを作成できます。
最後に
GitHub Actionsといっても要は仮想環境上で任意の処理を実行するだけ。
setup-nodeのような便利なアクションも多数ありますのでとても簡単ですね!