TeamCity On-Premises 2026.2 Help

ジョブ設定

ジョブには、順番に実行される個々のビルドステップが含まれます。 この記事では、シーケンスの実行方法を制御する一般的な設定について説明します。

ジョブ設定の編集

ジョブ設定を表示および編集するには、右上隅の 設定トグルをクリックし、任意のジョブタイルをクリックします (または、新しいジョブを作成するには追加タイルをクリックします)。

ジョブ設定を開く

ビジュアルエディターからコードに切り替えて、マークアップを直接編集することもできます。

依存関係

このセクションでは、スタンドアロンジョブを統一されたワークフローに配置できます。 ビジュアルエディターでも同じ操作を行えます。ジョブの端にカーソルを合わせてプラスアイコンを表示し、接続先のジョブのどちらかの側にドラッグします。

ジョブの依存関係を作成する

上流ジョブへの依存関係を追加する場合は、次も設定できます:

ジョブの依存関係設定
  • 共有ファイルを無視する — 有効化すると、ジョブはアップストリームジョブが 共有するファイルを自動的にダウンロードしません。 アップストリームジョブがファイルを共有している場合にのみ利用できます。

  • 上流が失敗してもジョブを実行 — デフォルトでは、アップストリームジョブが失敗すると、それに直接または間接的に依存するすべてのジョブがキューから削除され、"依存先のビルドの一部が失敗しました" エラーでキャンセルされます。 特定の依存関係でこのオプションを有効化すると、その特定のアップストリームジョブが失敗してもジョブを実行できます。ただし、パイプラインの実行全体は引き続き失敗としてマークされます。 たとえば、クリーンアップジョブや通知ジョブを常に実行するために使用します。

ステップ

このセクションを使用して、プロジェクトのビルドとテスト、カスタムスクリプトの実行、Docker イメージのアップロードなど、ジョブの実行内容を定義します。

現在、パイプラインは 4 種類のステップを追加できます。 これらはすべて、対応する 従来のビルド構成ステップの軽量版です。

スクリプト

これは、エージェントマシンのターミナルで直接コマンドを実行する汎用的なステップです。 これにより、cURL、Python、MSBuild、Homebrew など、エージェントにインストールされているあらゆるツールと連携できるようになります。

例: 次の手順では、ターゲットビルド構成によって生成されたアーティファクトをダウンロードします。

jobs: Job1: name: Job 1 steps: - type: script script-content: >- curl --location 'https://example.com/app/rest/builds/buildType:BuildConfigID/artifacts/archived/?locator=pattern%3A*.zip' \ --header 'Content-Type: application/zip' \ --header 'Accept: application/zip' \ --header 'Authorization: Bearer %bearer-token%' \ --output output.zip \ --data '' files-publication: - path: output.zip share-with-jobs: true publish-artifact: true secrets: bearer-token: credentialsJSON:12e5c38b-16a1-4201-a913-5b5411bd7bfe

Gradle

このステップは、 Gradle ビルドツール(英語)との対話用にカスタマイズされており、Java、Kotlin、Groovy、Scala、Swift、その他のプロジェクトをビルド、テスト、パッケージ化できます。

name: Gradle Project jobs: Job1: name: 'Job 1: Gradle Build' steps: - type: gradle tasks: clean build -x test use-gradle-wrapper: 'true' Job1_2: name: 'Job 2: Test Suite 1' runs-on: Linux-Medium steps: - type: gradle working-directory: test1 tasks: clean test build-file: build.gradle use-gradle-wrapper: 'true' dependencies: - Job1

Maven

Maven ビルドステップは、 Apache Maven(英語) を使用して Java、Kotlin、Groovy、その他のプロジェクトを処理するように設計されています。

jobs: Job1: name: Job 1 steps: - type: maven maven-version: bundled_3_6 pom-location: pom.xml goals: '-B -DskipTests clean package' jdk-home: '%env.JDK_21_0%'

ビルド機能

ビルド機能も、ステップと同様に特定の動作を実行します。 ただし、機能はビルドライフサイクルのあらかじめ定義されたタイミングで実行されるのに対し、ステップはより柔軟性があり、必要に応じて配置できます。

例:

  • スクリプトは、ターミナルコマンドを実行するビルドステップです。 その動作は設定によって異なり、単一のコマンドまたは完全なスクリプトを実行したり、インラインスクリプトまたはファイルベースのスクリプトを使用したり、パイプラインの任意の場所で実行したりできます。

  • Swabra は、ビルド機能の一つで、ビルド中に生成されたファイルをクリーンアップするという特定のアクションを、ビルドの前または後のいずれかの特定のタイミングで実行します。

