【入門編】GitHub Actionsのステータスチェックを動的に変更する「Checks API」の高度活用術 – バージョン管理・CI/CD活用バイブル

こんにちは。今日もコードを書いていますか?
CI/CDの世界へようこそ。私はこれまで数え切れないほどのパイプラインを設計し、数百万回ものビルドを見守ってきました。

そんな私が、モダンな開発現場において「これを知っているだけでチームの生産性が劇的に変わる」と断言できる技術があります。それが、GitHub Actionsの「Checks API」の高度な活用です。

多くのエンジニアは、CIを「成功(緑)」か「失敗(赤)」の二択で考えてしまいがちです。しかし、実際の開発現場はもっと曖昧で、もっと豊かですよね?
「テストは通ったけれど、少しコードの肥大化が気になる」「マージは許可するけれど、パフォーマンスの微減を警告しておきたい」……。

今回は、そんな「白黒つけられない大切な情報」をGitHubのUI上に美しく、かつ動的に表示する方法を、基礎から丁寧に解説します。これをマスターすれば、あなたのCIはただの自動化ツールから、チームに寄り添う「賢いパートナー」へと進化しますよ。

—

1. Checks APIとは? 「ただのステータス」との違い

GitHub Actionsを使い始めると、プルリクエスト(PR)の画面に「All checks have passed」と表示されるのを目にするはずです。

通常、これは`.github/workflows/.yml`が完走したかどうかをGitHubが自動で判断しています。しかし、Checks APIを直接叩くと、以下のような「一歩先の制御」が可能になります。

  • 動的な判定: 実行中に計算したスコア(例:テストカバレッジやLighthouseのスコア)に応じて、ステータスを「成功」「中立(Neutral)」「失敗」とリアルタイムに書き換える。
  • リッチなレポート: PRの画面に、マークダウン形式で詳細なサマリー(表やリンク)を直接埋め込む。
  • アノテーション: ソースコードの特定の行に対して、CIの結果から直接コメント(警告)を出す。

「失敗させてマージを止めるほどではないけれど、開発者に気づいてほしい」というWarning(警告)の文化を、CIに組み込めるのが最大の魅力です。

—

2. 準備:権限(Permissions)のセットアップ

GitHub ActionsからChecks APIを操作するには、ワークフローに「書き込み権限」を与える必要があります。
まずは、`.github/workflows/main.yml`(ファイル名は任意です)の冒頭に、以下の魔法の数行を書き加えましょう。

permissions:
contents: read
checks: write # ここが最も重要!Checks APIを操作する許可を与えます
pull-requests: write

これだけで、あなたのワークフローはGitHubのステータス画面を自由自在に操る「指揮官」の権利を得たことになります。

—

3. 実践:独自の「品質メトリクス・チェッカー」を作ってみよう

今回は、初心者の方でもすぐに試せるように、「独自の計算ロジックに基づいて、WarningやSuccessを出し分ける」という実践的なHelloWorldを作ってみましょう。

以下のコードをコピーして、リポジトリに配置してみてください。

name: “Dynamic Quality Gate”

on:
pull_request:
branches: [ main ]

jobs:
check-quality:
runs-on: ubuntu-latest
steps:

  • uses: actions/checkout@v4
  • name: “Run Custom Logic”

id: custom_logic
run: |
# ここで独自の検証(例:カバレッジ計測やファイルサイズチェック)を行うと想定します。
# 今回はデモとして、ランダムなスコアを生成してみましょう。
SCORE=$(( ( RANDOM % 100 ) + 1 ))
echo “score=$SCORE” >> $GITHUB_OUTPUT
echo “計測されたスコア: $SCORE”

  • name: “Update GitHub Check Status”

if: always() # 前のステップが失敗しても実行するようにします
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCORE: ${{ steps.custom_logic.outputs.score }}
run: |
# GitHub CLI (gh) を使って、Checks APIをスマートに叩きます。

# 1. 判定ロジックの定義
CONCLUSION=”success”
SUMMARY=”素晴らしい品質です!”

if [ $SCORE -lt 30 ]; then
CONCLUSION=”failure”
SUMMARY=”品質スコアが低すぎます。修正が必要です。”
elif [ $SCORE -lt 70 ]; then
CONCLUSION=”neutral” # これが「Warning」に近い挙動になります
SUMMARY=”合格点ですが、改善の余地があります(Warning)。”
fi

# 2. Checks APIの呼び出し
# endpoint: /repos/{owner}/{repo}/check-runs
gh api –method POST /repos/${{ github.repository }}/check-runs \
-f name=”Quality Gate Monitor” \
-f head_sha=”${{ github.event.pull_request.head.sha }}” \
-f status=”completed” \
-f conclusion=”$CONCLUSION” \
-f output[title]=”カスタム品質チェック結果” \
-f output[summary]=”

現在のスコア: $SCORE \n $SUMMARY”

—

4. このコードの「ここ」が凄い!

ただのサンプルコードに見えるかもしれませんが、ここには現場で役立つエッセンスが詰まっています。

① `conclusion: “neutral”` の活用

GitHub Actionsの標準的な「成功/失敗」に加えて、`neutral`(中立)というステータスを使っています。これはPR上では「黄色いアイコン(またはグレイのチェック)」として表示され、「ビルドは成功したけれど、注意が必要だよ」というニュアンスを伝えるのに最適です。

② `output[summary]` によるリッチな表現

単に成否を伝えるだけでなく、`summary`フィールドにマークダウンを書くことで、開発者はわざわざCIのログ(黒い画面)を見に行かなくても、PRのトップ画面で何が起きたか一目で理解できます。

③ GitHub CLI (`gh`コマンド) の利用

複雑な`curl`コマンドや外部ライブラリを使わず、GitHub Actionsに標準搭載されている`gh`コマンドを使っています。これが最もセキュアで、かつメンテナンスしやすい現代のデファクトスタンダードです。

—

5. 最後に:CI/CDは「対話」である

いかがでしたか?「CI=テストを回すもの」という固定観念が、少しだけ崩れたのではないでしょうか。

Checks APIを使いこなせるようになると、以下のようなことが実現できます。

  • デザイン崩れチェック: 差分を画像で比較し、微差があればWarningを出す。
  • 依存関係の脆弱性: 深刻ならFailure、軽微ならNeutralでPRに表を表示。
  • パフォーマンス計測: 以前の計測値より5%以上遅くなっていたら、警告を表示。

こうした「気遣い」を自動化に組み込むことで、レビューの時間は短縮され、チームの心理的安全性が高まります。

「これをマスターすれば、毎日の作業が劇的に楽になりますよ」という言葉に嘘はありません。まずはこの小さなHelloWorldから、あなたのリポジトリに「意思を持ったCI」を宿してみてください。

もし設定で迷うことがあったら、いつでも聞いてくださいね。あなたのパイプラインが、今日も美しい緑(時々、有益な黄色)に輝くことを願っています。

タイトルとURLをコピーしました