Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 11021] ファイルの概要

このコミットは、Goプロジェクトのダッシュボードにおけるビルド通知のログ表示行数を100行から200行に増加させる変更です。これにより、ビルドの失敗時に通知に含まれるログ情報が増え、問題の特定が容易になります。

コミット

dashboard: increase notification log to 200 lines

The go command lists all packages that were built.
A recent breakage notification included this text:

$ tail -100 < log
ok      errors
ok      exp/ebnf
?       exp/ebnflint [no test files]
ok      exp/gotype
ok      exp/norm
ok      exp/spdy

If the breakage occurred before this point it would
not be visible in the output.

R=golang-dev, gri, kevlar
CC=golang-dev
https://golang.org/cl/5504109

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/126ee245c65d8942484c747c3c4d9b92d65f665c

元コミット内容

commit 126ee245c65d8942484c747c3c4d9b92d65f665c
Author: Andrew Gerrand <adg@golang.org>
Date:   Wed Jan 4 11:22:58 2012 +1100

    dashboard: increase notification log to 200 lines
    
    The go command lists all packages that were built.
    A recent breakage notification included this text:
    
    $ tail -100 < log
    ok      errors
    ok      exp/ebnf
    ?       exp/ebnflint [no test files]
    ok      exp/gotype
    ok      exp/norm
    ok      exp/spdy
    
    If the breakage occurred before this point it would
    not be visible in the output.
    
    R=golang-dev, gri, kevlar
    CC=golang-dev
    https://golang.org/cl/5504109
---
 misc/dashboard/app/build/notify.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/misc/dashboard/app/build/notify.txt b/misc/dashboard/app/build/notify.txt
index 9b9fff4931..6c90067032 100644
--- a/misc/dashboard/app/build/notify.txt
+++ b/misc/dashboard/app/build/notify.txt
@@ -5,5 +5,5 @@ http://{{.Hostname}}/log/{{.Result.LogHash}}
 
 http://code.google.com/p/go/source/detail?r={{shortHash .Commit.Hash}}
 
-$ tail -100 < log
-{{printf "%s" .Log.Text | tail 100}}
+$ tail -200 < log
+{{printf "%s" .Log.Text | tail 200}}

変更の背景

Goプロジェクトでは、継続的インテグレーション(CI)システムの一部としてダッシュボードが運用されており、ビルドやテストの結果を監視し、問題が発生した場合には通知を行います。この通知には、ビルドログの一部が含まれていました。

しかし、従来の通知では、ビルドログの末尾100行のみが表示される設定になっていました。コミットメッセージの例が示すように、go コマンドがビルドされたすべてのパッケージをリストアップする際、もしビルドの失敗がログの早い段階で発生した場合、その重要なエラーメッセージが100行の制限によって切り捨てられ、通知に表示されないという問題がありました。これにより、ビルドが壊れた原因を特定するのが困難になるケースが発生していました。

この問題を解決し、より包括的なデバッグ情報を提供するために、通知に含まれるログの行数を増やす必要がありました。

前提知識の解説

  • Go ダッシュボード (Go Dashboard): Goプロジェクトの公式な継続的インテグレーションおよびテストシステムです。Goのソースコードが変更されるたびに自動的にビルドとテストを実行し、その結果を開発者に通知します。これにより、コードベースの健全性が維持されます。
  • ビルド通知: ダッシュボードシステムが、ビルドの成功または失敗、テストの合否などの結果を開発者に伝えるためのメカニズムです。通常、電子メールやチャットシステムを通じて送信され、関連するログ情報が含まれます。
  • tail コマンド: Unix系オペレーティングシステムで利用されるコマンドラインユーティリティです。ファイルの末尾から指定された行数(デフォルトは10行)を表示するために使用されます。例えば、tail -100 < loglog ファイルの末尾100行を表示します。
  • Go Template (テキスト/HTMLテンプレート): Go言語に組み込まれているテンプレートエンジンです。データ構造をテンプレートに渡すことで、動的なテキストやHTMLコンテンツを生成できます。このコミットで変更されている notify.txt ファイルは、Goテンプレートの構文を使用しており、{{.Log.Text}} のようにプレースホルダーを使って動的なログコンテンツを埋め込んでいます。printf "%s" .Log.Text は、.Log.Text の内容を文字列としてフォーマットし、| tail 100 はその結果を tail コマンドにパイプして末尾100行を抽出する、という処理を表現しています。