現時点では、パイプラインはビルド構成で利用可能な ビルド機能のごく一部のみをサポートしています。

ビルドファイルクリーナー (Swabra)

ビルド中に作成、変更、削除されたファイルを追跡します。 新規ファイルはビルド完了時または次回のビルド開始時に削除され、変更および削除されたファイルはビルドログに記録されます。 追跡対象を特定のファイルやディレクトリに限定することも可能です。

詳細: ビルドファイルクリーナー (Swabra)

ビルドキャッシング

ダウンロードした npm パッケージや Maven ローカルリポジトリアーティファクト(英語)など、以前の実行時に生成されたファイルを再利用することで、ビルドパフォーマンスが向上します。

詳細: ビルドキャッシング

空きディスク容量

エージェントディスクを自動的にクリーンアップし、新しいビルドに必要な空き容量を確保します。

詳細: 空きディスク容量

XML レポート処理

TeamCity で、外部ツールによって生成されたレポートファイルを使用できるようにします。 サポートされている形式には、JUnit、Surefire/Failsafe、TRX、Google Test などのテストフレームワークのレポート、および SpotBugs、PMD、Checkstyle などのツールによるコード分析レポートが含まれます。

詳細: XML レポート処理

最適化

このセクションでは、パイプラインの実行を大幅に高速化し、時間とリソースを節約し、クラウドエージェントの場合はインフラストラクチャコストを節約するための設定について説明します。

  • 並列テスト — Maven および Gradle ステップにより、テストスイートをバッチに分割し、個別のビルドエージェントで並列に実行される N 個の仮想ビルドを生成できます。

  • ジョブ結果を再利用 — 有効な リポジトリに新しい変更が含まれていない場合、TeamCity はジョブの再実行をスキップし、前回の実行のアーティファクト、ステータス、結果を再利用します。 これにより、最近の変更の影響を受けるジョブのみが実行されます。

    混乱を避けるために、再利用されたジョブは UI で明示的にマークされます。

    パイプライン実行の再利用

    上部の "Optimization" タイルに注目してください: TeamCity はこの実行を前回よりほぼ五倍速く完了し、再利用された実行によって前回の実行時間のほぼ 80% が節約されました。

エージェント要件

TeamCity はエージェントソフトウェアを自動的に追跡し、キューに入った実行が互換性のあるエージェントにのみ割り当てられるようにします。 例: Maven ステップをコンテナーで実行する必要がある場合、Docker または Podman のないエージェントは互換性がないとしてマークされます。

同様に、ジョブがプロジェクト、 パイプラインジョブパラメーター セクションのいずれにも定義されていないパラメーターを使用する場合、TeamCity は、このパラメーター値の最後に残った潜在的なソースとしてエージェントマシンをチェックします。 例: コマンドラインステップで echo %myParam% が未知のパラメーター参照で実行される場合、空でない「myParam」パラメーターを持つエージェントのみがジョブを実行できます。

パイプラインにおける暗黙の要件

エージェント要件 セクションでは、名前、ハードウェアスペック、インストールされているツールなど、対象エージェントの追加条件を定義できます。

TeamCity は、ほとんどの基本的なエージェントハードウェア要件について、CPU コア数、エージェントメモリの総量、CPU アーキテクチャといったすぐに使用できるオプションを表示します。

パイプラインエージェントの要件

独自の要件を定義するには、 カスタム要件を追加 をクリックします。 各要件は <agent.parameter> <演算子> [値] 式です。 TeamCity は、承認された各エージェントに対してこれらの式を評価し、"true" を返すエージェントをジョブの実行対象としてマークし、それ以外を互換性なしとしてラベル付けします。

エージェントパラメーター

エージェントマシンによって報告されるパラメーターで、その値は必要な基準に一致する必要があります。 以下に、様々なエージェントパラメーターの例をいくつか示します。

  • teamcity.agent.jvm.os.arch — エージェントマシンのアーキテクチャを報告します。 例: Apple ARM デバイスで実行されている macOS エージェントの場合は aarch64 です。

  • env.ANDROID_SDK_HOME — エージェントマシンにインストールされている Android SDK へのパスを返します。 例: /home/builduser/android-sdk-linux

  • teamcity.agent.jvm.user.timezone — エージェントマシンのタイムゾーンを格納します。 例: Etc/UTC

  • Mono バージョン — Mono プラットフォームのバージョンを返します。 例: 6.12.0.200

