Node.js CIワークフロー(npm使用)

Node.jsプロジェクト用のGitHub Actions CIワークフローを作成。checkout、setup-node、npm install、lint、test、buildステップとキャッシュを解説。

Basic CI

詳細な説明

Node.js CIパイプラインの構築

Node.js CIワークフローは、JavaScriptまたはTypeScriptプロジェクトの品質保証の基盤です。すべてのpushとpull requestがマージ前にlint、テスト、ビルドチェックを通過することを保証します。

ワークフローYAML

name: Node.js CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        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 linter
        run: npm run lint

      - name: Run tests
        run: npm test

      - name: Build
        run: npm run build

主要な概念

  • npm ci vs npm install: npm ciはCIで高速です。package-lock.jsonの内容を正確にインストールし、変更しません。まずnode_modules/を削除してクリーンインストールします。
  • 組み込みキャッシュ: actions/setup-node@v4アクションはcache入力をサポートし、npm/yarn/pnpmキャッシュディレクトリを自動的にキャッシュ・復元してインストールを大幅に高速化します。
  • ブランチフィルタリング: mainのみでトリガーすることで、レビュー準備ができていないfeatureブランチでのCI実行を防ぎます(多くのチームは全ブランチでCIを実行します)。

ワークフローの拡張

npm run test -- --coverageでカバレッジステップを追加し、actions/upload-artifactで結果をアップロードします。モノレポの場合、パスフィルタリングを使用して関連パッケージが変更された場合のみCIを実行します。

ユースケース

Node.js Webアプリケーション、REST API、またはnpmパッケージの標準CIパイプライン。マージ前にすべてのコミットがlint、テスト、ビルドを通過することを保証し、開発サイクルの早い段階でリグレッションを検出します。

試してみる — GitHub Actions Workflow Builder

フルツールを開く