CI
Lint・ビルドなどのチェックを PR ごとに自動で実行する CI(継続的インテグレーション)の運用ルール
CI(Continuous Integration)では、PR ごとに Lint やビルドを自動で実行し、問題のある変更がマージされるのを防ぎます。
実行する項目
必須項目
- Lint: プロジェクトで採用しているツールでコードを検査する(静的サイトテンプレートは Biome と markuplint、WordPress テンプレートは Prettier・Stylelint・ESLint)
- ビルド: ビルドが正常に完了するかを確認する
プロジェクトにある場合は必須
- 型チェック: TypeScript を導入していて、
type-checkスクリプトがある場合 - テスト:
testスクリプトがある場合
推奨項目
- パフォーマンス計測: Lighthouse CI など
- 依存関係の脆弱性チェック:
pnpm auditの実行。あわせて Dependabot を有効にする(GitHub 権限・セキュリティを参照)
実行タイミング
- PR の作成・更新時: すべてのチェックを実行
develop/mainへのマージ時: すべてのチェックを実行
ワークフロー例
name: CI
on:
pull_request:
branches: [develop, main]
push:
branches: [develop, main]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
# setup-node の cache: pnpm より前に pnpm を用意する
# バージョンは package.json の packageManager を参照する
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v7
with:
node-version-file: ".nvmrc"
cache: "pnpm"
- run: pnpm install --frozen-lockfile
- run: pnpm run lint
# スクリプトがないプロジェクトでは何もせずに成功する
- run: pnpm run --if-present type-check
- run: pnpm run --if-present test
- run: pnpm run build
実行時間の短縮
CI の実行時間が長いと、PR のレビューとマージが遅れます。次の方法を検討してください。
キャッシュ
依存関係は actions/setup-node の cache オプションでキャッシュします(ワークフロー例を参照)。
ロックファイルを自動で検出するため、追加の設定は不要です。
ビルド時間が長い場合は、actions/cache でビルドのキャッシュも保存します。
- name: Cache build
uses: actions/cache@v6
with:
path: |
node_modules/.vite # Vite の場合
key: ${{ runner.os }}-build-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-build-
並列実行
互いに依存しないチェックは、ジョブを分けて並列で実行します。
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
# ... Lint の実行
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
# ... ビルドの実行
条件付き実行
ドキュメントだけの変更などで CI を省略したい場合は、paths-ignore で対象外のファイルを指定します。
on:
pull_request:
branches: [develop, main]
paths-ignore:
- "**.md"