エージェント | <TeamCity_Agent> | エージェントパラメーター タブに移動して、エージェントが報告するパラメーターを確認し、エージェントのハードウェアおよびソフトウェアデータを保存するパラメーターを見つけます。

TeamCity エージェントパラメーター

事前定義されたビルドパラメーターのリスト も参照してください。

演算子

実際のエージェントパラメーター値と指定された値を比較するために使用される論理演算子。 例: 「より小さい」、「で始まる」、「含む」など。

関連事項: 要件条件

エージェントのパラメーター値と比較するカスタム値。 値を必要としない唯一の演算子は 存在する で、実際の値に関係なく、エージェントが必要なパラメーターを報告しているかどうかをチェックします。

次の YAML サンプルでは、三つの要件を定義しています: RAM 16 GB、10 GB 以上の空きディスク容量、Python 3 がインストールされていること。 標準の TeamCity 要件では短い エイリアス: 値 構文を使用し、カスタム要件では完全な <パラメーター> <演算子> [値] 式を使用します (公開タイトル用の追加の お名前 パラメーターを含む)。

jobs: Job1: name: Sample job steps: - type: script script-content: cat artifact.txt runs-on: self-hosted: - ram: 16GB - requirement: more-than name: Free disk space parameter: teamcity.agent.work.dir.freeSpaceMb value: '10240' - requirement: exists name: Python parameter: python3.executable

パラメーター

パラメーターは、生の値を参照に置き換えるために設計された名前と値のペアです。 TeamCity がパラメーター参照 (%param-name%) を検出すると、実際のパラメーター値に置き換えます。

TeamCity は、パイプラインパラメーターとジョブパラメーターという二つのパラメーター層をサポートしています。 パイプラインパラメーターは、入力パラメーターと出力パラメーターの両方として利用可能です。

  • ジョブパラメーター は通常、親ジョブ内でのみ使用できます。 デフォルトでは、 環境。 接頭辞が含まれます。 ダウンストリーム ジョブからジョブパラメーターにアクセスするには、 job.<source_job_ID>.<parameter_name> 構文を使用します。 以下のサンプルは、単一のパラメーターを持つジョブを示しています。 ダウンストリームジョブは、このパラメーターへの参照を使用して、独自の ParamJobB を指定します。

    jobs: Job1: name: Job 1 steps: - type: script script-content: |- echo "Print Job1 parameter: %env.ParamJobA%" # prints 'foo' parameters: env.ParamJobA: foo Job2: name: Job 2 dependencies: - Job1 parameters: env.ParamJobB: '%job.Job1.env.ParamJobA% bar' steps: - type: script script-content: |- echo "Print parameter from upstream Job: %job.Job1.env.ParamJobA%" # prints 'foo' echo "Print modified parameter: %env.ParamJobB%" # prints 'foo bar'

  • パイプライン入力パラメーター は、このパイプラインのすべてのジョブで共有されます。 詳細については、 パイプラインパラメーターを参照してください。

  • パイプライン出力パラメーター は同一パイプライン内では使用できません。 代わりに、同じチェーンに属する下流のパイプラインおよび構成に渡されます。 詳細については、 パイプラインの依存関係 を参照してください。

ジョブステップでは、 パラメーターを設定 サービスメッセージメッセージを送信してパラメーター値を動的に編集したり(または新しいパラメーターを作成したり)することもできます。 ただし、変更された値は、このメッセージを送信したステップが完了した後にのみ使用可能になることに注意してください。

parameters: env.JobParam: foo jobs: Job1: name: Job 1 steps: - type: script name: Print original value script-content: echo %env.JobParam% # prints 'foo' - type: script name: Change param value script-content: |- echo "##teamcity[setParameter name='env.JobParam' value='bar']" echo %env.JobParam% # prints 'foo', the step is still running - type: script name: Print modified value script-content: echo %env.JobParam% # prints 'bar'

出力ファイル

ジョブによって共有されるファイルは、アーティファクト、下流のジョブの内部ファイル、その両方として機能します。

アーティファクト

アーティファクトは、実行結果ページの アーティファクト タブに表示されるファイルです。 プロジェクトの表示権限を持つユーザーは、これらのファイルをローカルストレージにダウンロードできます。

アーティファクトは次の 2 つの方法で表示できます。

  • 実行結果ページで、 アーティファクト タブを開いて、パイプラインのジョブによって公開されたすべてのアーティファクトを表示します。

  • 同じページからジョブを選択してサイドパネルを開き、 アーティファクト タブに切り替えて、その特定のジョブによって生成されたアーティファクトを表示します。

