Metrics CI — metrics-ci.yaml¶
What:scripts/metrics/(Node.js パッケージ)の Lint / Format チェック / テストを自動実行し、PR と main への品質ゲートを提供する。
導入パッケージ¶
signage-jetson
When(トリガ / 対象)¶
push/pull_requestpaths: scripts/metrics/**(メトリクス関連の変更に限定)
Permissions / Secrets¶
- 追加の権限・Secrets 不要(デフォルト権限で可)
Inputs / Outputs¶
- 入力:
scripts/metrics配下のソース /package-lock.json - 出力:ログ(アーティファクトなし)
Steps(処理の流れ)¶
- Checkout:
actions/checkout@v4 - Node セットアップ:
actions/setup-node@v4 node-version: 20cache: npm+cache-dependency-path: scripts/metrics/package-lock.json- 依存インストール:
npm ci --prefix scripts/metrics - Lint:
npm run --prefix scripts/metrics lint - Prettier 形式チェック:
npm run --prefix scripts/metrics format - Jest テスト:
npm run --prefix scripts/metrics test
Failure → Fix(よくある失敗と対処)¶
- Lint/Format 失敗:ローカルで
npm run lint/npm run format(またはformat:check)を実行して修正 → 再push - テスト失敗:
npm testで再現し、モック・環境変数依存を解消 - キャッシュ不整合:
package-lock.json更新後はnpm ciを再実行。CI 側は自動で新キャッシュに更新される - Node バージョン差異:ローカル(または実行環境)と CI の Node バージョンが異なる場合は
.nvmrcを用意し揃える
運用ノート / ベストプラクティス¶
- バージョン整合性:本番実行バージョン(例:Node 22)と CI の Node バージョンを一致させるか、必要なら Matrix(20 / 22) で検証
- 並行実行制御(任意):古い同ブランチの実行をキャンセル
concurrency:
group: metrics-ci-${{ github.ref }}
cancel-in-progress: true
- フォーマットコマンド:
formatが書き換えを行う場合は、CI 用にformat:check(非破壊) を用意して使い分ける - テストの安定化:ネットワーク I/O を含む場合は モック化し、CI での flaky を防ぐ