Core/Dash CI/CD 自動パフォーマンスチェック
1回のcurl呼び出しで、Core/DashをCI/CDパイプラインに統合します。リリース前にパフォーマンス予算をオーバーしたビルドを警告します。すべてのデプロイにおいて、実際のユーザーパフォーマンスを追跡します。
どのデプロイが原因で遅くなったのか?
2ヶ月前のLCPは2.1秒でした。現在は2.9秒です。その間に40回デプロイしています。問題は、タイムラインを見るだけではどのデプロイが原因か分からないことです。
![]()
そのため、Core/Dashは実際のユーザーからのすべてのアクセスを特定のデプロイに紐付けます。RUMデータは「先月何かが遅くなった」ではなく、「v2.4.1が原因である」と示すべきです。
Core/Dashは、各デプロイの前後で2つのチェックを実行します。デプロイ前にはプレビュービルドをスキャンし、ページが予算をオーバーしている場合はパイプラインに警告を出します。デプロイ後は、すべてのページビューにデプロイバージョンがタグ付けされます。各バージョンは、自身の実際のユーザートラフィックに対して測定されます。
この2つのチェックは、異なるタイミングでCore Web Vitalsの問題を捕捉します。デプロイ前のチェックはシンセティックテストであり、ビルド自体に潜むミスを見つけます。4MBのPNGになった新しいヒーロー画像や、バンドルに300KBのスクリプトを追加したマーケティングタグなどです。デプロイ後のチェックは純粋なRUMデータです。リリースがLCP、INP、CLSに実際にもたらす影響を確実に示します。
1: デプロイ前: シンセティックチェック
Core/Dashは監視対象ページのサンプルをスキャンできます。結果は、独自のCore/Dashパフォーマンス予算と比較されます。ページが予算を超過している場合は、デプロイ前に通知されます。通知をどう扱うかは自由です。
このチェックの正確性を保つため、Core/Dashは同じビルドを2回実行しても変わらない要素のみをスコア化します。Lighthouseのパフォーマンススコアは、全く同じページを2回実行しても10ポイント変動することがあります。CPUのタイミングに大きく左右され、監査を実行するマシンが毎回異なるからです。これをCIでスコア化すると、意味のない赤いパイプラインが量産されます。
CI/CDパイプラインにチェックを追加する
まずプロジェクトAPIキーを作成します(アプリ内:プロジェクト、次にAI Insights、次にConnect Your AI)。その後、デプロイジョブの前にこのステップを追加してください。チェック用エンドポイントを呼び出し、完了までに約30〜45秒かかります。
STATUS=$(curl -sS -o gate.json -w '%{http_code}' -X POST "https://app.coredash.app/api/project/releases/check" \
-H "Authorization: Bearer $COREDASH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tag":"v1.2.3","origin":"https://preview.example.app"}')
if [ "$STATUS" != "200" ]; then
echo "CoreDash check failed to run (HTTP $STATUS): $(cat gate.json)" >&2
exit 0
fi
VERDICT=$(jq -r '.data.check.status' gate.json)
echo "CoreDash: $VERDICT"
# if [ "$VERDICT" = "breach" ]; then exit 1; fi ## uncomment to block the deploy
デフォルトでは、判定結果がCIログに報告されるだけです。ページが予算を超過した場合にビルドを失敗させるには、最後の行のコメントを外してください。
データスキーマ:
| フィールド | 必須 | 説明 |
|---|---|---|
tag | はい | バージョン文字列。文字、数字、. _ / -を使用し、最大64文字。 |
origin | はい | スキームとホストのみ。例: https://pr-42.example.app。パス、クエリ、認証情報は不可。 |
sha | いいえ | Gitコミットハッシュ |
branch | いいえ | Gitブランチ名 |
actor | いいえ | デプロイのトリガー元 |
repo | いいえ | リポジトリ名 |
prNumber | いいえ | プルリクエスト番号 |
runUrl | いいえ | CI実行結果へのリンク |
Git関連のフィールドはアプリ内のディープリンク用に保存されます。これによって処理が分岐することはありません。
レスポンス内容
有効なリクエストは常にHTTP 200を返します。結果や判定は、結果のdata.check.statusから読み取れます:
| ステータス | 意味 |
|---|---|
pass | スコア化されたすべての項目が予算内 |
breach | 少なくとも1つの項目が予算を超過 |
error | スキャンできたページがない |
no-budgets | スコア化できる予算が設定されたページがない |
注意: プレビュードメインは、CoreDashのサーバーからパブリックインターネット経由でアクセスできる必要があります
2: デプロイ後: RUMデータの検証
デプロイ後のチェックと検証は、RUMデータをデプロイと照合することで行われます。データをデプロイに紐付けるため、現在のデプロイバージョンをAPIに簡単に送信できます。
curl -sS -X POST "https://app.coredash.app/api/project/releases/ingest" \
-H "Authorization: Bearer $COREDASH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tag":"v1.2.3"}'
あるいは、gitのrefをバージョンとして使用し、GitHub Actionsで完全に自動化することもできます:
- name: Report release to CoreDash
if: success()
env:
COREDASH_API_KEY: ${{ secrets.COREDASH_API_KEY }}
run: |
curl -sS -f -X POST "https://app.coredash.app/api/project/releases/ingest" \
-H "Authorization: Bearer ${COREDASH_API_KEY}" \
-H "Content-Type: application/json" \
-d "{\"tag\":\"${{ github.ref_name }}\"}"
パイプラインがなくても問題ありません。CoreDashのリリースページにはデプロイのタグ付けフォームがあります。これは手動操作が必要で自動化できないため、必須の方法ではありません。
Core/Dashでのリリースの比較
リリース(Releases)ページには、過去30日間の履歴が新しい順に一覧表示されます。バージョン、CIとアプリのどちらから送信されたか、デプロイ時間、各Core Web Vitalsのp75値、前回リリースからの差分、現在の予算ステータスが確認できます。
リリース詳細(Release detail)では、これら2つの要素が交わります。上部にはデプロイ前のチェックが、スキャンされたページおよび予算項目ごとに1行ずつ表示されます。その下には、同じフィルター条件でサイト全体に対して測定されたリリースの結果が表示されます。これにより、ビルド時の予測と実際のユーザー体験を同じ画面で比較できます。

パフォーマンススナップショット(Performance Snapshots)では、チャート上にデプロイのマーカーを描画できます。対象はリリースされたバージョンのみです。

関連情報: スクリプトやAIエージェントからデータを照会する場合はCore/Dash APIを、これらの判定に使用される予算についてはアラートと通知を、トラッカーがまだサイトに導入されていない場合はインストールを参照してください。