ジョブアーティファクトタブ
共用ファイル

共有ファイルはパイプラインを通じて後続のジョブに渡されます。 これらは通常、内部ファイルまたはまだ確定していないファイルです。

アーティファクトとは異なり、共有ファイルはビルド結果ページのメインの アーティファクト タブには表示されません。 ただし、ジョブサイドパネルの アーティファクト タブには、隠しファイルである .shared_files.zip アーカイブに圧縮されて表示されます。

共有ファイルはアーティファクトタブに表示されます

以下の YAML の例では、ファイルを作成および変更するジョブと、ファイルをインポートしてその内容を出力するジョブが示されています。 「ジョブ 2」は、ファイルをアーティファクトとして公開します。

jobs: Job1: name: Create file steps: - type: script script-content: |- touch sample.txt echo "File created by Job 1, build #%tc.build.number%" >> sample.txt files-publication: - path: sample.txt share-with-jobs: true publish-artifact: false Job2: name: Print file contents dependencies: - Job1 steps: - type: script script-content: cat sample.txt files-publication: - path: sample.txt share-with-jobs: false publish-artifact: true

これら二つのタイプは相互に排他的ではありません: 出力ファイルを追加するときに、 共用ファイルアーティファクト の両方のチェックボックスをオンにできます。

公開されたアーティファクト

共有ファイルは親ディレクトリ階層を保持しますが、アーティファクトは保持されないことに注意してください。 次のサンプルは、関連するフォルダーに 2 つのファイルを生成するジョブを示しています。

jobs: Job1: name: Job 1 steps: - type: script script-content: |- mkdir ./artifacts cd artifacts touch artifact.txt echo "This file is published as artifact" >> artifact.txt - type: script script-content: |- mkdir ./sharedfiles cd sharedfiles touch shared.txt echo "This is a shared file" >> shared.txt files-publication: - path: sharedfiles/shared.txt share-with-jobs: true publish-artifact: false - path: artifacts/artifact.txt share-with-jobs: false publish-artifact: true

ほぼ同じステップスクリプトと files-publication ルールを使用しているにもかかわらず、結果はわずかに異なります。 共有ファイルは親フォルダーと共に隠しアーカイブ「.shared_files.zip」に配置されますが、アーティファクトはそのまま「publish」ディレクトリ以下にまとめられます。

アーティファクトと共有ファイルのフォルダー保持

リポジトリ

このセクションでは、このジョブがチェックアウトするリモートリポジトリを選択できます。 リポジトリを追加するには、 パイプライン設定リポジトリ セクションに新しいエントリを作成してください。

デフォルトでは、ソースはエージェントの作業ディレクトリのサブフォルダーにチェックインされます。 エージェントが別のジョブを実行する際に、あるジョブのソースが常に失われないようにするため、このサブフォルダーにはジョブごとに一意の名前(例: /mnt/agent/work/6fa95896c6cadf54 )が自動生成されます。

リポジトリ セクション項目の対応するオプションを使用して、チェックアウトされたソースのカスタムディレクトリを指定できます。 チェックアウトディレクトリへのパスは絶対パスにできますが、相対パス (マイカスタムフォルダー) または定義済みの TeamCity パラメーターを参照するパス (%\teamcity.エージェント.作業.ディレクトリ%/マイカスタムフォルダー) のいずれかを使用することを強くお勧めします。

jobs: Job1: name: Job 1 steps: [] repositories: - https://github.com/Johndoe/MySampleApp: # Repository from URL path: ''' # Default value, will use a directory that matches the repository name enabled: true - Root_MyRoot: # Repository from an existing VCS root path: sample-java-app-maven.git enabled: true - main: # Main repository path: Athanor # Custom checkout directory (relative path) enabled: false

以下のダイアグラムは、ビルドプロセスに関係するコアディレクトリ間の関係の概要を示しています。

エージェントとビルドディレクトリ

詳細については、次の記事を参照してください。

統合

パイプラインとジョブ設定パネルの両方に、プライベート Docker および NPM レジストリに接続するための 統合 セクションが含まれています。

  • パイプライン設定では、ジョブで利用可能な統合の完全なリストを管理します。

  • ジョブ設定では、トグルを使用して、ジョブが自動的にログインするレジストリを選択し、ビルドステップが必要なデータにアクセスできるようにします。

すべての情報については、 パイプライン連携セクションを参照してください。

2026 年 9 月 11 日