[小ネタ]GitHub Actionsのワークフローコマンドを使ってログを分かりやすく装飾してみた

[小ネタ]GitHub Actionsのワークフローコマンドを使ってログを分かりやすく装飾してみた

echo '::error::エラーログです'のような記述でエラーが見やすくなります
Clock Icon2024.09.03

リテールアプリ共創部@大阪の岩田です。

みんな大好きGitHub Actionsですが私が関わっている案件だとCI/CD以外にもちょっとしたスクリプトを実行するために利用することがあります。例えばですが、ダウンタイムを伴うデプロイの前にシステムをメンテナンスモードに切り替えるスクリプトを実行するといったケースで便利に利用させてもらってます。各担当者のローカル環境からスクリプトを実行する運用と比べて、必要なコマンドがインストールされているのか?バージョン差異によって挙動が変わらないか?といった心配が少なくなるのは大きなメリットだと感じています。

このブログではシェルスクリプト等から出力したログを分かりやすくするために装飾する方法について紹介します。

ワークフローコマンド

GitHub Actionsではランナーマシンとやりとりを行うためのワークフローコマンドというものが利用できます。このワークフローコマンドを利用するとアクション同士で値を受け渡したり、ログを装飾したりといったことが可能になります。

ワークフローコマンドの多くはecho ::<ワークフローコマンド> <ワークフローコマンドのパラメータ名>=<パラメータの値>::のように::で囲まれた文字列を標準出力/標準エラー出力に出力することで呼び出せます。

例えばデバッグログを出力したい場合はecho "::debug::デバッグログ"を実行することでデバッグログが出力されます。

シェルスクリプトのログを装飾するという目的を考えると、以下のワークフローコマンドが便利に使えそうです。

コマンド 用途
debug デバッグメッセージの出力
notice 通知メッセージの出力
warning 警告メッセージの出力
error エラーメッセージの出力
group 以後のログをグループ化する
endgroup ログのグループ化を終了する

各ワークフローコマンドの詳細については公式ドキュメントを参照してください

https://docs.github.com/ja/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions

やってみる

実際にワークフローコマンドを使ってログを装飾してみます。まず以下のシェルスクリプトを用意しました。

#!/bin/bash
echo '::group::CLIツールから出力されたログ'
echo '::notice title=入力値のチェック::入力値をチェックします'
echo '::warning::これはwarningのログです'
echo '::error::これはerrorログです'
echo '::error title=CLIツールが異常終了しました::エラーが発生したので処理を中断します'
echo '::endgroup::'

echo '::notice title=入力値のチェック::入力値をチェックします'echo '::error title=CLIツールが異常終了しました::エラーが発生したので処理を中断します'の部分についてはワークフローコマンドのパラメータの1つであるtitleも設定しています。

以下のワークフローで上記シェルスクリプトを実行します。

on:
  workflow_dispatch
jobs:
  test-logging:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Run Some CLI Tool
        run: |
          sh test.sh

ワークフローの実行履歴を確認すると以下の通りログが出力されていました

gh-actions-decorated-log-annotation

ログをパっと見た時にエラーや警告が発生しているのが分かりやすいですね。パラメータでtitleを指定した場合は指定したタイトルが出力されていることも分かります。

さらにジョブの実行履歴から詳細を確認すると以下のようなログが出力されていました

gh-actions-decorated-log

こちらもWarningやErrorが色付きで表示されていて分かりやすくなっています。また、出力したログが全てCLIツールから出力されたログというグループにまとまっているので、UIから簡単にログを開いたり閉じたりできるのもポイントです。

まとめ

GitHub Actionsのワークフローコマンドについて簡単に紹介しました。

こういったちょっとしたテクニックを活用するとログが見やすくなって、GitHub Actionsがより便利に使えそうです。よければ参考にしてみてください。

参考

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.