Gradle
このビルドステップは、 Gradle(英語) プロジェクトのビルドに合わせて調整されており、 build.gradle および build.gradle.kts を含むすべての Gradle ビルド構成をサポートします。
前提条件
Gradle でビルドを実行するには、Gradle 0.9-rc-1 以降がすべてのエージェントマシンにインストールされている必要があります。 あるいは、 Gradle ラッパー(英語)を使用する場合は、バージョン管理にチェックインされた Gradle ラッパースクリプトを適切に構成する必要があります。
ステップ設定
Gradle ステップ設定のリストとそれに対応する UI ラベルは、ビルド構成を構成するかパイプラインを構成するかによって若干異なります。
メイン設定
- タスク
このステップで実行する、スペース区切りの Gradle タスクのリスト。 例:
:myproject:clean :myproject:buildまたはクリーンビルド。 このフィールドを空白のままにすると、デフォルトタスクが使用されます。 TeamCity は現在、Gradle による Java プロジェクトのビルドをサポートしています。 Groovy、Scala、その他のプロジェクトのビルドはテストされていません。このフィールドには追加の タスクオプション(英語)も入力する必要があります。 例:
:myproject:run --args="foo --bar"またはclean test --tests MyTestClass.myTestMethod- 作業ディレクトリ
ビルドステップが開始されるディレクトリです。 デフォルトでは、エージェントがリモートソースをチェックアウトするルートディレクトリと同じです。 詳細については、次のトピックを参照してください: ビルド作業ディレクトリ。
- Gradle ラッパーを使用
有効化されている場合、TeamCity はチェックアウトディレクトリで Gradle ラッパースクリプトを検索し、対応するステップ設定で指定された Gradle タスクと追加のコマンドラインパラメーターを使用して適切なスクリプトを起動します。 この場合、 Gradle ホーム パスで指定された Gradle とエージェントにインストールされている Gradle は無視されます。
追加設定
- Gradle ホーム
Gradle ホームディレクトリ(
binディレクトリの親ディレクトリ)へのパス。 指定されていない場合、TeamCity はエージェントのGRADLE_HOME環境変数で指定された Gradle を使用します。 エージェントに Gradle がインストールされていない場合は、代わりに Gradle ラッパーを使用できます。- ビルドファイル
作業ディレクトリを基準にした、 Gradle ビルドファイルを含むディレクトリへのパス。 空(デフォルト)の場合、Gradle は独自の設定を使用して決定します。
- 追加の Gradle コマンドラインパラメーター
オプションのスペース区切りの Gradle プロパティ(英語)のリスト。 例:
-x test(または--exclude-task test)、--configuration-cache、または-PmyProjectProperty=foo- Gradle ラッパーパス
作業ディレクトリを基準とした Gradle ラッパースクリプトへのオプションのパス。
- インクリメンタルビルド
TeamCity は Gradle
:buildDependents機能を利用できます。 インクリメンタルビルド オプションが有効化されている場合、TeamCity はビルドの変更による影響を受ける Gradle モジュールを検出し、それらに対してのみ:buildDependentsコマンドを開始します。 これにより、Gradle は変更によって影響を受けるモジュールのみを完全にビルドしてテストします。
実行パラメーター
- デバッグ
-dGradle コマンドラインパラメーターを追加します。- スタックトレース
-sGradle コマンドラインパラメーターを追加します。
コンテナー設定
このビルドステップは、Docker または Podman によってデプロイされたコンテナー内で実行できます。
クラシックビルド構成ステップでは、イメージ名、プラットフォーム、追加の実行引数を指定できる一連のプロパティが表示されます。 イメージを明示的にプルにより、このステップが実行されるたびに TeamCity がターゲットコンテナーからイメージを確実にプルします。

指定されたイメージを検索するレジストリを TeamCity に指定するには、プロジェクトに Docker/Podman 接続を追加します。 デフォルトでは、この接続により TeamCity は Docker Hub から匿名モードでイメージをプルできますが、任意のコンテナーレジストリ向けに設定できます。
詳細については、次の記事を参照してください: コンテナーラッパー。
コンテナー内でステップを実行するには、 Docker で実行をオンに切り替えます。 有効にすると、この要素に 2 つのオプションが表示されます。

