docs: link v0.1.0 phar download in install docs #44
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # CI ワークフロー。 | |
| # checks … PHP 8.3 / 8.4 / 8.5 のマトリクスで composer validate / test / stan / cs を実行 | |
| # no-dev-smoke … PHP 8.3 + composer install --no-dev(本番相当。dev 依存が持ち込む | |
| # polyfill-php84/85 に隠れて 8.3 非互換な関数が紛れ込む再発を防ぐゲート) | |
| # self-metrics … checks 成功後、psap 自身で src/ を計測し(ドッグフーディング)、 | |
| # レポートを Artifact 化 + Step Summary に表示。循環依存があれば失敗させる | |
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| jobs: | |
| checks: | |
| name: checks (PHP ${{ matrix.php-version }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| php-version: ["8.3", "8.4", "8.5"] | |
| steps: | |
| - name: リポジトリを取得 | |
| uses: actions/checkout@v4 | |
| # Docker ビルドより高速でキャッシュも効くため、Actions 上では | |
| # Docker(docker/Dockerfile)ではなく setup-php を使う | |
| - name: PHP をセットアップ | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: ${{ matrix.php-version }} | |
| coverage: none | |
| - name: composer.json / composer.lock を検証 | |
| run: composer validate --strict | |
| # vendor をキャッシュし、composer.lock とバージョンが変わらない限り再利用する | |
| - name: Composer パッケージをキャッシュ | |
| uses: actions/cache@v4 | |
| with: | |
| path: vendor | |
| key: ${{ runner.os }}-php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-php${{ matrix.php-version }}-composer- | |
| - name: 依存関係をインストール | |
| run: composer install --prefer-dist --no-progress | |
| - name: テストを実行(phpunit) | |
| run: composer test | |
| - name: 静的解析を実行(phpstan level max) | |
| run: composer stan | |
| - name: コーディングスタイルをチェック(php-cs-fixer dry-run) | |
| run: composer cs | |
| no-dev-smoke: | |
| name: no-dev smoke (PHP 8.3, --no-dev) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: リポジトリを取得 | |
| uses: actions/checkout@v4 | |
| - name: PHP をセットアップ | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: "8.3" | |
| coverage: none | |
| # --no-dev の vendor は checks ジョブ(dev 込み)と内容が異なるため、 | |
| # キャッシュキーを分ける(-nodev- を含める) | |
| - name: Composer パッケージをキャッシュ | |
| uses: actions/cache@v4 | |
| with: | |
| path: vendor | |
| key: ${{ runner.os }}-php8.3-nodev-composer-${{ hashFiles('**/composer.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-php8.3-nodev-composer- | |
| # dev 依存(symfony/polyfill-php84, polyfill-php85 等)を含まない、 | |
| # 本番配布相当の vendor で動作確認する | |
| - name: 依存関係をインストール(--no-dev) | |
| run: composer install --no-dev --prefer-dist --no-progress | |
| - name: スモークテスト用ディレクトリを用意 | |
| run: mkdir -p /tmp/psap-nodev-smoke | |
| - name: 自己計測(text) | |
| run: php bin/psap analyze src/ --format text | |
| # 循環依存ベースラインの生成→読み込みを一往復させ、 | |
| # ベースライン読み込み経路(polyfill 隠れ依存の主因だった箇所)を通す | |
| - name: 循環依存ベースラインを生成 | |
| run: php bin/psap analyze src/ --generate-cycle-baseline /tmp/psap-nodev-smoke/cycle-baseline.json | |
| - name: 循環依存ベースラインを読み込んで比較 | |
| run: php bin/psap analyze src/ --cycle-baseline /tmp/psap-nodev-smoke/cycle-baseline.json --fail-on-cycle | |
| self-metrics: | |
| name: self-metrics(psap で psap を計測) | |
| needs: checks | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: リポジトリを取得 | |
| uses: actions/checkout@v4 | |
| - name: PHP をセットアップ | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: "8.5" | |
| coverage: none | |
| - name: Composer パッケージをキャッシュ | |
| uses: actions/cache@v4 | |
| with: | |
| path: vendor | |
| key: ${{ runner.os }}-php8.5-composer-${{ hashFiles('**/composer.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-php8.5-composer- | |
| - name: 依存関係をインストール | |
| run: composer install --prefer-dist --no-progress | |
| - name: レポート出力先ディレクトリを用意 | |
| run: mkdir -p psap-report | |
| # text レポートを出力しつつ、--fail-on-cycle で循環依存(ADP違反)が | |
| # ないことを CI ゲートにする(見つかれば exit code 1 でジョブが失敗する) | |
| - name: 自己計測(text + 循環依存ゲート) | |
| run: php bin/psap analyze src/ --format text --output psap-report/report.txt --fail-on-cycle | |
| - name: 自己計測(mermaid) | |
| run: php bin/psap analyze src/ --format mermaid --output psap-report/report.mmd | |
| - name: 自己計測(plantuml) | |
| run: php bin/psap analyze src/ --format plantuml --output psap-report/report.puml | |
| - name: 自己計測(json) | |
| run: php bin/psap analyze src/ --format json --output psap-report/report.json | |
| - name: レポートを Artifact にアップロード | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: psap-report | |
| path: psap-report/ | |
| retention-days: 30 | |
| # text の表と mermaid の I/A 図を Step Summary に表示する。 | |
| # ```mermaid フェンスで囲むと GitHub 上で図としてレンダリングされ、 | |
| # 開発者が Actions の実行結果を開くだけで自己計測結果を確認できる | |
| - name: Step Summary に結果を書き込む | |
| run: | | |
| { | |
| echo "## psap self metrics (src/)" | |
| echo '```' | |
| cat psap-report/report.txt | |
| echo '```' | |
| echo "### I/A グラフ" | |
| echo '```mermaid' | |
| cat psap-report/report.mmd | |
| echo '```' | |
| } >> "$GITHUB_STEP_SUMMARY" |