NIKKEI TECHNOLOGY AND CAREER

日経 SRE チームにおける GitHub Actions の Job Summaries 機能の活用事例

日本経済新聞社では、CI/CD に用いるツールとして GitHub Actions が全社的に活用されています。 GitHub Actions には便利な機能がたくさん用意されており、社内でも各開発チームが工夫を凝らしながらこれらの機能を組み合わせて効率的に活用しています。

今回はその中でも、今年使った機能の中でも筆者が個人的には最も便利だと感じた Job Summaries 機能について活用事例を交えながら紹介します。

背景

SRE チームではクラウド上のインフラを Terraform で管理しており、その IaC のコードは GitHub のリポジトリで管理しています。

リポジトリ上のデフォルトブランチに対するプルリクエストが作成されると GitHub Actions の workflow により Terraform の plan が実行され、インフラに適用すべき差分が計画されます。 その結果はプルリクエストのコメントとして自動的に投稿され、レビュアーがその内容を確認して問題なければ承認されるというフローを取っています。

しかし、Terraform での plan 内容は、管理するリソースの差分が多いときに非常に長くなってしまい、しばしばコメントとしての投稿に失敗してしまう場合がありました。 この場合、plan 内容の確認のために workflow の実行ログを確認する必要があり、チームのアジリティを落とす要因となっていました。

そんな課題を抱えた中、 GitHub Actions の Job Summaries 機能の存在を知り、これを活用してみることにしました。

GitHub Actions の Job Summaries 機能

Job Summaries 機能は、workflow のサマリーページに Job の実行結果を workflow の実行ログとは別に表示する機能です。 これにより、詳細なログを見ることなく、 workflow の実行結果を確認することができるようになります。

この機能自体は真新しいものではなく、昨年5月から使えるようになっていたものです。

Supercharging GitHub Actions with Job Summaries

Job Summaries 機能の使い方

Job Summaries 機能を使うためには、 以下のドキュメントにあるように、Actions の Job 上で echo コマンドを実行します。

Workflow commands for GitHub Actions: Adding a job summary

GitHub Actions のワークフロー コマンド: ジョブの概要の追加

echo "{markdown content}" >> $GITHUB_STEP_SUMMARY

echo コマンドで出力する内容には、 GitHub Flavored Markdown 形式のテキストが使用できるため、作り込み次第ではリッチなサマリー画面をつくることができます。

また、 @actions/core の npm パッケージを使用する場合、いくつかのユーティリティ関数を使うことができるようです。

https://github.com/actions/toolkit/blob/main/packages/core/src/summary.ts

これについてはドキュメントは執筆中のようです。(Add missing actions/core documentation for job summaries #1574)

弊チームでは簡単のため、前者の echo コマンドを使用して Job Summaries 機能を利用しています。

利用例の紹介

もともと、私たちのチームでの活用のきっかけは、プルリクエスト上で長すぎる Terraform Plan の内容がコメントとして共有できないことでした。Job Summaries 機能を使うことで、必ずサマリーページに Plan 内容を表示することができるようになりました。

これにより、チームのアジリティを落とすことなくプルリクエストのレビューが実施できるようになりました。

Terraform plan のサマリー例

また、この他にも Kubernetes のマニフェストに対して非推奨 API のチェックのため、 FairwindsOps/pluto を定期的に GitHub Actions 上で実行していますが、この実行結果も Job Summaries 機能で閲覧できるようにしています。

GitHub Flavored Markdown が利用できると表などを見やすい形で表示できるので便利ですね。

非推奨 API チェックのサマリー例

おわりに

GitHub Actions の Job Summaries 機能は、今回紹介した活用事例の他にも、 Kubernetes のマニフェストの差分を表示したり、単体テストの実行結果をサマリーの形式にして見やすくするなど、工夫次第でさまざまな使い方ができそうです。

Entry

各種エントリーはこちらから

キャリア採用
Entry
新卒採用
Entry
カジュアル面談
Entry