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

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

このコミットは、Goプロジェクトの古いビルドダッシュボード関連コードを削除するものです。具体的には、Google App Engine (GAE) 上で動作していたPython製のビルドダッシュボードのバックエンドロジック (gobuild.py) と、そのフロントエンドの一部 (main.html)、およびGAEの設定ファイル (app.yaml) が変更されています。

コミット

commit 1cf45e388d723d02b073a5ea7d27abf8b45f02a1
Author: Andrew Gerrand <adg@golang.org>
Date:   Thu Dec 22 09:53:52 2011 +1100

    dashboard: delete old build dashboard code
    
    R=rsc
    CC=golang-dev
    https://golang.org/cl/5502063

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

https://github.com/golang/go/commit/1cf45e388d723d02b073a5ea7d27abf8b45f02a1

元コミット内容

dashboard: delete old build dashboard code

R=rsc
CC=golang-dev
https://golang.org/cl/5502063

変更の背景

このコミットの主な背景は、Goプロジェクトの継続的インテグレーション(CI)およびビルドステータス表示のためのインフラストラクチャの移行です。コミットメッセージが「delete old build dashboard code」と明確に示している通り、以前使用されていたビルドダッシュボードのコードベースが不要になったため削除されました。

変更された main.html ファイルには、「The build status dashboard has moved to http://build.golang.org.」という通知が追加されており、これは古いダッシュボードが廃止され、build.golang.org という新しい専用のビルドダッシュボードに機能が完全に移行したことを示唆しています。この移行により、Goプロジェクトのビルドシステムはより統合され、効率的なものになったと考えられます。

前提知識の解説

Go言語

Go(Golang)は、Googleによって開発されたオープンソースのプログラミング言語です。静的型付け、コンパイル型言語でありながら、動的型付け言語のような簡潔さと生産性を提供することを目指しています。並行処理を強力にサポートするgoroutineとchannel、高速なコンパイル、ガベージコレクションなどが特徴です。このコミットはGo言語のソースコードリポジトリの一部であり、Goプロジェクト自体のインフラストラクチャに関連する変更です。

Google App Engine (GAE)

Google App Engineは、Googleが提供するPlatform as a Service (PaaS) です。開発者はインフラストウェアの管理を気にすることなく、アプリケーションをデプロイ・実行できます。このコミットで削除された gobuild.py や変更された app.yaml は、GAEのPythonランタイム上で動作するアプリケーションの構成ファイルおよびコードでした。app.yaml はGAEアプリケーションのデプロイ設定(ランタイム、バージョン、URLハンドラなど)を定義します。

継続的インテグレーション (CI) とビルドダッシュボード

継続的インテグレーション (CI) は、開発者がコード変更を共有リポジトリに頻繁にマージし、自動的にビルドとテストを行うソフトウェア開発プラクティスです。これにより、問題を早期に発見し、統合の衝突を減らすことができます。

ビルドダッシュボードは、CIシステムの一部として、プロジェクトのビルドステータス(成功、失敗、テスト結果など)をリアルタイムで可視化するウェブインターフェースです。開発者はダッシュボードを通じて、最新のコード変更がビルドを壊していないか、テストがパスしているかなどを一目で確認できます。このコミットは、Goプロジェクトが使用していた古いビルドダッシュボードのコンポーネントを削除するものです。

Mercurial (Hg)

Mercurial (Hg) は、分散型バージョン管理システム(DVCS)の一つです。Gitと同様に、各開発者が完全なリポジトリのコピーを持ち、オフラインでの作業やマージが容易です。Goプロジェクトは初期にはMercurialを使用していましたが、後にGitに移行しました。削除された gobuild.py のコード内に Hg hashhg repo といったMercurialに関連する記述が見られるのは、当時のGoプロジェクトのバージョン管理システムがMercurialであった名残です。

技術的詳細

このコミットは、Goプロジェクトのビルドダッシュボードの運用方法が変更されたことを明確に示しています。

  1. misc/dashboard/godashboard/gobuild.py の削除:

    • このファイルは、Goの継続的ビルドシステムにおける主要なバックエンドロジックを担っていました。
    • Google App Engine上で動作し、コミット情報の管理(Commit モデル)、ビルドログの圧縮と保存(CompressedLog モデル)、ビルド結果の記録、ビルドが必要なコミットの特定(Todo ハンドラ)、ビルド失敗時の通知(notifyBroken 関数)など、多岐にわたる機能を提供していました。
    • このファイルの削除は、これらの機能が新しいビルドシステム(build.golang.org)に完全に移行したことを意味します。
  2. misc/dashboard/godashboard/main.html の変更:

    • このHTMLファイルは、古いビルドダッシュボードのユーザーインターフェースを提供していました。
    • 変更内容を見ると、ビルド結果を表示するためのテーブル構造、各ビルドのステータス(OK/Fail)、ログへのリンク、ページネーションなどのUI要素がすべて削除されています。
    • 代わりに、<p class="notice">The build status dashboard has moved to <a href="http://build.golang.org">build.golang.org</a>.</p> というシンプルなメッセージが追加されました。これは、このページがもはや機能的なダッシュボードではなく、新しい場所への案内板としてのみ機能することを示しています。
  3. misc/dashboard/godashboard/app.yaml の変更:

    • このファイルはGoogle App Engineアプリケーションの設定を定義します。
    • version8 から 9 に更新されています。
    • 最も重要な変更は、URLハンドラの設定です。
      • 以前は /.* (全てのパス) が gobuild.py にルーティングされていました。これは、gobuild.py がダッシュボードのメインページやAPIエンドポイントを処理していたことを意味します。
      • 変更後、/ (ルートパス) は main.html を静的ファイルとして提供するように設定されました。これにより、アプリケーションのルートURLにアクセスすると、新しいダッシュボードへの案内メッセージが表示されるようになりました。
      • /project.* は引き続き package.py にルーティングされており、これはパッケージ関連の機能がこのコミットの対象外であったことを示します。

