Appearance
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 で実行される内容
composer install(ルート +core_src。COMPOSER_NO_AUDIT=1のため install 時 audit は走らない)npm cicomposer audit(ルート)・composer audit -d core_src・npm run audit(本番依存 high+。実装はbin/run_dependency_audit.sh。Packagist API 一時障害時は数回 retry)composer lint(PHPCS:connector.php,core_src,config。tests/は OOM 回避のため本ステップから除外)composer lint-tests(PHPCS:tests/のみ。本線lintと分離)composer phpstan-ci(PHPStan Level 4:connector.php+core_src。tests/は除外)composer phpstan-tests(PHPStan Level 0:tests/Unit。config/phpstan-tests.neonで存在確認アサーション・定数の書き写しアサーション・理由コメントのない別プロセス実行を検出する独自ルールを適用)composer deptrac-ci(Deptrac)composer test(PHPUnit)scripts/check-psr4-compliance.sh(大文字小文字不一致のみ fail)node docs/.vitepress/scripts/generate-dbml-subsets.mjs --checknpm run format:checknpm run format:twig:check(Twig 専用 Prettier。ローカル同等:bin/run_ci_quality_gate_local.sh内)- その他フロント品質ステップ(
lint:js/typecheck/ Vitest /build等。ワークフロー定義を正とする) npm run duplicates:check(jscpd。重複行率が.jscpd.jsonのthresholdを超えると fail。詳細は jscpd)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 では使わない。
マージ前の手順
- ローカルで品質チェックを済ませる。CI ゲート相当の一括は
composer quality-check:full(CI 運用方針)。PHP 静的のみならcomposer quality-check - 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の先端には付かない)
- Use workflow from: PR の feature ブランチを推奨(
- 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 ブランチの保護 を参照。