Apache Gumpとはなんなのか?
今回はApache Gumpについて調べてみました。 今回も以下のツールを使って対象プロジェクトを決めました!
※ 本企画に関する記事の目的は、それぞれのプロジェクトを本格的に深ぼるのではなく、プロジェクト名⇆どんな内容かをパッと思い出せるようにすることを目指します!
※ とはいえ深ぼってみたいプロジェクトがあればどんどん複数連載になると思います。
Apache Gumpとは?
公式サイトによると
The Apache Gump continuous integration tool was the first one developed at the Apache Software Foundation. It is written in Python and fully supports Apache Ant, Apache Maven (1.x to 3.x) and other build tools. Gump is unique in that it builds and compiles software against the latest development versions of those projects. This allows Gump to detect potentially incompatible changes to that software just a few hours after those changes are checked into the version control system. Notifications are sent to the project team as soon as such a change is detected, referencing more detailed reports available online.
と言うことで、要約すると以下のようなもののようです。
- Apache Gumpは継続的インテグレーションツールであり、Apache Software Foundationで初めて開発されたツール
- Pythonで記述されており、Apache Ant、Apache Maven (1.x~3.x)、その他のビルドツールを完全にサポート
- プロジェクトの最新の開発バージョンに対してソフトウェアをビルドおよびコンパイルする
- バージョン管理システムにチェックインされてからわずか数時間後に、ソフトウェアに潜在的に互換性のない変更を検出することが可能
- 変更が検出されるとすぐに、オンラインで利用可能なより詳細なレポートを参照しながら、プロジェクトチームに通知が送信される
これからわかるように、CIのツールとして利用でき、互換性のチェックを行い必要に応じてチームへの通知が投げれるなど、とても便利なツール見たいです。
どのように動くのか?
公式の説明によると、以下のようにしてApache Gumpは動くようです。
- プロジェクト定義はXMLからメモリ内オブジェクトにマッピングされる
- スクリプトは、ビルド対象のプロジェクトを含むすべてのモジュールに対してSCM更新コマンドを実行し、依存関係が満たされる順序で各プロジェクトのビルドを呼び出す
- ビルド出力が処理されて成功した場合、依存プロジェクトはこれらの出力に基づいてビルドされる
- コマンドはプロジェクトのbuild.xml/Makefile/pom.xmlファイルを使用するが、CVS/SVNにチェックインされたスクリプトやjarファイルは使用利用しない
- GumpはGumpのバージョンのファイルが使用されるように内部的に動作する
- すべての最新バージョンに対してビルドを実行するには、ビルドプロセスやビルドツールのサポートを必要とするか、ビルドツールを回避する必要がある
- Apache Antを使用したビルドでは、Antのbuild.sysclasspathプロパティをonlyに設定し、システムクラスパスのみを管理
- システムクラスパスのみが使用され、ビルドファイルなどで指定されたクラスパスは無視される。
- ビルドファイルを実行するユーザーが、ビルドファイルを作成するユーザーよりも環境について詳しいことが原因である
- Antプロジェクトのビルド時に、最新バージョンのAntを使用することに注意する
- Apache Maven 1.xでは、
--offlineスイッチ付きでMavenを実行し、jarのオーバーライドを使用する- Mavenが期待するアーティファクトIDとGumpが指定するjar名が一致しない場合があり、<property>要素を使用して正しいアーティファクトID必要になる
- すべてのプロジェクトが毎日、最新のAnt、最新のJUnit、最新のXMLパーサーを含むすべての依存関係の最新バージョンを使用してビルドされる
- ビルド結果はHTMLページに出力される
まとめては見たものの、正直どうなっているのかよくわかりません、、、(Apache初心者が溢れ出しています)。AntやMavenなどと依存しあっていることが想定されるので、詳しく理解するためにはそれらもキャッチアップする必要がありそうです。
まとめ
今回はApache Gumpについて簡単ですが調べてみました。関連するようなプロジェクトなどが用意できず実際にCIに組み込むことができませんでしたが、Apache AntやApache Mavenなどと高度に連携し、ビルドシステムを構築できるのだろうと推測しています。私自身普段開発している環境と照らし合わせると短期的には少なくとも利用することはなさそうですが、Apache AntやApache Mavenを利用する機会があれば候補の一つになると思いますので、その際はより詳細に調べて使ってみようと思います。
Discussion