これらの変更は、Goプロジェクトがビルドインフラストラクチャを合理化し、より堅牢でスケーラブルな専用システムに移行した結果であると考えられます。古いApp Engineベースのダッシュボードは、その役割を終えたため削除されました。

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

misc/dashboard/godashboard/app.yaml

--- a/misc/dashboard/godashboard/app.yaml
+++ b/misc/dashboard/godashboard/app.yaml
@@ -1,5 +1,5 @@
 application: godashboard
-version: 8
+version: 9
 runtime: python
 api_version: 1
 
@@ -21,5 +21,6 @@ handlers:
 - url: /project.*
   script: package.py
 
-- url: /.*
-  script: gobuild.py
+- url: /
+  static_files: main.html
+  upload: main.html

misc/dashboard/godashboard/gobuild.py

このファイルは完全に削除されました。

misc/dashboard/godashboard/main.html

--- a/misc/dashboard/godashboard/main.html
+++ b/misc/dashboard/godashboard/main.html
@@ -6,8 +6,6 @@
   </head>
 
   <body>
-    <a id="top"></a>
-\n
     <ul class="menu">
       <li>Build Status</li>
       <li><a href="/package">Packages</a></li>
@@ -21,45 +19,5 @@
 
     <p class="notice">The build status dashboard has moved to <a href="http://build.golang.org">build.golang.org</a>.</p>
 
-    <table class="alternate" cellpadding="0" cellspacing="0">
-      <tr>
-        <th></th>
-        {% for b in builders %}
-          <th class="builder">{{b.goos}}<br>{{b.goarch}}<br>{{b.note}}</th>
-        {% endfor %}
-        <th></th>
-        <th></th>
-        <th></th>
-      </tr>
-
-      {% for r in revs %}
-      <tr>
-        <td class="revision"><span class="hash"><a href="https://code.google.com/p/go/source/detail?r={{r.node}}">{{r.node|slice:":12"}}</a></span></td>
-
-        {% for b in r.builds %}
-          <td class="result">
-          {% if b.ok %}
-            <span class="ok">ok</span>
-          {% else %}
-            {% if b.log %}
-              <a class="fail" href="/log/{{b.log}}">fail</a>
-            {% else %}
-              &nbsp;
-            {% endif %}
-          {% endif %}
-          </td>
-        {% endfor %}
-
-        <td class="user">{{r.user|escape}}</td>
-        <td class="date">{{r.date|escape}}</td>
-        <td class="desc">{{r.shortdesc|escape}}</td>
-      </tr>
-      {% endfor %}
-    </table>
-    <div class="paginate">
-	<a{% if prev %} href="?n={{num}}&p={{prev}}"{% else %} class="inactive"{% endif %}>prev</a>
-	<a{% if next %} href="?n={{num}}&p={{next}}"{% else %} class="inactive"{% endif %}>next</a>
-	<a{% if prev %} href="?n={{num}}&p=1"{% else %} class="inactive"{% endif %}>top</a>
-    </div>
   </body>
 </html>

コアとなるコードの解説

misc/dashboard/godashboard/app.yaml

この設定ファイルの変更は、アプリケーションのエントリポイントを完全に変更しています。以前は gobuild.py がすべてのリクエストを処理するメインスクリプトでしたが、この変更により、ルートパス (/) へのリクエストは静的な main.html ファイルを返すようになりました。これは、動的なビルドステータス表示の機能がこのApp Engineアプリケーションから完全に削除され、単なるリダイレクトページとして機能するように簡素化されたことを意味します。バージョン番号のインクリメント (8 から 9) は、このアプリケーションのデプロイ設定に重要な変更があったことを示します。

misc/dashboard/godashboard/gobuild.py

このファイルの完全な削除は、Goプロジェクトのビルドダッシュボードのバックエンドが、このPythonスクリプトから完全に切り離されたことを意味します。このスクリプトは、Goのコミット履歴を追跡し、各コミットに対するビルド結果を記録し、ビルドログを管理し、ビルドの失敗を通知するなど、ビルドダッシュボードの中核的な機能を担っていました。その削除は、これらの機能が新しい build.golang.org システムに完全に再実装されたか、あるいは異なるアーキテクチャで提供されるようになったことを示唆しています。

misc/dashboard/godashboard/main.html

このHTMLファイルの変更は、ユーザーインターフェースの観点から、古いダッシュボードがもはや存在しないことを明確に示しています。以前は、ビルドの成功/失敗ステータス、ビルドログへのリンク、コミット情報、ユーザー、日付などを表示する複雑なテーブルが含まれていました。これらの要素がすべて削除され、代わりに「ビルドステータスダッシュボードは build.golang.org に移動しました」という簡潔なメッセージが表示されるようになりました。これにより、このページは古いダッシュボードへのアクセスを試みるユーザーを新しい場所へ誘導する役割のみを果たすことになります。

これらの変更は全体として、Goプロジェクトがビルドインフラストラクチャを刷新し、より現代的で集中管理されたシステムへと移行したことを示しています。

関連リンク

参考にした情報源リンク