TeamCity RESTAPI リファレンス 2026.1 ヘルプ

ビルドの開始とキャンセル

この記事では、TeamCity RESTAPI を介したビルドの開始とキャンセルに関する一般的なユースケースについて説明します。

  • 外部ソフトウェアから TeamCity ビルドを開始します。

  • コマンドラインビルドランナーから RESTAPI を呼び出して、複雑なビルドロジックを実装します。

通常のビルドを開始する

ビルドを開始できるようにするには、次のエンドポイントを介してビルドキューにアクセスする必要があります。

/app/rest/buildQueue

新しいビルドをキューに入れるには、次の 2 つの手順が必要です。

  1. ターゲットビルドを表すリクエストペイロード(つまり、 Build エンティティ)を準備します。

  2. ペイロードを使用して POST 要求を送信します。

ステップ 1 :

この Build エンティティのペイロードには、ビルド構成(または、REST API 用語では BuildType )への参照が含まれている必要があります。Build のサブエンティティとして含めます。

<build> <buildType id="buildConfID"/> </build>
{ "buildType": { "id": "buildConfID" } }

ステップ 2 :

ビルドをキューに追加するには、ステップ 1 で指定した本文を使用して POST 要求を送信します。

/app/rest/buildQueue

要求ヘッダーには、許可ヘッダー(ゲスト許可スキームが使用されている場合を除く)と、オプションで Content-Type/Accept ヘッダーを含める必要があります。

エンドポイントは、起動されたビルドの簡単な説明で応答します。また、TCSESSIONID Cookie も含まれます。これを再利用して、次の実行で認証をスキップできます。

カスタムビルドを開始する

より複雑な例は、ビルド構成で指定された設定とは異なる設定でビルドを実行する必要がある場合です。この場合、リクエストでビルドに関する追加データを送信する必要があります。

Build エンティティで使用可能なフィールドから、以下を渡します。

  • personal : ビルドが個人的なものであることを定義する

  • branchName : デフォルト以外のブランチでビルドを起動するには

  • agent : Agent サブエンティティを送信して、このビルドの特定のエージェントを選択します

  • comment : ビルドに説明を提供する

  • properties : 複合 Properties エンティティを送信して、カスタムビルドパラメーターを設定 (またはそのようなパラメーターが存在しない場合は作成) します。

ほとんどのデータはローカルで利用できるはずです。ただし、この例では、ID を知っている必要がある特定のエージェントを要求します。エージェントを名前で知っている場合は、次のリクエストを送信することでその ID を見つけることができます。

/app/rest/agents?locator=name:myAgentName

ここで、?locator=... 部分は、エージェントを名前で検索するために使用される AgentLocator エンティティを指定します。リクエストは、ID を解析できるそれぞれの Agent エンティティを返します。

POST リクエストの最終的なペイロードは次のようになります。

<build personal="true" branchName="myBranch"> <buildType id="MyBuildConfigID"/> <comment> <text>Build for testing REST API</text> </comment> <agent id="286"/> <properties> <property name="system.existingParameter" value="myValue"/> <property name="env.newPasswordParameter" value="mySecret"> <type rawValue="password"/> </property> </properties> </build>
{ "branchName": "myBranch", "personal": true, "buildType": { "id": "MyBuildConfigID" }, "comment": { "text": "Build for testing REST API" }, "agent": { "id": 286 }, "properties": { "property": [{ "name": "system.existingParameter", "value": "myValue" }, { "name": "env.password", "value": "mySecret", "type": { "rawValue": "password" } } ] } }

基本的な場合と同様に、POST リクエストを介して送信します。その結果、パーソナルビルドは、指定されたエージェント上の myBranch ブランチで 2 つの新しいビルドパラメーター値を使用して実行されます。

すべての依存関係を再構築

このサンプルは、ビルドチェーンに属するビルドを再実行し、すべての依存関係ビルドを新たに再構築したクリーンなチェックアウトフォルダーで実行するように指定する方法を示しています。

