🐺

GitHub Actions Job Summary を使う

に公開

はじめに

GitHub Actions にはジョブの実行結果をまとめて表示するための機能として Job Summary を提供しています。
この Job Summary を使用して誰が見てもわかりやすい実行結果を表示する術について、必要最低限をまとめた記事です。

Job Summary とは

GitHub Actions のジョブの実行結果をまとめて表示するための機能です。ジョブの実行中に生成された情報をマークダウン形式で記述し、ジョブの最後にその内容を表示することができます。

GitHub Flavored Markdownというマークダウンの拡張仕様に対応しており、テーブルやリスト、リンクなどを使用して情報を整理できます。

各ステップのMarkdownコンテンツをGITHUB_STEP_SUMMARY環境変数へ追記することで表示されます。

echo "### Hello world! :rocket:" >> $GITHUB_STEP_SUMMARY

actionsのtoolkitを使う方法もあります。

core.summary.addHeading('My Heading', '2')
// Output: <h2>My Heading</h2>

https://github.com/actions/toolkit/blob/main/packages/core/README.md#populating-job-summary

継続して出力したい場合

GITHUB_STEP_SUMMARYに追記する必要がある場合は>>GITHUB_STEP_SUMMARYに追記できます。

echo "### Hello world! :rocket:" >> $GITHUB_STEP_SUMMARY

Summaryを分けたい場合

GITHUB_STEP_SUMMARYはジョブ単位で1つなので、複数のSummaryを分けたい場合は複数のジョブに分ける必要があります。

jobs:
  job1:
    runs-on: ubuntu-latest
    steps:
      - name: Step 1
        run: echo "### Job 1 Summary" >> $GITHUB_STEP_SUMMARY

  job2:
    runs-on: ubuntu-latest
    needs: job1
    steps:
      - name: Step 2
        run: echo "### Job 2 Summary" >> $GITHUB_STEP_SUMMARY

Job Summary の保存期間

GitHub Docs の copilot曰く

ジョブのサマリー(ワークフローで生成されるログ/アーティファクトに含まれる情報)はデフォルトで90日保存されます。保存期間は変更可能です:

公開リポジトリ: 1日〜90日の間で設定可能
非公開リポジトリ: 1日〜400日の間で設定可能
設定はリポジトリ単位または組織単位で行えます。手順(リポジトリの場合):

リポジトリのメインページへ移動 → 右上の Settings(歯車)をクリック。
左サイドバーで play(Actions)→ General を選択。
「Artifact and log retention」に新しい日数を入力。
Save をクリック。

Settings → Actions → General → Artifact and log retention で設定できそうでした。(組織に関するDocumentはありました)

https://docs.github.com/ja/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization

Artifact の併用

Job Summary に表示するにはデカいけど、後で見返したいログやファイルなどは Artifact に保存しておくと良いです。

注意点

各ステップのサイズは最大1MiBに制限されているので、大量のログを出力する場合は注意が必要です。

https://docs.github.com/ja/actions/reference/workflows-and-actions/workflow-commands#step-isolation-and-limits

Discussion