TeamCity On-Premises 2026.2 Help

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 は変更によって影響を受けるモジュールのみを完全にビルドしてテストします。

実行パラメーター

デバッグ

-d Gradle コマンドラインパラメーターを追加します。

スタックトレース

-s Gradle コマンドラインパラメーターを追加します。

コンテナー設定

このビルドステップは、Docker または Podman によってデプロイされたコンテナー内で実行できます。

クラシックビルド構成ステップでは、イメージ名、プラットフォーム、追加の実行引数を指定できる一連のプロパティが表示されます。 イメージを明示的にプルにより、このステップが実行されるたびに TeamCity がターゲットコンテナーからイメージを確実にプルします。

Dk docker container settings

指定されたイメージを検索するレジストリを 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 システムプロパティを参照する推奨方法は次のとおりです:

    task printProperty { doLast { println "${teamcity['teamcity.build.id']}" } }
    tasks.register("printProperty") { doLast { val teamcity: Map<*,*> by project println("${teamcity["teamcity.build.id"]}") } }

    または、システムプロパティの名前が正当な名前識別子(たとえば、 system.myPropertyName = myPropertyValue )の場合:

    task printProperty { doLast { println "$myPropertyName" } }
    tasks.register("printProperty") { doLast { val myPropertyName: String by project println("$myPropertyName") } }

    構成キャッシング

    バージョン 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 スクリプトでこのメソッドを呼び出す必要がある場合は、次の回避策を使用します。

    1. 新しい構成パラメーターを作成し、影響を受けるパラメーター MyBuildNumber=%build.number% にマップします。

    2. 新しいシステムプロパティを作成し、それを新しい構成パラメーター system.buildNumber = %MyBuildNumber% にマップします。

    3. ${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 の両方の形式でカスタマイズされたビルドステップを示しています。

    object Build : BuildType({ name = "Build" steps { gradle { name = "Gradle clean build" tasks = "clean build" buildFile = "build.gradle" workingDir = "%teamcity.build.checkoutDir%" gradleParams = "--tests MyTestClass.myTestMethod" gradleWrapperPath = "gradlew" enableDebug = true dockerImage = "ubuntu:latest" dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux } } })

    関連事項: GradleBuildStep Kotlin DSL ドキュメント (英語)

    jobs: Job1: name: Job 1 steps: - type: gradle use-gradle-wrapper: 'true' name: GradleCleanBuild working-directory: '%teamcity.build.checkoutDir%' tasks: clean build build-file: build.gradle gradle-params: '--tests MyTestClass.myTestMethod' gradle-wrapper-path: gradlew enable-debug: 'true'
    2026 年 9 月 11 日