これを行うには、 Build エンティティ内で必要な triggeringOptions プロパティを指定します。このフィールドは、 BuildTriggeringOptions タイプのオブジェクトを受け入れます。

<build> <triggeringOptions cleanSources="true" rebuildAllDependencies="true" queueAtTop="true"/> <buildType id="buildConfID"/> </build>
{ "buildType": { "id": "buildConfID" }, "triggeringOptions": { "cleanSources": true, "rebuildAllDependencies": true, "queueAtTop": true } }

特定の変更リビジョンのビルドを実行する

デフォルト設定でビルドをトリガーすると、TeamCity は最新の利用可能な変更に対してビルドを実行します。代わりに特定の変更リビジョンをビルドする必要がある場合は、次のペイロードを含むリクエストを /app/rest/buildQueue エンドポイントに POST します。ブランチ名を指定するには、build オブジェクトに短縮された (論理的な) ブランチ名が必要であり、revision オブジェクトに VCS 仕様に従った完全なブランチ名が必要であることに注意してください。

<build branchName="feature1"> <buildType id="buildConfID"/> <revisions> <revision version="57ef8447c7e277eda9d4e3ce433795d5eb755a64" vcsBranchName="refs/heads/feature1"> <vcs-root-instance vcs-root-id="vcsRootId"/> </revision> </revisions> </build>
{ "branchName": "feature1", "buildType": { "id": "buildConfID" }, "revisions": { "revision": [ { "version": "57ef8447c7e277eda9d4e3ce433795d5eb755a64", "vcsBranchName": "refs/heads/feature1", "vcs-root-instance": { "vcs-root-id": "vcsRootId" } } ] } }

上記のサンプルペイロードでは、1 つのリビジョンと 1 つの VCS ルートが指定されています。トリガーされたビルドで複数のルートが使用され、依存する構成がトリガーされる場合、指定されたルートに一致する影響を受けるすべてのルートインスタンスでも同じリビジョンが使用されます。その他のルート (リビジョンを指定していないルート) では、最新のリポジトリバージョンが使用されます。revisions オブジェクトに failOnMissingRevisions="true" 属性を追加して、リビジョンが指定されていないルートが最新の変更セットを使用しないようにし、不完全なペイロードを持つリクエストを強制的に失敗させることができます。この場合、関係するすべての VCS ルートのリビジョンを指定する必要があります。これを行うには、複数の revision インスタンスを revisions コレクションに追加します。

