← 全部工具

suzuki-shunsuke/ghaperf

热度 75 更新于 开发与构建

ghaperf is a CLI to analyze the performance of GitHub Actions using GitHub API and raw job logs

githubauto-collected

安装

暂未验证可直接使用的安装命令,请查看项目官方文档或 Release。

ghaperf

ghaperf analyzes the performance of GitHub Actions workflows using GitHub API and raw job logs. Unlike other tools, it can detect bottlenecks inside composite actions by parsing job logs and extracting step-level timing data.

Why ghaperf?

  • Existing tools can't detect bottlenecks inside steps. ghaperf solves this by analyzing actions logs.
  • Many existing tools need metrics storage, so the setup is bothersome and it costs 💸. ghaperf doesn't need any storage, so it's easy to use and free

Key Features

  • Deep visibility into composite actions - Detect bottlenecks inside composite actions that other tools miss
  • No infrastructure needed - Just a CLI tool, no backend or metrics storage required
  • Multiple analysis modes - Analyze workflows, workflow runs, or individual jobs
  • Markdown reports - Generate shareable performance reports
  • Intelligent caching - Cache GitHub API responses for completed runs to speed up analysis
  • Flexible filtering - Filter and normalize job names using configuration files

Quick Start

  • Install ghaperf
  • Set your GitHub Access token to download action logs
  • Run ghaperf
export GITHUB_TOKEN=xxx

# Analyze a workflow across multiple runs
ghaperf --repo aquaproj/aqua-registry --workflow test.yaml --count 10 --threshold 2s

Example Report

<details <summaryExample Report Output</summary

This report was generated by ghaperf. <table <tr<tdghaperf version</td<td<a href="https://github.com/suzuki-shunsuke/ghaperf/releases/tag/v0.1.1"v0.1.1</a</td</tr <tr<tdCreated At</td<td2025-11-02T21:03:34+09:00</td</tr <tr<tdThreshold</td<td2s</td</tr <tr<tdRepository</td<td<a href="https://github.com/aquaproj/aqua-registry"aquaproj/aqua-registry</a</td</tr <tr<tdThe Number of Workflow Runs</td<td10</td</tr <tr<tdWorkflow Name</td<tdtest.yaml</td</tr </table

Job: test / test / test (macos-13)

<table <tr<tdAverage Job Duration</td<td1m15s (11m11s/9)</td</tr <tr<tdSlowest Jobs</td<td<a href="https://github.com/aquaproj/aqua-registry/actions/runs/19007740980/job/54284198226"8m25s</a, <a href="https://github.com/aquaproj/aqua-registry/actions/runs/19008352862/job/54285609922"24s</a, <a href="https://github.com/aquaproj/aqua-registry/actions/runs/19010028182/job/54289608586"23s</a</td</tr </table

Slow steps

  • 1m4s (8m31s/8): Run aquaproj/registry-action/test@68f10339de561d67f9acea40b91dc36aa5011ea8
  • 1m36s (7m58s/5): Run aqua i --test
  • 16s (16s/1): Run rustup update
  • 6s (48s/8): Set up job
  • 6s (49s/8): GITHUBTOKEN Permissions
  • 4s (30s/8): Run actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8
  • 4s (29s/8): Run aquaproj/aqua-installer@ea518c135a02fc11ff8024364510c181a5c6b342
  • 3s (21s/8): Run if [ "${SKIPINSTALLAQUA:-}" = true ] && command -v aqua /dev/null; then

Job: test / test / test (windows-latest, arm64)