CIジョブの実行時間集計
GitHub Actions のジョブ別の所要時間を集計する。
GitHub Actions の jobs API の応答(JSON)を貼り付けると、ジョブ名ごとの回数・合計・平均・最大の所要時間を表にします。未完了のジョブは除きます。入力は端末の外へ送信しません。
ジョブの所要時間を集計する
入力した内容は送信されません。貼り付けた文字や選んだファイルは、お使いのブラウザの中だけで処理します。本サイトのサーバーや第三者へ送信・保存しません(通信を禁止する設定でページを配信しています)。
結果
エラー 0 件・警告 0 件・情報 2 件
指摘(エラー・警告・情報)
- 情報 jobs[3] 「test」は completed_at が null(未完了)なので集計から除きました。
- 情報 全体 時刻は RFC 3339 の date-time として解析し、所要時間は completed_at − started_at です。平均・最大は秒未満を四捨五入して表示します。
| 集計したジョブ | 3 件 |
|---|---|
| 除いたジョブ | 1 件 |
| ジョブ名の数 | 2 種類 |
| 所要時間の合計 | 16分0秒 |
ジョブ別の所要時間
| ジョブ名 | 回数 | 合計 | 平均 | 最大 |
|---|---|---|---|---|
| test | 1 | 10分0秒 | 10分0秒 | 10分0秒 |
| build | 2 | 6分0秒 | 3分0秒 | 3分30秒 |
初期表示は入力例「build と test の 2 種類(1 件は実行中)」の結果です。入力を変えるとその場で処理し直します。判定の根拠は仕様と根拠にまとめています。
ご利用にあたって
- 平均は秒未満を四捨五入した表示です。
- 認証情報を含む出力(ヘッダーなど)は貼り付けないでください。
使い方
- GitHub の API(または gh api の出力)で取得した jobs の JSON を貼り付けます。
- 表で、ジョブ名ごとの回数・合計・平均・最大の所要時間を確認します。
- 合計が大きいジョブから、短縮できる工程(キャッシュ、並列化など)を検討します。
- 指摘で、未完了や時刻が読めなくて除いたジョブを確認します。
入力例と結果
代表的な入力・境界の入力・壊れた入力の例です。例ごとに入力・出力・指摘と、その結果になる理由(検算)を載せています。
| 入力例 | 結果 |
|---|---|
| build と test の 2 種類(1 件は実行中) | エラー 0 件・警告 0 件・情報 2 件 |
| タイムゾーンのオフセットと 1 時間超 | エラー 0 件・警告 0 件・情報 1 件 |
| 平均の四捨五入 | エラー 0 件・警告 0 件・情報 1 件 |
| 完了が開始より前・時刻の形が違う(壊れた入力) | エラー 0 件・警告 2 件・情報 1 件 |
このツールでできないこと(制約)
- ジョブの待ち時間(キュー待ち)は含みません。started_at から completed_at までの実行時間だけを数えます。
- ステップ(steps)ごとの内訳は集計しません。ジョブ単位の所要時間だけを出します。
- GitHub の API を呼び出す機能はありません。取得した JSON を貼り付けて使います(トークンなどの認証情報は貼り付けないでください)。
よくある質問
トークンを貼り付けても大丈夫ですか?
貼り付ける必要はありません。この道具は JSON の中の時刻と名前だけを読みます。認証情報は API を呼ぶ側で使い、貼り付けるのは応答の JSON だけにしてください。
複数の実行をまとめて集計できますか?
できます。複数の実行の jobs の配列を 1 つの配列にまとめて貼り付けると、同じ名前のジョブをまとめて回数・合計・平均・最大を出します。
入力した内容は送信されますか?
処理はお使いのブラウザの中だけで行い、貼り付けた内容をサーバーや第三者へ送信・保存しません。ページは通信を禁止する設定で配信しています。