パスベーストリガリングによるモノレポ用GitLab CI
パスベースのジョブトリガリングによるモノレポプロジェクト用GitLab CI設定。rules:changesを使用して関連ファイルが変更された場合のみジョブを実行。
Pipeline Architecture
詳細な説明
モノレポパイプライン設定
モノレポでは、すべてのコミットですべてのジョブを実行するとCIリソースが無駄になります。GitLab CIのrules:changesキーワードにより、特定のパスが変更された場合のみジョブをトリガーできます。
パイプライン設定
build_frontend:
stage: build
image: node:20-alpine
script:
- cd frontend && npm ci && npm run build
rules:
- changes:
- frontend/**/*
- shared/**/*
build_backend:
stage: build
image: golang:1.22-alpine
script:
- cd backend && go build -o app ./cmd/server
rules:
- changes:
- backend/**/*
- shared/**/*
主要な概念
rules:changes: コミットでglobパターンに一致するファイルが変更された場合のみジョブが実行されます。モノレポのパイプライン時間を劇的に短縮します。
共有依存関係: フロントエンドとバックエンドの両方のジョブがshared/**/*の変更でトリガーされ、共有ライブラリの変更がすべての利用者でテストされます。
needsのoptional: true: 必要なジョブがスキップされた場合、optional: trueフラグにより下流のジョブは正常に実行されます。
ユースケース
複数のサービス、フロントエンド/バックエンドの分離、共有ライブラリを含むモノレポプロジェクトに必須です。1つのコンポーネントのみが変更された場合、CI時間を数分から数秒に短縮します。