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%削減

🚀 実装された品質保証

自動実行される検証項目

  1. PHPUnitテスト: 全機能の動作確認(705テストで96%カバレッジ)
  2. Laravel Pint: PSR-12準拠のコードスタイルチェック
  3. PHPStan: 静的解析による型安全性確認
  4. PHPMetrics: PHP循環的複雑度チェック(警告15・エラー20でCI失敗)
  5. ESLint: TypeScript循環的複雑度チェック(閾値20でCI失敗)
  6. フロントエンドテスト: Reactコンポーネントの動作確認
  7. フロントエンドビルド: 本番環境用アセットビルド
  8. スクレイピングテスト: 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: 継続的な短縮効果

将来の改善計画

  1. マトリックス戦略: 複数PHP/Nodeバージョン対応時
  2. 段階的実行: 軽量チェック先行で早期フィードバック
  3. 自動デプロイメント: 品質チェック完了後の自動デプロイ
  4. 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キューの監視

関連ドキュメント