Docker イメージ — Docker または Podman レジストリからイメージをプルできます。 デフォルトでは、TeamCity は Docker Hub イメージを匿名モードでプルできます。 その他の場合 (プライベートイメージ、カスタムイメージレジストリ、Docker Hub のレート制限に違反しないようにする非匿名モード) は、パイプラインまたはジョブレベルで Docker 統合を構成します。
Dockerfile — Dockerfile からカスタムイメージをビルドできます。
コードカバレッジ
Gradle ビルドランナーは、 IDEA コードカバレッジエンジン および JaCoCo に基づくコードカバレッジをサポートします。
Java パラメーター
- JDK
JDK を選択してください。 このセクションは利用可能なオプションを詳しく述べています。 デフォルトは
JAVA_HOME環境変数またはエージェント自身の Java です。- JDK ホームパス
上で <カスタム> が選択されている場合に、このオプションを使用できます。 このフィールドを使用して、ビルドの実行に使用するカスタム JDK へのパスを指定します。 フィールドが空白の場合、JDK Home へのパスは、エージェントマシン上の
JAVA_HOME環境変数、または ビルドエージェント構成ファイル (ビルドエージェント.プロパティ) で指定されたenv.JAVA_HOME 環境変数プロパティから読み取られます。 これらの値が指定されていない場合、TeamCity はビルドエージェントプロセス自体の Java ホームを使用します。- JVM コマンドラインパラメーター
追加の JVM コマンドラインパラメーターを使用すると、初期および最大ヒープサイズの設定、追加のログの有効化、必要なバイトコード検証モードの選択などを行うことができます。
標準 (
-で始まる、たとえば-verbose:[class|module|gc|jni]または--dry-run) と非標準 (-Xで始まる、たとえば-Xmx<サイズ>または-XstartOnFirstThread) の両方の JVM オプションを指定できます。複数のコマンドラインパラメーターを指定するには、区切り文字としてスペースを使用します。 例:
-verbose:gc -Xdiag -Xcomp -Xmx512m -Xms256m
ビルドプロパティ
Gradle ビルドでは、TeamCity システムプロパティは Java システムプロパティとは異なります。
通常の Java システムプロパティにはグローバルにアクセスできます。 これらのプロパティの値を取得するには、
System.getProperty("my.property")メソッドまたはproviders.systemProperty("my.property").get()メソッドを使用します。TeamCity システムプロパティは、ビルドの初期化時に Project オブジェクトに書き込まれます。 したがって、
プロジェクトが利用可能な場所であればどこでも TeamCity システムプロパティにアクセスできます (必要なプロパティが利用可能かどうかを確認するには、project.hasProperty("property.name")を使用してください)。
TeamCity システムプロパティを参照する推奨方法は次のとおりです:
または、システムプロパティの名前が正当な名前識別子(たとえば、 system.myPropertyName = myPropertyValue )の場合:
構成キャッシング
バージョン 2024.03 以降、TeamCity Gradle ランナーは 構成キャッシング をサポートします。 この機能は、構成フェーズの結果をキャッシュし、このキャッシュを後続のビルドで再利用することで、ビルドパフォーマンスを大幅に向上させます。
次のいずれかに該当する場合、構成キャッシュが有効になります。
ランナーの 追加の Gradle コマンドラインパラメーター フィールドに
--configuration-cacheパラメーターが追加されました。gradle.propertiesファイルには、org.gradle.configuration-cache=true(Gradle 8.1+ の場合) またはorg.gradle.unsafe.configuration-cache=true(古い Gradle バージョンの場合) の行が含まれます。 これは、プロジェクトのgradle.propertiesファイルとGRADLE_USER_HOMEディレクトリ内のファイルの両方に適用されます。
現在の制限事項と既知の課題
次の場合には、Gradle 構成キャッシュが期待どおりに動作しない可能性があります。
仮想ビルド (並列テスト または Matrix Build の実行中に生成されたもの) が、キャッシングが作成されたときとは異なる順序で実行される場合。 詳細については、この YouTrack チケットを参照してください: TW-86556(英語)。
クリーンチェックアウト が有効な場合 ;
ビルドステップが Docker または Podman コンテナー内で実行される場合。
Gradle が 構成キャッシュの問題を無視する(英語)場合。
追加のコマンドライン引数のリストに、Gradle ツール API (
--daemon、--stopなど) でサポートされていない引数が含まれている場合。 この制限は、Tooling API を使用しない 高度な統合モードには適用されません。
ビルドごとに値が常に変化する ビルドパラメーター (たとえば、 build.id または ビルド.番号) は、要求時にのみロードされます。 直接参照 (たとえば、 project.teamcity["build.number"]) を使用してこれらのプロパティの値を取得することはできますが、 findProperty() メソッド (project.findProperty("build.number")) では結果は生成されません。 Gradle スクリプトでこのメソッドを呼び出す必要がある場合は、次の回避策を使用します。
新しい構成パラメーターを作成し、影響を受けるパラメーター
MyBuildNumber=%build.number%にマップします。新しいシステムプロパティを作成し、それを新しい構成パラメーター
system.buildNumber = %MyBuildNumber%にマップします。${findProperty}("buildNumber")}構文を使用して、Gradle スクリプトで必要な値を取得します。
この回避策により、ビルド構成で構成キャッシュが再利用されなくなるため、無効にすることもできます。
Gradle 統合モード
バージョン 2026.2 以降では、既存および高度な Gradle 統合モードを選択できます。 ビルドではデフォルトで既存モードが使用されます。 高度モードは Gradle 8.1 以降を使用するプロジェクトで利用でき、次の利点があります:
Gradle Isolated Projects をサポートします。
すべての Gradle コマンドラインオプション (
--daemon、--no-daemon、--stop、および既存モードと互換性のないその他のオプション) を使用できます。Gradle Tooling API を使用しないため、ビルドは TeamCity の外部でコマンドラインから Gradle を直接実行した場合と同じように動作します。
高度モードを有効にするには、プロジェクト、ビルド構成、またはパイプラインに teamcity.internal.gradle.runner.launch.mode=gradle_v2 プロパティを追加します。 このプロパティを 内部サーバープロパティに追加して、高度モードをグローバルに有効にすることもできます。
今後の TeamCity リリースでは、高度モードをデフォルトにする予定です。 詳細については、次のチケットを参照してください: TW-103406。
コードとしての構成
次のスニペットは、 YAML (パイプラインのみ) と Kotlin DSL の両方の形式でカスタマイズされたビルドステップを示しています。