🍣

GitHub ActionsでNode.jsプロジェクトのCIを最短で構築する

に公開

はじめに

GitHub Actionsを使って、Node.jsプロジェクトに
lint と test を自動実行するCIを構築する。

対象は以下を想定する。

  • GitHub上のリポジトリ
  • Node.js(npm)
  • ESLint / Jest など一般的な構成

前提条件

  • Node.jsプロジェクトがGitHubにpushされている
  • package.json に以下のようなscriptが定義されている
{
  "scripts": {
    "lint": "eslint .",
    "test": "jest"
  }
}

workflowファイルを作成する

リポジトリ直下に以下のファイルを作成する。

.github/workflows/ci.yml

GitHub Actionsの設定

ci.yml に以下を記述する。

name: Node.js CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run lint
        run: npm run lint

      - name: Run tests
        run: npm test

各ステップの役割

  • actions/checkout
    リポジトリのコードをrunnerに取得する
  • actions/setup-node
    Node.jsの指定バージョンをセットアップする
    cache: 'npm' により依存関係のキャッシュが有効になる
  • npm ci
    package-lock.json を前提とした再現性の高いインストール
  • npm run lint / npm test
    ローカルと同じコマンドをCI上で実行する

実行結果の確認

  • main ブランチへのpush
  • main 向けのPull Request

いずれかを行うと、GitHubの Actionsタブ にWorkflowが表示される。
失敗時は該当ステップでJobが停止する。

まとめ

  • GitHub Actionsを使うことで、追加のCIサービスなしにCIを構築できる
  • npm ci と公式Actionを使うことで設定は最小限に抑えられる
  • lint / test を自動化することで、レビュー前に機械的チェックを通せる

Discussion