English | 日本語
ワークフロー実行中にシステムメトリクスを収集し、Mermaidチャートを出力するGitHub Actionsです。
- システムメトリクス収集: ワークフロー実行中のCPU負荷とメモリ使用量をリアルタイムで収集
- Mermaidチャート生成: 収集したメトリクスをMermaid形式の積み上げ棒グラフとして可視化
- ジョブサマリー出力: GitHub Actionsのジョブサマリーに自動的にチャートを表示
次のようなチャートやデータが出力されます。
システム/ユーザーCPU負荷の積み上げ棒グラフです。
使用中/空きメモリの積み上げ棒グラフです。
CPU LoadsやMemory UsagesのJSONデータです。
このアクションはワークフローの先頭で実行することを前提としています。
name: Example Workflow
on: [push]
jobs:
example:
runs-on: ubuntu-latest
steps:
# ワークフローの先頭でactions-workflow-metricsを実行
- name: Start Workflow Telemetry
uses: dev-hato/actions-workflow-metrics@v1
# 以降の通常のステップ
- name: Checkout
uses: actions/checkout@v4
- name: Run tests
run: npm test
# ... その他のステップ- main (ワークフロー開始時): バックグラウンドでメトリクス収集サーバーを起動
- ワークフローの各ステップ: 通常通り実行されながらバックグラウンドでメトリクスが収集される
- post (ワークフロー終了時): 収集したメトリクスをMermaidチャートとして描画し、ジョブサマリーに出力
- Node.js: 24.x
- TypeScript: 5
- パッケージマネージャー: Bun
- 主要ライブラリ:
systeminformation: システムメトリクス収集zod: スキーマバリデーション@actions/core: GitHub Actions連携
bun installセキュリティのため、pre-commitをインストールしてください。コミット時にクレデンシャルが含まれていないか自動チェックされます。
# macOSの場合
brew install pre-commit
# またはpipを使用
pip install pre-commit
# pre-commitフックをインストール
pre-commit installこれにより、コミット時に自動的にgitleaksが実行されます。 APIキーやトークンなどの機密情報が含まれていないかチェックされます。
# 型チェック + バンドル(dist/ディレクトリに出力)
bun run build
# ユニットテストの実行(Bunテストランナー)
bun test
# コードフォーマット(Prettier)
bun run fixsrc/
├── lib.ts # 共通スキーマとサーバー設定
├── main/
│ ├── index.ts # mainエントリーポイント(サーバー起動)
│ ├── server.ts # メトリクス収集HTTPサーバー
│ ├── metrics.ts # Metricsクラス(メトリクス管理)
│ └── metrics.test.ts # Metricsクラスのテスト
└── post/
├── index.ts # postエントリーポイント(ジョブサマリー出力)
├── lib.ts # メトリクスフェッチとレンダリング
├── lib.test.ts # レンダリングロジックのテスト
├── renderer.ts # Mermaidチャート生成
└── renderer.test.ts # Mermaidチャート生成のテスト
src/main/index.tsが実行される- Node.jsで
src/main/server.tsをデタッチドプロセスとして起動 - サーバーが
localhost:7777でメトリクスJSONを配信開始 Metricsクラスが5秒ごとにsysteminformationライブラリを使ってCPU/メモリ情報を収集
src/post/index.tsが実行されるlocalhost:7777からメトリクスJSONを取得(タイムアウト: 10秒)RendererクラスがMermaidチャートを生成@actions/coreのsummaryAPIでジョブサマリーに出力


