コンテンツにスキップ
GLANZ. CREATIVE WORKS / GLOBE TAILS
Esc
↑↓移動↵開く⌘Jプレビュー
このページの内容

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"

このページは役に立ちましたか?