CI CD - rfdnxbro/trends-laravel GitHub Wiki
CI/CD
現在の実装状況
プロジェクトではGitHub Actionsを使用してCI/CDパイプラインを完全に構築・運用しています。
✅ 現在実装済みの機能
Wiki自動同期
- 対象:
docs/wiki
ディレクトリ - 実行タイミング: mainブランチへのプッシュ時
- 同期先: GitHub Wiki
- ワークフローファイル:
.github/workflows/sync-wiki.yml
- ワークフロー名:
Wiki同期
- 実装状況: ✅ 完全実装済み
品質チェックパイプライン(統合CI)
- テストフレームワーク: PHPUnit、vitest
- 実行タイミング: PR作成時、mainブランチへのプッシュ時
- ワークフローファイル:
.github/workflows/test.yml
- ワークフロー名:
品質チェック
- 実装状況: ✅ 完全実装済み
- テスト数: PHPUnit 705テスト、フロントエンド 189テスト
- 環境: SQLite in-memory(高速・一貫性保証)
- CI統一化: ubuntu-latest + shivammathur/setup-php@v2
E2E専用テストパイプライン
- テストフレームワーク: Playwright
- 実行タイミング: PR作成時、mainブランチへのプッシュ時
- ワークフローファイル:
.github/workflows/e2e.yml
- ワークフロー名:
E2Eテスト
- 実装状況: ✅ 完全実装済み
- テスト数: 5ファイルのE2Eテスト
- 環境: PostgreSQL + Laravel開発サーバー
- 並列実行: 4ワーカーで高速実行(約2分)
- MCP統合: Claude Code連携でテスト自動化
テストカバレッジ継続確保
- カバレッジ計測: PHPUnit with Xdebug
- 実行タイミング: PR作成・更新時
- ワークフローファイル:
.github/workflows/coverage-report.yml
- ワークフロー名:
カバレッジチェック
- 実装状況: ✅ 完全実装済み
- 機能:
- 95%未満でCI失敗する閾値チェック
- PR上でのカバレッジ結果自動コメント(95%閾値達成状況表示)
- HTML・XML形式のカバレッジレポート生成
- カバレッジ改善領域の自動提示
- Artifactsによるレポートファイル保存(30日間)
カバレッジ向上のベストプラクティス
- Feature Tests 優先: 1つのテストで複数コンポーネントをカバー
- エッジケース網羅: 404、422、409エラー等の異常系
- 非効率テスト削減: メソッド存在確認、文字列検索等は避ける
- 定期的な棚卸し: 四半期ごとにテストの効率性をレビュー
コード品質チェック
- Laravel Pint: コードスタイルチェック ✅ 実装済み
- PHPStan: 静的解析(レベル4、エラー0) ✅ 実装済み
- フロントエンドビルド: Vite本番ビルドテスト ✅ 実装済み
- PHPMetrics: PHP循環的複雑度チェック(警告15・エラー20) ✅ 実装済み
- ESLint: TypeScript循環的複雑度チェック(エラー20) ✅ 実装済み
🔧 実装されたテストパイプライン
並列実行アーキテクチャ
品質チェックワークフロー と E2E専用ワークフロー が並列実行され、トータル約2分でCI/CDが完了します。
テスト責務分離
- 品質チェック: Unit/Feature Tests + 静的解析 + ビルド(SQLite)
- E2E: ブラウザテスト + ユーザージャーニー検証(PostgreSQL)
品質チェックワークフロー
ファイルパス: .github/workflows/test.yml
詳細なワークフロー設定については、実際のファイルを参照してください:
- ubuntu-latest + shivammathur/setup-php@v2
- SQLite in-memory データベース使用
- 全テスト実行 + 品質チェック + スクレイピングテスト
E2E専用ワークフロー
ファイルパス: .github/workflows/e2e.yml
詳細なワークフロー設定については、実際のファイルを参照してください:
- ubuntu-latest + shivammathur/setup-php@v2
- PostgreSQL 15 + Laravel開発サーバー
- Playwright + Chromium(4並列実行)
- 失敗時レポート自動アップロード
🎯 現在の品質状況
項目 | 状況 |
---|---|
PHPUnitテスト | 705テストパス(96%カバレッジ) |
フロントエンドテスト | 189テストパス |
E2Eテスト | 5ファイル(Playwright) |
Laravel Pint | コードスタイル完全パス |
PHPStan | レベル4でエラー0 |
フロントエンドビルド | 本番ビルド成功 |
CI並列実行 | 約2分で完了 |
テスト最適化 | CompanyController Unit Test 97%削減 |
🚀 実装された品質保証
自動実行される検証項目
- PHPUnitテスト: 全機能の動作確認(705テストで96%カバレッジ)
- Laravel Pint: PSR-12準拠のコードスタイルチェック
- PHPStan: 静的解析による型安全性確認
- PHPMetrics: PHP循環的複雑度チェック(警告15・エラー20でCI失敗)
- ESLint: TypeScript循環的複雑度チェック(閾値20でCI失敗)
- フロントエンドテスト: Reactコンポーネントの動作確認
- フロントエンドビルド: 本番環境用アセットビルド
- スクレイピングテスト: Scraperサービス包括的テスト・境界値テスト完備
技術的特徴
- 高速テスト環境: SQLite in-memoryで外部依存なし
- 完全な型安全性: PHPStan レベル4で0エラー
- 循環的複雑度管理: PHP(15警告/20エラー)、TypeScript(20エラー)で品質強制
- 最適化されたビルド順序: Viteアセット生成 → テスト実行
- クリーンなテストスイート: 705テスト(96%カバレッジ)
- 警告ゼロ: PHPUnitアトリビュート記法対応
- 確実な品質保証: エラー隠蔽なしの設計
パフォーマンス最適化(v3.0)
- キャッシュ戦略: Composer・npmキャッシュでdependencies再取得を削減 ✅
- 条件付き実行:
[skip ci]
/[skip e2e]
メッセージでの不要ビルドスキップ ✅ - 日本語対応: ワークフロー名・ステップ名の日本語化 ✅
- 並列実行: 品質チェック + E2E の並列実行で高速化 ✅
- CI統一化: ubuntu-latest + shivammathur/setup-php@v2 採用 ✅
- 現在の実行時間: 約2分(品質チェック: 約2分、E2E: 約2分)
- キャッシュ効果: 初回実行後は20-30秒短縮見込み
📊 パフォーマンス改善の詳細
実装した最適化
項目 | 状況 | 効果 |
---|---|---|
Composerキャッシュ | ✅ 実装済み | dependencies再取得を削減 |
npmキャッシュ | ✅ 実装済み | node_modules再構築を削減 |
条件付き実行 | ✅ 実装済み | [skip ci] /[skip e2e] で不要ビルド回避 |
日本語化 | ✅ 実装済み | 可読性向上 |
並列実行 | ✅ 実装済み | 品質チェック + E2E の並列実行 |
CI統一化 | ✅ 実装済み | ubuntu-latest + shivammathur/setup-php@v2 |
責務分離 | ✅ 実装済み | SQLite(Main) + PostgreSQL(E2E) |
キャッシュ効果の詳細
- 初回実行: フルダウンロード(90秒)
- 2回目以降: キャッシュヒット時(推定60-70秒)
- 頻繁なPush: 継続的な短縮効果
将来の改善計画
- マトリックス戦略: 複数PHP/Nodeバージョン対応時
- 段階的実行: 軽量チェック先行で早期フィードバック
- 自動デプロイメント: 品質チェック完了後の自動デプロイ
- E2Eテスト拡張: より多くのユーザージャーニーカバレッジ
現在の開発フロー
自動化されたチェック
PR作成時に自動実行される項目の詳細は、以下のファイルを参照してください:
- 品質チェック:
.github/workflows/test.yml
(品質チェックワークフロー) - E2E:
.github/workflows/e2e.yml
(E2Eテストワークフロー)
実行される主要チェック:
- PHPUnitテスト(705テスト)
- コードスタイルチェック(Laravel Pint)
- 静的解析(PHPStan)
- フロントエンドテスト(189テスト)
- E2Eテスト(5ファイル)
手動チェック(必要に応じて)
開発環境での追加チェック方法については、CLAUDE.md
およびdocs/wiki/開発フロー.md
を参照してください。
本番環境
Laravel Cloud
- ホスティング: Laravel Cloud
- データベース: PostgreSQL
- デプロイ方法: Gitベースの自動デプロイまたは手動デプロイ
✅ 実装完了ロードマップ
フェーズ1: 基本テストパイプライン
- ✅ PR作成時の自動テスト
- ✅ コードスタイルチェック
- ✅ 静的解析
- ✅ スクレイピング関連テスト
- ✅ フロントエンドテスト
フェーズ2: デプロイメント自動化
- ✅ 品質保証パイプライン
- ✅ CI/CD品質向上
- 自動デプロイメント(今後検討)
- デプロイ後の動作確認
- ロールバック機能
フェーズ3: 監視とアラート(今後の拡張)
- アプリケーション監視
- エラーアラート
- パフォーマンスメトリクス
- スクレイピング失敗時のアラート
- Horizonキューの監視