Skip to content

CI Quality Gate ​

概要 ​

項目内容
ファイル.github/workflows/ci-quality-gate.yml
目的品質チェックを 1 ジョブで順次実行する。
トリガーpull_request(opened / reopened / ready_for_review)、push(develop。docs/**・*.md のみは除外)、workflow_dispatch

旧 6 ワークフロー統合 + push ごとの実行を避ける(synchronize では起動しない)。develop への push(PR マージ)時のみマージ後検証として 1 回実行する(必須チェックではない。Issue #3853)。方針の正本: CI 運用方針。

個人無料プライベートリポでは Merge Queue が使えないため、マージ前に workflow_dispatch(Run workflow)で PR head を検証する運用とする。

CI で実行される内容 ​

  1. composer install(ルート + core_src。COMPOSER_NO_AUDIT=1 のため install 時 audit は走らない)
  2. npm ci
  3. composer audit(ルート)・composer audit -d core_src・npm run audit(本番依存 high+。実装は bin/run_dependency_audit.sh。Packagist API 一時障害時は数回 retry)
  4. composer lint(PHPCS: connector.php, core_src, config。tests/ は OOM 回避のため本ステップから除外)
  5. composer lint-tests(PHPCS: tests/ のみ。本線 lint と分離)
  6. composer phpstan-ci(PHPStan Level 4: connector.php + core_src。tests/ は除外)
  7. composer phpstan-tests(PHPStan Level 0: tests/Unit。config/phpstan-tests.neon で存在確認アサーション・定数の書き写しアサーション・理由コメントのない別プロセス実行を検出する独自ルールを適用)
  8. composer deptrac-ci(Deptrac)
  9. composer test(PHPUnit)
  10. scripts/check-psr4-compliance.sh(大文字小文字不一致のみ fail)
  11. node docs/.vitepress/scripts/generate-dbml-subsets.mjs --check
  12. npm run format:check
  13. npm run format:twig:check(Twig 専用 Prettier。ローカル同等: bin/run_ci_quality_gate_local.sh 内)
  14. その他フロント品質ステップ(lint:js / typecheck / Vitest / build 等。ワークフロー定義を正とする)
  15. npm run duplicates:check(jscpd。重複行率が .jscpd.json の threshold を超えると fail。詳細は jscpd)
  16. bash bin/run_shellcheck.sh(shellcheck。bin/*.sh と主要運用 scripts/*.sh。ローカル: composer shellcheck)

依存 audit のローカル再現: composer dependency-audit または ./bin/run_dependency_audit.sh(CI 運用方針)。--ignore-unreachable はローカル一時確認用で、CI では使わない。

マージ前の手順 ​

  1. ローカルで品質チェックを済ませる。CI ゲート相当の一括は composer quality-check:full(CI 運用方針)。PHP 静的のみなら composer quality-check
  2. push したあと、Actions → CI Quality Gate → Run workflow
    • Use workflow from: PR の feature ブランチを推奨(develop でも可)
    • pr_number: 対象 PR 番号(head commit を検証。空欄の場合は選択ブランチの先端)
    • develop を選んで pr_number を入力した場合も、ワークフローは PR head を checkout し、必須チェック CI Quality Gate / Quality Gate を PR head の SHA に付与する(選択した develop の先端には付かない)
  3. PR の Checks で CI Quality Gate / Quality Gate がグリーンになってからマージ

注意: Re-run all jobs は元の workflow run と同じコミット SHAを再実行するだけで、追加 push 後の最新 head は検証できません。

失敗した場合 ​

  • Actions ログの ::group::(PHPCS / PHPStan / Deptrac / PHPUnit 等)で失敗したチェックを特定する
  • ローカルで同等コマンドを実行して修正する(一括: composer quality-check:full、個別例: composer dependency-audit、composer lint、composer test、npm run format:check、npm run format:twig:check)
  • 依存脆弱性で失敗した場合は advisory 出力を確認し、Dependabot PR または手動更新で対応する
  • 修正を push したあと、必ず Run workflow する(Re-run ではない)

手動実行 ​

Actions → CI Quality Gate → Run workflow(workflow_dispatch)。追加 push 後のマージ前検証はこちらを使う。

ブランチ保護 ​

必須ステータス: CI Quality Gate / Quality Gate。develop ブランチの保護 を参照。