特定のランナーを使用してビルドを強化する方法

TeamCity にはビルドを強化する多数の機能がバンドルされています。 このチュートリアルでは、特定のランナーの使用方法とそれを使用する理由について説明します。

ビルドランナーとは?TeamCity で使用できるランナーの種類は?

ビルドランナーは特定のビルドツール(Ant、MSBuild、コマンドラインなど)との統合を実現する TeamCity の機能です。 ビルドランナーには実行するビルドタスク、使用するビルドツールのバージョン、コンテナーとして使用する Docker/Linux イメージなどを指定できる設定が備わっています。 ビルドランナーによるビルドの実行とその結果の報告方法はビルド構成で定義します。 TeamCity には .NET、Maven、Gradle、Docker、Python、Node.js などの多数のビルドランナーが初期状態で備わっています。

ビルド構成を開き、編集しましょう。 ここには 1 つのビルドステップがあり、コマンドラインでビルドステップが記述されています。 このスクリプトは以下のコマンドを処理します。

  • calculator service ディレクトリへの cd
  • mvn clean package の実行。
  • プライベート S3 バケットへの .jar ファイルのアップロード。
tutorials-img

ここでは mvn clean package ステップを削除し、代わりに TeamCity の特定の Maven 機能を使用することにします。 カスタムスクリプトで対象の行を削除し、Save(保存)をクリックするだけです。

tutorials-img

新しいビルドステップを追加する

その後、新しいビルドステップを追加します。 TeamCity は特定のランナーを選択するように提案します。

tutorials-img

TeamCity が統合する各テクノロジーには対応する特定のランナーがあります。 たとえば .NET プロジェクトをビルドする場合は、.NET ランナーを選択します。 コマンドラインスクリプトを実行する場合は、コマンドラインランナーを使用します。 同様に、Docker 固有のステップには Docker ランナー、Gradle プロジェクトには Gradle ランナーを使用します。

TeamCity のビルドランナーの完全なリストはドキュメントで確認できます。

ここでは Maven プロジェクトを操作しているため、ドロップダウンリストから Maven を選択しましょう。 次に、このステップで TeamCity が提案するいくつかのフィールドに入力します。

tutorials-img

pom.xml ファイルは calculator service ディレクトリにあるため、ツリーアイコンをクリックして目的のフォルダーを選択します。 すべてのディレクトリがツリー状のビューで表示されるため、ディレクトリ名を入力する必要はありません(スペルミスなどの可能性がありません)。 リストからディレクトリを選択するだけです。

Docker Hub の Docker イメージ名(例: maven:latest)を指定すると、Docker コンテナー内で mvn clean package ステップを実行できます。 TeamCity がこのイメージを取得し、そこから透過的に Docker コンテナーを起動して mvn clean package をその中で実行し、その後コンテナーを破棄します。

tutorials-img

カバレッジランナーを選択する

手動ビルドステップの構成を続けるには、このリンクをクリックします。

tutorials-img

TeamCity では特定のカバレッジランナーを選択できます。 たとえば、すべてのランナーを pom.xml ファイル内に選択的にハードコードする代わりに、IntelliJ IDEA または JaCoCo コードカバレッジランナーを追加できます。

com.jetbrains.teamcity.* をパッケージのパターン名として追加しましょう。 TeamCity はコードカバレッジのためにこのパターンに一致する名前を持つパッケージを解析します。

tutorials-img

TeamCity では高度なオプションを構成することも可能です。 たとえば、複数の異なる Maven プロジェクトバージョンを選択することも、特定の Java バージョンを選択してプロジェクト全体を実行することもできます。

tutorials-img

これらすべての UI オプションを使えば、コマンドラインの呼び出しが機能するかどうかを気にする必要はありません。 それは TeamCity がユーザーに代わって行います。

この時点ではコマンドラインスクリプトが実行された後に Maven ステップが実行されますが、 mvn clean package を先実行してから S3 へのコマンドラインアップロードを行うようにビルドステップの順番を変更します。

tutorials-img

その後で Run(実行)をクリックすれば、すべてが期待どおりに動作するでしょう。

Maven ランナーで何ができますか?

ビルドの実行が完了すると、ビルド概要ページにアクセスできます。 このページには Maven Build Info(Maven ビルド情報)や Code Coverage(コードカバレッジ)などの新しいタブのほか、Tests(テスト)結果や Code Coverage(コードカバレッジ)結果用の新しいセクションがあります。

tutorials-img

Maven ビルド情報

Maven ビルド情報ページでは、どの特定の Maven バージョンを使ってどの目標を実行したのかについての概要が得られます。 Maven が生成した .jar ファイルなど、生成されたアーティファクトも確認できます。

このレポートには、この特定のビルドのために Maven がプルしたすべての具体的な依存関係がそのバージョンと共に表示されます。 これにより、ビルドを構成するライブラリの概要を把握できます。 デバッグ目的にも役立ちます。

そのビルド中にアクティブになったすべての有効な Maven プラグインも表示されます。

tutorials-img

テスト概要ページ

Maven ランナーを使用して無料で取得できるテストの概要ページには、多くの有益な情報が表示されます。 このレポートでは以下の情報を確認できます。

  • 全体的なテストのステータス(成功、失敗、不安定など)
  • 実行されたテストクラストとメソッド
  • テストの実行時間
  • テストの実行順序

各テストにはテストに関するすべての基本情報を含むテスト履歴もあります。 テスト履歴は「なぜこのテストの実行に突然時間がかかるようになったのか?」 「不安定なテストか?」など、テストで発生する可能性のある問題を調査する必要がある場合に役立ちます。

テストレポートについては、こちらの動画で詳しく説明しています。

コードカバレッジレポート

コードカバレッジレポートでは、使用されたクラスやメソッド、テストでカバーされたコードの割合などの情報を得られます。

IntelliJ IDEA コードカバレッジランナーのドロップダウンオプションをいくつか選択すれば、TeamCity UI でこれらのレポートを得ることができます。

tutorials-img

今日のところは以上です! テストレポートやコードカバレッジレポートなどの TeamCity 固有の機能の使用方法については、他のチュートリアルをご覧ください。

Happy building!