技術的詳細

この変更は、Goダッシュボードのビルド通知テンプレートファイルである misc/dashboard/app/build/notify.txt を修正することで実現されています。具体的には、通知に含めるビルドログの行数を制御している部分の数値が 100 から 200 に変更されました。

このファイルはGoテンプレートとして機能し、ビルドログの内容 (.Log.Text) を取得し、それを tail コマンドに相当する処理で切り詰めています。

変更前は以下のようになっていました。

$ tail -100 < log
{{printf "%s" .Log.Text | tail 100}}

これは、通知のプレビューとして「tail -100 < log」というコマンドラインの例を示し、実際にログの内容を埋め込む部分では、.Log.Text の末尾100行を抽出していました。

変更後は以下のようになります。

$ tail -200 < log
{{printf "%s" .Log.Text | tail 200}}

これにより、通知のプレビュー例も「tail -200 < log」に更新され、実際に通知に埋め込まれるログの行数も末尾200行に拡張されました。

この変更は、ダッシュボードの通知システムがビルドログを処理し、メールなどの通知メッセージに含める際のロジックに直接影響を与えます。ログの行数を増やすことで、ビルドプロセス中に発生したより多くのコンテキスト情報やエラーメッセージが通知に含まれるようになり、特にビルドの初期段階で発生する可能性のある問題のデバッグ効率が向上します。

コアとなるコードの変更箇所

変更されたファイルは misc/dashboard/app/build/notify.txt です。 このファイル内で、以下の2行が変更されました。

--- a/misc/dashboard/app/build/notify.txt
+++ b/misc/dashboard/app/build/notify.txt
@@ -5,5 +5,5 @@ http://{{.Hostname}}/log/{{.Result.LogHash}}
 
 http://code.google.com/p/go/source/detail?r={{shortHash .Commit.Hash}}
 
-$ tail -100 < log
-{{printf "%s" .Log.Text | tail 100}}
+$ tail -200 < log
+{{printf "%s" .Log.Text | tail 200}}

コアとなるコードの解説

  • $ tail -100 < log から $ tail -200 < log への変更: これは、通知メッセージ内に表示される、ログの末尾を表示するためのコマンド例を更新したものです。ユーザーが通知を見た際に、どの範囲のログが参照されているかを直感的に理解できるようにするための表示上の変更です。

  • {{printf "%s" .Log.Text | tail 100}} から {{printf "%s" .Log.Text | tail 200}} への変更: これが機能的な変更の核心です。

    • {{.Log.Text}}: Goテンプレートの構文で、ビルドログの実際のテキストコンテンツを表す変数です。
    • printf "%s" .Log.Text: .Log.Text の内容を文字列としてフォーマットします。
    • | tail 100 (変更前) / | tail 200 (変更後): パイプ (|) は、前のコマンド(この場合は printf の結果)の出力を次のコマンド(この場合は tail に相当するテンプレート関数)の入力として渡すことを意味します。tail 100 または tail 200 は、入力されたログテキストの末尾100行または200行を抽出するという処理をテンプレートエンジン内で実行します。

この変更により、ダッシュボードの通知に実際に含まれるビルドログの行数が倍増し、ビルド失敗時のデバッグに必要な情報量が増加しました。

関連リンク

参考にした情報源リンク

  • コミットメッセージおよび関連する差分情報 (./commit_data/11021.txt)