<build> <buildType id="buildConfID"/> <revisions> <revision version="57ef8447c7e277eda9d4e3ce433795d5eb755a64" vcsBranchName="refs/heads/main"> <vcs-root-instance vcs-root-id="vcsRootId1"/> </revision> <revision version="9706526a5f3c428dc983d1d21123f7131a983240" vcsBranchName="refs/heads/main"> <vcs-root-instance vcs-root-id="vcsRootId2"/> </revision> <!-- other revisions --> </revisions> </build>
{ "buildType": { "id": "buildConfID" }, "revisions": { "revision": [ { "version": "57ef8447c7e277eda9d4e3ce433795d5eb755a64", "vcsBranchName": "refs/heads/main", "vcs-root-instance": { "vcs-root-id": "vcsRootId1" } }, { "version": "9706526a5f3c428dc983d1d21123f7131a983240", "vcsBranchName": "refs/heads/main", "vcs-root-instance": { "vcs-root-id": "vcsRootId2" } }, { // other revisions } ] } }

複数のストリームを持つ Perforce ディポの場合は、vcsBranchName に加えて、<stream>|<revision> 形式で Revision バージョンプロパティにストリーム名を追加する必要があることに注意してください。

<revisions> <revision version="deployment|57ef8447c7e277eda9d4e3ce433795d5eb755a64" vcsBranchName="deployment"> <vcs-root-instance vcs-root-id="vcsRootId1"/> </revision> <!-- other revisions --> </revisions>
{ "revisions": { "revision": [ { "version": "deployment|57ef8447c7e277eda9d4e3ce433795d5eb755a64", "vcs-root-instance": { "vcs-root-id": "vcsRootId1" } }, { // other revisions } ] } }

Perforce シェルフトリガーを呼び出して特定の変更リストに対してビルドを実行するには、次のエンドポイントを使用します。

POST /app/perforce/runBuildForShelve?buildTypeId=<BuildConfigurationID>&vcsRootId=<VCSRootID>&shelvedChangelist=<ChangelistID>

保留中の Perforce 変更リストを作成する

特定の保留中の変更リストを使用して新しい Perforce build をトリガーするには、次の本文を含む POST リクエストを /app/rest/buildQueue エンドポイントに送信します。

<build> <buildType id="Perforce_Swarm_Build"/> <properties> <property name="teamcity.perforce.build.swarmUpdateUrl" value="{update}"/> <property name="vcsRoot.Perforce_Swarm_Root.shelvedChangelist" value="{change}"/> </properties> </build>
{ "buildType": { "id": "Perforce_Swarm_Build" }, "properties": { "property": [ { "name": "teamcity.perforce.build.swarmUpdateUrl", "value": "{update}" }, { "name": "vcsRoot.Perforce_Swarm_Root.shelvedChangelist", "value": "{change}" } ] } }
swarmUpdateURL

Perforce Helix Swarm テスト更新の URL。このプロパティはオプションであり、Helix Swarm によってトリガーされるビルドでのみ使用されます。

保留中変更リスト

このプロパティは、保留中の変更リスト番号と有効な VCS ルート外部 ID を指す必要があります。値は `vcsRoot.{external_id}.shelvedChangeList` 形式である必要があります。

このエンドポイントに加えて、専用の runBuildForShelve エンドポイントも使用できます。

/app/perforce/runBuildForShelve?buildTypeId=<BUILD_TYPE_ID>&vcsRootId=<VCS_ROOT_ID>&shelvedChangelist=<SHELVED_CHANGELIST_ID>
BUILD_TYPE_ID

ビルド構成の ID。

VCS_ROOT_ID

関連する VCS ルートの外部 ID。

SHELVED_CHANGELIST_ID

必要な変更リストの ID。

キューに入れられたビルドを取得する

ビルドをキューに入れたら、そのステータスを確認できます。

/app/rest/buildQueue?locator=<BuildQueueLocator>

ここで、 BuildQueueLocator はキューに入れられたビルドを表します。POST 要求の送信時に受け取ったビルド ID を指定できます。

このリクエストは Build エンティティを返します。デフォルトでは、TeamCity はエンティティの基本フィールドを返します。ポーリングの目的で、ビルドステータスのみを受け取りたい場合があります。リクエストパスで ?fields パラメーターを使用して、レスポンスで使用できるフィールドの範囲を制限できます(続きを読む)。

/app/rest/buildQueue?locator=id:<myBuildID>&fields=build(id,state)

呼び出しの結果、TeamCity は、idstate の 2 つのフィールドのみが入力された Build エンティティを返します。

キューに入れられたビルドをキャンセルする

キューに入れられたばかりのビルドをキャンセルするには、次を送信します。

/app/rest/buildQueue/<queuedBuildLocator>

ここで、BuildCancelRequest エンティティがペイロードとして使用されます。

このエンティティは、次の 2 つのフィールドで構成されます。

  • comment : ビルドがキャンセルされた理由に関するオプションのコメントを提供する

  • readdIntoQueue : これが以前にキャンセルされたビルドを復元する要求であるかどうかを宣言するブールプロパティ。ビルドを復元するのではなくキャンセルすることを目的としているため、false に設定します

結果のペイロード:

<buildCancelRequest comment='Canceling a queued build' readdIntoQueue='false'/>
{ "comment": "Canceling a queued build", "readdIntoQueue": false }

ID でビルドをキャンセルするには、以下を送信します。

/app/rest/buildQueue/id:<build ID>

または、キューに入れられたビルドを単に削除することもできます(メタデータが必要ない場合)。これを行うには、同じエンドポイントで DELETE 要求を実行します。

/app/rest/buildQueue/id:<build ID>

開始したビルドをキャンセルする

すでに開始されているビルドをキャンセルするには、以下を送信します。

/app/rest/builds/<buildLocator>

上記の例と同じ BuildCancelRequest エンティティを使用します。

<buildCancelRequest comment='Canceling a running build' readdIntoQueue='false'/>
{ "comment": "Canceling a running build", "readdIntoQueue": false }

ID でビルドをキャンセルするには、以下を送信します。

<TeamCity URL>:[<port>]/app/rest/builds/id:<build ID>

チェーンビルドのトリガー

TeamCity では、さまざまな構成からのビルドを編成して、単一のチェーンで実行できます。例: ビルド結果を集約するための複合ビルドで終わる 3 つのビルド構成のチェーンを持つことができます: ConfigA → ConfigB → ConfigC → ChainABC。

チェーン全体を開始するには、最後のビルド構成に対して新しいビルドをトリガーします。

/app/rest/buildQueue
<build> <buildType id="ChainABC"/> </build>
{ "buildType": { "id": "ChainABC" } }

チェーンの最後の構成ではない構成に対して新しいビルドをトリガーすると、この構成とその構成が依存する構成のみが実行されます。例: 次のペイロードは、ConfigA → ConfigB シーケンスのみをトリガーします (ConfigB は ConfigA に依存します)。

<build> <buildType id="ConfigB"/> </build>
{ "buildType": { "id": "ConfigB" } }

直接依存関係のあるビルドの再利用

依存ビルドをトリガーするときに、この新しいビルドで再利用する前の構成の完了したビルドを指定できます。例: 次のペイロードは、ID が「4976」の既存の ConfigA ビルドを再利用する新しい ConfigB ビルドをトリガーします。

<build> <buildType id="ConfigB"/> <snapshot-dependencies count="1"> <build id="4976" buildTypeId="ConfigA"/> </snapshot-dependencies> </build>
{ "buildType": { "id": "ConfigB" }, "snapshot-dependencies": { "count": 1, "build": [{ "id": 4976, "buildTypeId": "ConfigA" }] } }

同じリクエストで複数の直接依存関係を指定できます。たとえば、ConfigA と ConfigB が独立した構成で、ConfigC が両方に依存している場合、次のペイロードを送信できます。

<build> <buildType id="ConfigC"/> <snapshot-dependencies> <build id="4997" buildTypeId="ConfigA"/> <build id="4998" buildTypeId="ConfigB"/> </snapshot-dependencies> </build>
{ "buildType": { "id": "ConfigC" }, "snapshot-dependencies": { "build": [ { "id": 4997, "buildTypeId": "ConfigA" }, { "id": 4998, "buildTypeId": "ConfigB" }] } }
Reuse both direct builds

間接的な依存関係を持つビルドの再利用

前のセクションでは、リクエストは、トリガーされたビルドが直接依存する構成のビルドを再利用しました。ただし、間接的な依存関係でビルドを再利用することもできます。

例: 同じ ConfigA → ConfigB → ConfigC チェーンの場合、既存の ConfigA ビルドを再利用する ConfigC ビルドをトリガーできます。

/app/rest/buildQueue
<build> <buildType id="ConfigC"/> <snapshot-dependencies count="1"> <build id="4976" buildTypeId="ConfigA"/> </snapshot-dependencies> </build>
{ "buildType": { "id": "ConfigC" }, "snapshot-dependencies": { "count": 1, "build": [{ "id": 4976, "buildTypeId": "ConfigA" }] } }

新しい ConfigB ビルドは、ConfigC の依存関係設定に応じて実行されるかどうかが決まります。ConfigC で適切なビルドの再利用が許可されている場合、ConfigA と ConfigB の両方のビルドが再利用されます。

Reuse both builds

それ以外の場合、ConfigC が常に新しいビルドを必要とする場合は、(既存の ConfigA ビルドの結果を使用して) 新しい ConfigB ビルドが実行されます。

Reuse one build

ビルドキューの一時停止と再開

すべての TeamCity ビルドを一時停止および再開するには、/app/rest/buildQueue/pausedState エンドポイントに PUT リクエストを送信します。リクエスト本文には、次の 2 つのプロパティを持つオブジェクトを渡す必要があります。

  • paused — キューが現在一時停止されているかどうかを指定するブール型のプロパティ。

  • reason — UI の警告および監査エントリに表示されるコメントを指定する、オプションの文字列プロパティ。

curl --request PUT '<server-url>app/rest/buildQueue/pausedState' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <access-token>' \ --data '{ "paused": true, "reason": "Paused for maintenance" }'

関連ページ:

ビルド構成の詳細の管理

この記事では、TeamCity REST API を介してビルド構成を取得する方法を説明します。ビルド構成のリスト:サーバー上のすべてのビルド構成を取得するには、次を使用します。/app/rest/buildTypes サーバーは、要求によって検出された BuildType エンティティを含む BuildTypes エンティティで応答します。特定のビルド構成を取得する:特定のビルド構成を見つけるには、以下を使用します。/app/rest/buildTypes/{buildConfigurationLo...

パーソナルビルドの実行

個人ビルドは、通常、バージョン管理にまだコミットされていない変更を使用する共通ビルドシーケンスからのビルドです。個人ビルドは通常、サポートされている IDE の 1 つからリモート実行プロシージャを介して開始されます。カスタムビルドを実行するダイアログから個人ビルドを開始し、変更を加えたパッチをサーバーに直接アップロードすることもできます。個人ビルドには対応するアイコンが付いており、ビルドを開始したユーザーのみに表示されます。他の TeamCity ユーザーの個人ビルドを表示するには、ユーザープロ...

TeamCity と Perforce の統合

この記事では、TeamCity を Perforce P4 と統合して次のことを行う方法について説明します。P4 リポジトリに保存されているプロジェクトのソースをビルドします。Perforce ストリームを機能ブランチとして使用し、それらのソースを互いに独立して構築します。シェルブされた変更リスト内のファイルを事前テストおよび事前ビルドします。ソースに自動ラベルを適用します。Perforce HelixSwarm のコードレビューにビルドステータスを報告します。前提条件:TeamCity は P4...

ビルドチェーン

ビルドチェーンは、相互接続されたビルド構成とパイプラインの作成と編集のシーケンスです。チェーンは、完全に実行することも、部分的に実行することもできます。どちらの場合も、トリガーされた構成またはパイプラインによって、その上流の依存オブジェクトが最初に実行されます。例: 下のダイアグラムは、サンプルビルドチェーンを示しています。+------------+ +----------------+ +--------+ | Build core |---->| Build plugin A |--...

コンポジットビルド構成

コンポジットビルド構成は、複数の通常のビルド構成をトリガーし、結果を 1 か所で追跡するように設計された「ステップレス」構成です。重要なポイント:複合構成では、実際の構築ルーチンは実行されません。複合構成では、依存関係からすべての情報が集約され、一元的な方法で表示されます。複合ビルドはビルドキュースロットを占有せず、エージェントを実行する必要もありません。ビルド構成タイプを切り替えるには、「構成設定 | 一般」タブに移動します。サンプル:このチュートリアルでは、複数のビルド構成を作成し、1...

ビルドキューの操作

TeamCity では、ビルドキューはトリガーされた、または手動で起動され、開始を待機しているビルドのリストです。TeamCity は、ビルドがアイドル状態になるとすぐに、互換性のあるビルドエージェントに配布します。キューに入れられたビルドは、エージェントで開始された瞬間にエージェントに割り当てられます。ビルドがビルドキューで待機している間は、事前割り当ては行われません。キューページ:上部のナビゲーションバーからキューページにアクセスします。このページには、実行を待機しているビルドのリストが表...