はじめに🥞
エラー発生頻度がそれなりにある場合、いちいちワークフローの実行ログを確認するのが面倒だったので、エラーメッセージをアノテーションとして表示させたかった。
アノテーションを表示するには Problem Matchers を定義し、ワークフローで読み込めばいいらしい。
GitHub アノテーション🔔
UIに表示される特定のメッセージのこと。
ワークフロー実行結果の下部に表示されるやつ。
Problem Matchers 🌡️
GitHub Action の出力を正規表現のパターンで解析してアノテーションとして表示する機能。
Problem Matcher の定義は JSONファイルに記述し、ワークフローファイルでその定義ファイルを有効化する。
定義
ここのドキュメントを参考にして定義する。
指定する正規表現パターンではキャプチャグループ ()
を利用してファイル名や行番号、エラーメッセージなどを設定する。
Example 1. Problem Matcherの定義例
.github/my-problem-matcher.json
{
"problemMatcher": [
{
"owner": "this_matcher_ID", (1)
"pattern": [
{
"regexp": "^([^:]+):(\\d+):(\\d+): (.+)$", (2)
"message": 4, (3)
"file": 1,
"fromPath": 1,
"line": 2,
"column": 3
}
]
}
]
}
1 | 必須。Problem Matcher の ID として任意の名前をつける。 |
2 | 必須。出力から抽出する正規表現パターンを指定。 キャプチャグループを用いることで他プロパティから利用できるようにする。 |
3 | 必須。regexp のグループ番号からエラーメッセージにあたる値を指定。 |
owner , regexp , message が必須プロパティ。
|
有効化/無効化
ワークフローコマンドで Problem Matcher の有効・無効を制御する。
- 有効化
-
add-matcher
コマンドで定義 JSON ファイルを指定する。ワークフローで独自 Problem Matcher を有効化steps: - name: Enable problem matcher run: echo "::add-matcher::.github/my-problem-matcher.json"
- 無効化
-
remove-matcher
コマンドで Problem Matcher の ID (owner
プロパティの値)を指定する。独自 Problem Matcher を無効化steps: - name: Disable problem matcher run: echo "::remove-matcher owner=matcher-ID::"
add-matcher ではファイルパスを指定、remove-matcher では定義された owner プロパティ値を指定する。
|
おわりに😎
Problem Matcher の正規表現パターンさえ書ければアノテーションとして表示できることがわかった。
ワークフローのログがわかりやすくなるのでうまく利用していきたい。