Skip to content

docs: link v0.1.0 phar download in install docs #44

docs: link v0.1.0 phar download in install docs

docs: link v0.1.0 phar download in install docs #44

Workflow file for this run

# 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"