🍣
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