ログをグループ化する

GitHub Actionsのログは実行内容が多いと縦に長くなり、目的の箇所を探しづらい。

::group::::endgroup::のワークフローコマンドを使うと、ログを折りたたみ可能なブロックにまとめられる。

使い方

echo::group::グループ名を出力してから、ログをまとめたい範囲の最後で::endgroup::を出力する。

- name: Group logs
  run: |
    echo "::group::hoge"
    echo "line1"
    echo "line2"
    echo "line3"
    echo "::endgroup::"

実行結果はhogeを見出しとした折りたたみブロックになり、クリックすると中のline1line3が展開される。

複数のグループを作る

::group::::endgroup::は1ステップの中に複数回書ける。

- name: Multiple groups
  run: |
    echo "::group::setup"
    echo "setup step1"
    echo "setup step2"
    echo "::endgroup::"

    echo "::group::build"
    echo "build step1"
    echo "build step2"
    echo "::endgroup::"

処理のまとまりごとにグループ化すると、ログ全体の見通しがよくなる。

実際にGitHub Actions上で実行すると、以下のようにsetupbuildtestのグループが並び、必要なグループだけを開いて中身を確認できる。

grouped log

注意点

::group::はネストできない。
グループの中で別の::group::を開始すると、先に開いていたグループは自動的に閉じられ、ネストした::group::が終了した時点で再開される。
複数のグループに分ける場合は、フラットな構造で並べるとよい。

用途

::group::によるグループ化は、以下のようなログが長くなりがちな処理で役立つ。

  • 依存パッケージのインストールログ
  • テストの実行結果
  • Terraformのplan結果

ログの本文自体は減らないが、折りたたんでおけば必要な箇所だけをすぐに確認できる。

参考

Workflow commands for GitHub Actions - Grouping log lines