TeamCity オンプレミス 2025.11 ヘルプ

Amazon EC2 用の TeamCity のセットアップ

TeamCity Amazon EC2 統合により、TeamCity は、現在のビルドキューのワークロードに応じて、クラウドでホストされているエージェントをオンデマンドで自動的に開始および停止することで、ビルドリソースを自動スケールできます。

共通情報

TeamCity では、さまざまなタイプの EC2 統合をセットアップできます。使用する設定とソースに応じて、クラウド AWS ホスト型エージェントは以下で実行できます。

Overview image
  • 同じ Amazon マシンイメージ (AMI) から複製された複数の同一のインスタンス。オンデマンドまたはスポットインスタンスとして起動できます。

  • TeamCity によって管理される単一の永続 EC2 インスタンス。複数の TeamCity サーバー間で共有できます。

  • AWS からリクエストされたスポットインスタンスのセット ( スポットフリート (英語))。

前提条件

このセクションでは、TeamCity UI でクラウドプロファイルを設定する前に、AWS アカウントで実行する必要がある手順について説明します。

EC2 インスタンスの作成とセットアップ

  1. Amazon EC2 コンソール(英語)を開きます。

  2. 必要なインスタンスを作成します。詳細については、Amazon チュートリアル(Linux(英語)Windows(英語)macOS)(英語)を参照してください。

  3. インスタンスにエージェントをインストールします。OS の種類によって必要な手順が異なる場合があります。詳細については、次の記事を参照してください。

  4. ビルドステップと TeamCity エージェント自体の実行に必要な追加ソフトウェア (JDK と JRE、SDK、ランタイムフレームワーク、Git や Docker などの構築ツールなど) をインストールします。

  5. エージェントを実行し、TeamCity サーバーに正常に接続し、必要なすべての構成と互換性があることを確認します。

  6. インスタンスの起動時に TeamCity エージェントを自動的に実行するようにシステムを構成します。

  7. Windows インスタンスの場合は、次の手順に従います: Windows エージェントの追加構成

  8. インスタンスを再起動して、ビルドエージェントが自動的に起動し、サーバーに接続できることを確認します。

AMI を作成する

前の手順で作成したインスタンスを TeamCity サーバーに直接接続し、スタンドアロンエージェントマシンとして機能させる場合は、このセクションをスキップしてください。それ以外の場合、TeamCity で現在のワークロードに基づいてアクティブなクラウドエージェントの数を自動的にスケーリングする場合は、このインスタンスから AMI を作成します。

  1. ビルドエージェントを停止します。Windows インスタンスの場合は、エージェントサービスを停止しますが、スタートアップタイプは自動のままにします。

  2. インストールウィザード、ダウンロードしたアーカイブ、ビルドログなどの一時データと余分なデータをすべてインスタンスから削除します。

  3. オプション: <agent_home>/logs ディレクトリと <agent_home>/temp ディレクトリを削除します。

  4. オプション: <agent_home>/conf/amazon-* ファイルを削除します。

  5. <agent_home>/conf/buildAgent.properties ファイルから次のプロパティを削除します。

    • name — TeamCity はインスタンスに一意の名前を自動的に割り当てます。

    • serverUrl — EC2 統合プラグインの場合、クラウドプロファイルを設定するときにすべてのインスタンスにサーバー URL を指定するため、このプロパティは削除しても安全です。他のプラグインでは、このプロパティが存在し、正しい値に設定されている必要がある場合があります。

    • (オプション) authorizationToken — 新しいクラウドエージェントは自動的に承認されます。

  6. インスタンスを停止します。

  7. インスタンスの概要ページで、アクション | イメージとテンプレート | イメージの作成をクリックします。

    Create an AMI

TeamCity での EC2 統合のセットアップ

必要なインスタンスまたは AMI を作成したら、TeamCity UI でクラウドプロファイルを設定できます。

クラウドプロファイルを作成する

クラウドプロファイルは、TeamCity が仮想マシンを起動するための一般的な設定のコレクションです。

  1. 必要なプロジェクトに移動します。このプロファイルのクラウドエージェントをグローバルに使用できるようにするには、ルートプロジェクトを選択します。個々のプロジェクトが所有するプロファイルを使用して、これらのプロジェクトでのみ使用できるエージェントを生成できます。

  2. プロジェクト設定を開き、クラウドプロファイル設定タブに移動します。

  3. 新規プロファイルの作成をクリックします。

  4. クラウドの種類を「Amazon EC2」に設定します。

  5. プロファイル名とオプションの説明を入力します。

  6. AWS ベースのイメージとインスタンスにアクセスするために使用する AWS 接続を選択します。「IAM ロール」タイプの AWS 接続が動作するには、アクセスキーまたはデフォルトの認証情報プロバイダーチェーンタイプのいずれかの基盤となる接続が必要であることに注意してください。

  7. インスタンスがホストされている AWS リージョンを選択します。

  8. オプション: エージェントの制限を設定します。この数値は、このプロファイルのすべてのクラウドイメージから作成されるエージェントの全体的な制限を指定します。

  9. オプション: TeamCity サーバーの URL を指定します。この値はエージェントの buildAgent.properties ファイルに自動的に渡されます。指定されていない場合、エージェントは管理 | グローバル設定ページと同じ値を使用します。

  10. アクティブなクラウドエージェントを終了するための一連の基準を指定します。エージェントがアイドル状態を維持できる時間、および実際のビルドルーチンを実行できる時間を選択できます。いずれかの条件が満たされた場合、エージェントは現在のビルドを完了した後にのみ終了します。

Agents terminate conditions
11. 作成または変更を適用をクリックしてプロファイルを保存し、プロファイル設定ページを終了します。

クラウドイメージを追加する

クラウドプロファイルは、認証資格情報やインスタンスリージョンなどのグローバル設定を指定します。各プロファイルには、起動する必要がある特定のタイプのクラウドインスタンスに関連する設定を保存する 1 つまたは複数のイメージを含めることができます。必要に応じて、プロファイルにイメージをいくつでも追加できます。ただし、すべてのイメージによって起動されるエージェントの合計数は、プロファイル設定で設定された制限 (およびライセンスで許可されているエージェントの数) を超えることはできません。

  1. イメージの追加ボタンをクリックしてください。

  2. オプションのイメージ名を指定します。

  3. 必要なイメージタイプを選択します。

    TeamCity が同一のインスタンスを生成するために使用する AMI を選択します。

    3.1. TeamCity で特定の起動テンプレート(英語)をインポートして使用する場合、起動テンプレートを使用するオプションをオンにします。サーバー上でテンプレートのデフォルト / 最新バージョンが更新されると、TeamCity はこれらの変更を検出し、実行中のインスタンスを更新します。

    3.2. 必要な AMI を選択します。

    • 独自の AMI — TeamCity は、クラウドプロファイル設定で指定された認証情報で使用可能な AMI のコレクションをスキャンします。見つかったすべての AMI を参照し、必要なイメージを選択できます。

    • ID による AMI共有 AMI(英語) を利用できるようにします。

    • タグ別 AMIAWS タグ(英語)のコンマ区切りリスト (例: Owner=Mike,Project=Glacier,Subnet=Public) を指定します。指定されたタグが複数の AMI を指している場合、TeamCity は最後に作成された AMI を使用します。AMI が見つからなかった場合、エージェントセクションのイメージ名は「イメージ名 (ami-xxxxxxxxx)」ではなく「イメージ名 (データなし)」になります。

      Invalid AMI tags

    3.3. 1 つまたは複数のインスタンスタイプ(英語)を指定します。

    • オンデマンドまたはこの特定のタイプのスポットインスタンスのみを起動する必要がある場合は、タイプを 1 つ指定します (たとえば、t2.medium)。異なるインスタンスタイプ値を持つ同じ AMI をターゲットとする複数のイメージを追加できます。これにより、タイプごとに異なるアクティブインスタンス制限を設定し、特定のタイプのインスタンスを手動で開始できます。

    • スポットインスタンスを並べ替える場合は、複数のタイプ ( t2.smallt2.mediumt2.large など) を設定します。このアプローチにより、スポットインスタンスが割り当てられる可能性が高まります。

    3.4. オプション: 追加のイメージ設定を指定します。

    • IAM ロール — 起動されたすべてのインスタンスが引き受ける IAM ロール。このロールは、EC2 インスタンスで実行されているアプリケーションに付与される(英語)アクセス許可を指定します。TeamCity で使用される AWS アカウントには、IAM ロールを利用するための iam:ListInstanceProfiles および iam:PassRole 権限が必要です。

    • キーペアSSH を使用して (英語)EC2 インスタンスに接続する必要がある場合は必須です。

    • ユーザーデータ — インスタンスの起動時に実行されるスクリプトを指定できます。詳細: Windows(英語)Linux(英語)

    • タグ — コンマで区切られたインスタンスタグのリスト。たとえば、LaunchedBy=TeamCity,TeamCityCloudProfileName=MyProfile1 タグ付けには ec2:*Tags 権限が必要です。詳細については、次のセクションを参照してください: タグ付け

    3.5. オンデマンドインスタンスよりも安価なスポットインスタンス(英語)を希望する場合は、スポットインスタンスを使用するをチェックしてください。最高負荷格フィールドでは、スポットインスタンスの最大入札価格 (ドル) を指定できます。入札価格が指定されていない場合は、デフォルトのオンデマンド価格が使用されます。

    TeamCity は、スポット配置スコア(英語)に基づいて、スポットリクエストが成功する可能性が最も高いリージョンまたはアベイラビリティゾーンを自動的に選択できます。TeamCity がこれらのスコアを要求して利用できるようにするには、ec2:GetSpotPlacementScores IAM 権限を追加します。

    3.6. EC2 インスタンスのネットワーク設定を指定します。

    このオプションを使用すると、特定のインスタンスを TeamCity に追加できます。TeamCity が複数の同一インスタンスを起動できる AMI と比較して、このタイプは、TeamCity が起動および停止できる静的仮想マシンがあることを意味します。

    3.1. 希望するインスタンスタイプ(英語)を指定します。アクティブなインスタンスは 1 つだけなので、選択できるタイプは 1 つだけです。

    3.2. SSH を使用して (英語)EC2 インスタンスに接続する必要がある場合は、キーペアを選択してください。

    Amazon スポットフリート(英語)を使用すると、指定された条件に基づいて、通常のインスタンス (オンデマンド) とスポット(英語)インスタンスの組み合わせを予約できます。サンプルリクエストについては、次の AWS ドキュメント記事を参照してください: スポット Fleet の構成例(英語)

    3.1. AWS マネジメントコンソール(英語)で、インスタンス数 | スポットリクエスト | スポットインスタンスのリクエストに移動します。

    3.2. 必要な AMI、最小計算単位、アベイラビリティーゾーン、その他のリクエストの詳細を指定します。

    3.3. JSON 構成をクリックして、スポットフリート構成パラメーターを含む JSON ファイルをダウンロードします。 SpotFleetRequestConfigData (英語) クラスのフィールドのみがサポートされていることに注意してください。

    Spot fleet config generation button in Amazon

    3.4. 生成された JSON 構成ファイルを TeamCity のスポット Fleet リクエストフィールドに貼り付けます。

    TeamCity は、イメージを実行するために、スポットフリート構成で指定された割り当て戦略に一致するスポットインスタンスを起動します。

  4. イメージの優先順位フィールドに -10000 から 10000 の範囲の整数を入力します (デフォルトの優先順位は 0)。TeamCity は、新しいクラウドエージェントを起動する必要がある場合、最も高い優先度の値を持つイメージを選択します。

    TeamCity は、優先度の値を使用して、既存のすべてのプロファイルからイメージを範囲指定します。例: 新しくキューに入れられたビルドは、プロファイル A および B から生成されたクラウドエージェント上で実行できます。プロファイル A には、優先順位 20, 40,, 60 を持つ 3 つのイメージがあります。プロファイル B には 10, 30,, 50 優先イメージが含まれています。TeamCity は次の順序で新しいエージェントを起動します。

    • プロファイル A、イメージ優先度 60。

    • プロファイル B、イメージ優先度 50。

    • プロファイル A、イメージ優先度 40 など。

    優先度の低いイメージは、利用可能な優先度の高いイメージがアクティブなエージェントの制限に達した場合にのみ使用されます。

  5. このイメージから開始して、アクティブなクラウドエージェントの最大数を設定します。プロファイルに追加されたすべてのイメージから起動されるエージェントの総数は、このプロファイルの設定ページで設定された制限を超えることができないことに注意してください。

  6. 新しく作成したインスタンスが属するエージェントプールを指定します。

  7. 保存をクリックしてイメージ設定ページを終了します。

イメージを構成した後、TeamCity はこのイメージに対して 1 つのテストエージェントを作成し、起動してサーバーに接続できるかどうかをテストします。エージェントが接続されて認証されると、TeamCity はそのパラメーターを保存して、互換性のあるエージェントにビルドを正しく割り当てます。

イメージのスポットインスタンスを使用する設定がチェックされていて、現時点でテストインスタンスを起動できない場合 (たとえば、利用可能な容量がない場合、入札価格が低すぎる場合)、TeamCity はスポットインスタンスの起動を 1 分に 1 回繰り返し試行します。このエージェント上で実行できるキューに入れられたビルドが存在する限り。

クラウドエージェントの管理

ビルドがキューに入れられると、TeamCity は最初に通常の (非クラウド) エージェントでキューに入れられたビルドを実行しようとします。現在利用可能なものがない場合、TeamCity は互換性のあるクラウドイメージを見つけて、(同時実行インスタンスの制限にまだ達していない場合) 新しいインスタンスを開始します。

エージェントタブからクラウドエージェントを手動で開始および停止できます。アクティブなクラウドエージェントの数がプロファイルまたはイメージ設定で指定された制限に達すると、開始ボタンが無効になることに注意してください。

Start and stop cloud agents

インスタンスの実行ブロックには、この特定のイメージから開始されたすべてのエージェントが表示されます。

  • 正常に起動したが、まだ TeamCity サーバーに接続していないインスタンスには、名前として AWS インスタンス ID (「i-xxxxxxxxxxxx」) が付けられます。

  • 接続され承認されたインスタンスには、親イメージ名と AWS インスタンス ID (「Ubuntu-22.04-Large-i-xxxxxxxxxxxx」) が結合された名前が付けられます。

  • 接続されているエージェントが古いビルドツールを報告すると、アップグレードのために自動的に切断されます。必要なソフトウェアがすべて更新されると、エージェントはサーバーに再接続します。TeamCity は、古いエージェントイメージに対応する警告を表示します。

    Outdated agent image

ターミナルを開くボタンを使用して、アクティブなエージェントインスタンスへの対話型ターミナルを開くことができます。ターミナルを使用すると、クラウドエージェントマシンをデバッグおよび保守できます。

EC2 固有のエージェントパラメーター

AWS ホストエージェントは、これらのマシンに関する EC2 固有の情報を格納するいくつかのシステムプロパティを報告し、必要なエージェントを識別できるようにします。これらのパラメーターの大部分は、標準の AWS イメージメタデータ(英語)の値を返します。

system.ec2.ami-id

エージェントマシンが Amazon マシンイメージから起動された場合、このプロパティは対応する AMI ID を返します。

例: ami-08b0a7588100450ff

system.ec2.ami-launch-index

インスタンスが起動された順序(英語)を示します。

サンプル: 0

system.ec2.ami-manifest-path

Amazon S3 の AMI マニフェストファイルへのパス。インスタンスを起動するために Amazon EBS ベースの AMI を使用した場合、返される結果は不明です。

サンプル: (unknown)

system.ec2.instance-id

このインスタンスの ID。

サンプル: i-07a39ee4b882caa3e

system.ec2.instance-life-cycle

このインスタンスの購入オプション。

サンプル: spot

system.ec2.instance-type

インスタンスタイプ(英語)

サンプル: t2.2xlarge

system.ec2.local-hostname

エージェントインスタンスのプライベートホスト名(英語)

サンプル: ip-10-128-93-39.eu-west-1.compute.internal

system.ec2.local-ipv4

インスタンスのプライベート IPv4 アドレス。

サンプル: 10.128.93.39

proposed-agent-name

パブリックエージェント名。通常は cloudProfileName-instanceID 形式です。

サンプル: Win-Server-2022-xLarge-i-07a39ee4b882caa3e

system.ec2.public-hostname

インスタンスのパブリック DNS (IPv4)。

サンプル: ec2-54-154-113-80.eu-west-1.compute.amazonaws.com

public-ipv4

パブリック IPv4 アドレス。インスタンスに Elastic IP アドレスが関連付けられている場合、返される値は Elastic IP アドレスです。

サンプル: 54.154.113.80

system.ec2.reservation-id

予約の ID。

サンプル: r-0461cf168b52cd309

DSL 構成

次の Kotlin スニペットは、ローカルに保存された認証情報を使用し、異なる設定を持つ 3 つのイメージを含むクラウドプロファイルのサンプル DSL 構成を示しています。

import jetbrains.buildServer.configs.kotlin.* import jetbrains.buildServer.configs.kotlin.amazonEC2CloudImage import jetbrains.buildServer.configs.kotlin.amazonEC2CloudProfile // ... version = "%product-version%" project { vcsRoot(MyRoot) buildType(Build) features { // Image 1: On-Demand Instances for a Specific AMI amazonEC2CloudImage { id = "PROJECT_EXT_14" profileId = "amazon-4" name = "Ubuntu-22.04-Large(AMI)" vpcSubnetId = "mySubnet123" iamProfile = "john-doe-ec2-role" keyPairName = "john-doe-u2204-key" instanceType = "t2.large" securityGroups = listOf("security-group-1") instanceTags = mapOf( "LaunchedBy" to "TeamCity" ) maxInstancesCount = 4 source = Source("ami-1234567890") } // Image 2: Spot Instances for an AMI Located by Tags amazonEC2CloudImage { id = "PROJECT_EXT_20" profileId = "amazon-4" name = "Ubuntu-22.04-Medium-Spot(Tags)" vpcSubnetId = "mySubnet123" instanceType = "t3a.medium,t3a.small" securityGroups = listOf("security-group-1,security-group-2") useSpotInstances = true spotInstanceBidPrice = 1.0 instanceTags = mapOf( "LaunchedBy" to "TeamCity" ) maxInstancesCount = 4 source = Source("tags") param("source-tags", "OS=Ubuntu, OSVersion=22.04") } // Image 3: A Single EC2 Instance amazonEC2CloudImage { id = "PROJECT_EXT_22" profileId = "amazon-4" agentPoolId = "-2" name = "Windows-Server2022(Instance)" vpcSubnetId = "mySubnet123" keyPairName = "john-doe-w2022s-keys" instanceType = "m2.xlarge" securityGroups = listOf("security-group-1") source = Source("i-1234567890") } // Parent Profile for All Images amazonEC2CloudProfile { id = "amazon-4" name = "AWS EC2 Profile" description = "A sample Amazon EC2 profile with AMI and Instance images" serverURL = "https://MyTeamCityBuildFarm.dev.gg" terminateIdleMinutes = 30 region = AmazonEC2CloudProfile.Regions.EU_WEST_DUBLIN maxInstancesCount = 20 authType = instanceIAMRole() param("terminate-after-build", "false") param("terminateTimeOut_checkbox", "true") } } } object Build : BuildType({ name = "Build" allowExternalStatus = true vcs { root(MyRoot) } steps { // Build Steps } triggers { vcs {} } features { // Build Features } }) object MyRoot : GitVcsRoot({ name = "https://github.com/...#refs/heads/main" url = "https://github.com/..." branch = "refs/heads/main" branchSpec = "refs/heads/*" authMethod = password { userName = "JohnDoe" password = "..." } param("oauthProviderId", "PROJECT_EXT_8") })

追加のセットアップ

必要な IAM アクセス許可

TeamCity では、Amazon EC2 リソースに対して次の権限が必要です。

  • ec2:Describe*

  • ec2:StartInstances

  • ec2:StopInstances

  • ec2:TerminateInstances

  • ec2:RebootInstances

  • ec2:RunInstances

  • ec2:ModifyInstanceAttribute

  • ec2:*Tags

スポットインスタンスを使用するには、上記の権限に加えて次の権限を付与します。

  • ec2:RequestSpotInstances

  • ec2:CancelSpotInstanceRequests

  • ec2:GetSpotPlacementScores (オプション。TeamCity がスポット配置スコア(英語)に基づいて AWS リージョンまたはアベイラビリティーゾーンを選択できるようにします)。

スポットフリートを使用するには、次の追加の権限が必要です。

  • ec2:RequestSpotFleet

  • ec2:DescribeSpotFleetRequests

  • ec2:CancelSpotFleetRequests

  • iam:CreateServiceLinkedRole (「提供された認証情報には、EC2 スポット Fleet のサービスにリンクされたロールを作成する権限がありません」エラーが発生した場合、サービスロールが作成されたらこの権限を安全に取り消すことができます。)

想定された IAM ロール (AMI および起動テンプレートから複製されたインスタンスに適用) でインスタンスを起動するには、次の追加の権限が必要です。

  • iam:ListInstanceProfiles

  • iam:PassRole

暗号化された EBS ボリューム(英語)を使用するには、次の追加のアクセス許可が必要です。

  • kms:CreateGrant

  • kms:Decrypt

  • kms:DescribeKey

  • kms:GenerateDataKeyWithoutPlainText

  • kms:ReEncrypt*

以下のスニペットは、特定の IP アドレスから TeamCity によって開始されるすべての EC2 オペレーションを許可するカスタム IAM ポリシー定義を示しています。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Action": [ "ec2:Describe*", "ec2:StartInstances", "ec2:StopInstances", "ec2:TerminateInstances", "ec2:RebootInstances", "ec2:RunInstances", "ec2:ModifyInstanceAttribute", "ec2:*Tags", "ec2:RequestSpotInstances", "ec2:CancelSpotInstanceRequests", "ec2:GetSpotPlacementScores", "ec2:RequestSpotFleet", "ec2:DescribeSpotFleetRequests", "ec2:CancelSpotFleetRequests" ], "Effect": "Allow", "Condition": { "IpAddress": { "aws:SourceIp": "<TeamCity server IP address>" } }, "Resource": "*" }, { "Sid": "2", "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKeyWithoutPlainText", "kms:ReEncrypt*" ], "Effect": "Allow", "Condition": { "IpAddress": { "aws:SourceIp": "<TeamCity server IP address>" } }, "Resource": "*" }, { "Sid": "3", "Action": [ "iam:CreateServiceLinkedRole", "iam:ListInstanceProfiles", "iam:PassRole" ], "Effect": "Allow", "Condition": { "IpAddress": { "aws:SourceIp": "<TeamCity server IP address>" } }, "Resource": "*" } ] }

ポリシーの例 (Linux)(英語)ポリシーの例 (Windows)(英語) も参照してください。

Windows エージェントの追加構成

Windows で TeamCity エージェントと EC2 API(追加ドライブへのアクセスを含む)との適切な通信を確保するには、TeamCity ビルドエージェントサービスから AmazonSSMAgent(英語) または EC2Launch/EC2Config(英語) サービス (AWS インフラストラクチャの使用に関してマシンが完全に初期化されていることを保証するサービス) への依存関係を追加します。これは、たとえば、レジストリ(英語)経由または sc config(英語) (たとえば、sc config TCBuildAgent depend=EC2Config) を使用して実行できます。
あるいは、「自動(遅延開始)」サービス開始モードを使用することもできます。

Amazon EBS 最適化インスタンス

TeamCity における EBS 最適化(英語)の動作は、EC2 コンソールで提供される動作と似ています。Amazon クラウドプロファイルのイメージを構成するときに、インスタンスタイプの対応するボックスを使用して最適化を設定できます。次の点に注意してください。

  • EBS 最適化は、c4.*d2.*m4.* ではデフォルトでオンになります (構成不可)。

  • EBS 最適化は、他のインスタンスタイプではデフォルトでオフになっていますが、それをサポートするインスタンス ( c3.xlarge など) ではオンにすることができます。

タグ付け

TeamCity によって起動されたインスタンスのタグ付け

TeamCity によって起動されたインスタンスにタグを付けるには、次の要件を満たす必要があります。

タグ付け権限がなくても、TeamCity はタグが適用されていない Amazon AMI および EBS イメージを起動できますが、Amazon EC2 スポットインスタンスを起動できません

TeamCity を使用すると、作成されたインスタンスを <server UUID>:-<cloud profile ID>:-<image reference> を含む teamcity:TeamcityData タグでマークすることにより、インスタンスの起動情報を取得できます。このタグは EC2 との TeamCity 統合に必要であり、削除しないでください

カスタムタグは EC2 クラウドエージェントインスタンスに適用できます。クラウドプロファイル設定を構成する場合、イメージの追加 / イメージの編集ダイアログでインスタンスタグ : フィールドを使用して、<key1>=<value1>,<key2>=<value2> の形式でタグを指定します。Amazon タグの制限(英語)を考慮する必要があります。

タグ値に等号(=)を使用する場合、エスケープする必要はありません。たとえば、文字列 extraParam=name=John<key=extraParam> と値 <name=John>. に解析されます

インスタンス依存リソースのタグ付け

Amazon EC2 インスタンスを起動すると、TeamCity は作成されたインスタンスに関連付けられたすべてのリソース(ボリュームやネットワークアダプターなど)にタグを付けます。これは、インスタンスの全体的なコストを評価する際に重要です(ストレージドライブのタイプとサイズ、I/O 操作(標準ドライブの場合)、ネットワーク(転送)など。

複数の TeamCity サーバー間での EBS インスタンスの共有

前述のように、TeamCity は起動するすべてのインスタンスに、サーバー、クラウドプロファイル、ソース (AMI または EBS インスタンス) に関する情報を格納する teamcity:TeamcityData タグを付けます。そのため、複数の TeamCity サーバーが同じ EBS インスタンスを使用しようとすると、2 番目のサーバーに「インスタンスは別の TeamCity サーバーによって使用されています。起動 / 停止できません」というメッセージが表示されます。このインスタンスで動作している他の TeamCity サーバーがないことが確実な場合は、teamcity:TeamcityData タグを削除すると、インスタンスはすべての TeamCity サーバーで再び使用できるようになります。

プロキシ設定

TeamCity サーバーがプロキシを使用して AWS API エンドポイントに接続する必要がある場合は、次のサーバー内部プロパティを設定して Amazon AWS アドレスに接続します。

  • teamcity.http.proxy.host.ec2 — プロキシサーバーのホスト名

  • teamcity.http.proxy.port.ec2 — プロキシサーバーポート

プロキシサーバー認証の場合:

  • teamcity.http.proxy.user.ec2 — プロキシアクセスユーザー名

  • teamcity.http.proxy.password.ec2 — プロキシアクセスユーザーパスワード

NTLM 認証の場合:

  • teamcity.http.proxy.domain.ec2 — NTLM 認証用のプロキシユーザードメイン

  • teamcity.http.proxy.workstation.ec2 — NTLM 認証用のプロキシアクセスワークステーション

EC2 コストの見積もり

標準の Amazon EC2 料金が適用されます。Amazon の料金は、TeamCity をデプロイするために実装された特定の構成によって異なります。予期せぬ出費をできるだけ早く発見して防ぐために、構成と Amazon アカウントデータを定期的に確認することをお勧めします。

トラフィック量と必要なサーバーおよびエージェントマシンの特性は、TeamCity のセットアップと実行されるビルドの性質に大きく依存することに注意してください。TeamCity のハードウェア要件の推定も参照してください。

トラフィックの見積もり

TeamCity 関連のトラフィックを推定するのに役立ついくつかのポイントがあります。

  • TeamCity サーバーが、エージェントの TeamCity EC2 設定で構成された同じ EC2 リージョンまたはアベイラビリティーゾーン内にない場合、サーバーとエージェント間のトラフィックは、通常の Amazon EC2 外部トラフィック料金の対象となります。

  • トラフィックを推定する場合、TeamCity に関連するトラフィックには多くのタイプがあることに留意してください(以下の完全でないリストを参照してください)。

サーバーによって開始された外部接続 :

  • VCS サーバー

  • E メールサーバー

  • Maven リポジトリ

サーバーによって開始された内部接続 :

  • TeamCity エージェント (ステータスの確認、コマンドの送信、スレッドダンプなどの情報の取得など)

エージェントによって開始された外部接続 :

  • VCS サーバー (エージェント側のチェックアウトの場合)

  • Maven リポジトリ

  • ビルドプロセス自体から実行される接続

エージェントによって開始された内部接続 :

  • TeamCity サーバー (サーバー側のチェックアウトまたは個人用ビルドの場合はビルドソースを取得する、アーティファクトをダウンロードするなど)

サーバーによって提供される通常の接続 :

  • ウェブブラウザー

  • IDE プラグイン

稼働時間コスト

一部の構成では Amazon がマシンの稼働時間を 1 時間に丸めるため(Amazon EC2 インスタンス時間はどのように請求されますか? (英語) でさらに)、通常のビルドの長さに応じて、TeamCity クラウド統合設定の EC2 イメージ設定のタイムアウト設定を調整します。

また、すべてのビルドの実行タイムアウトを設定して、ビルドがハングしてもペイロードなしで長時間インスタンスが実行されないようにすることを強くお勧めします。

2025 年 11 月 06 日

関連ページ:

TeamCity エージェントをインストールする

TeamCity ビルドエージェントをインストールする前に、必ずシステム要件を参照してください。便利なインストールオプションを選択してください。Windows では、エージェントの手動起動を使用する代わりに、ビルドエージェントの Windows サービスをインストールすることをお勧めします。エージェントプッシュ経由でインストール:TeamCity は、ビルドエージェントをリモートホストにインストールできるようにするエージェントプッシュ機能を提供します。サーバーホストプラットフォームとビルドエー...

エージェントのインストールを構成する

ビルドエージェントは、ファイルで調整することで構成できます。一般的なエージェント設定:この Java プロパティ構成ファイルには、エージェントプロパティとしてサーバーに公開され、エージェント要件式に参加できるプロパティを保存できます。ファイルで定義されているすべてのシステムプロパティと環境プロパティは、エージェントで実行されるすべてのビルドに渡されます。構文リファレンス: 構文を使用します。コメントには、行の最初の位置にを使用します。パス区切り文字として、の代わりにを使用します。を含める必要がある...

プロジェクト管理者ガイド

このセクションでは、プロジェクト管理に焦点を当てます。TeamCity プロジェクトとビルド構成の作成、ビルドステップの設定、依存関係チェーンの構成などについて説明します。基本的な TeamCity ワークフロー:次のダイアグラムは、基本的な TeamCity ワークフローを示しています。TeamCity サーバーはリポジトリの変更を検出しました。サーバーはこの変更をデータベースに書き込みます。ビルド構成に添付されたトリガーは、データベース内の関連する変更を検出し、ビルドを開始します。トリガー...

接続を構成

TeamCity 接続は、外部サービスへのアクセスに必要な資格情報を保存します。このサードパーティサービスの種類に基づいて、2 つの主要な接続カテゴリがあります。VCS 接続これらの接続は、GitHub、GitLab、Bitbucket クラウドなどの VCS プロバイダーへのアクセスに必要な情報を保存します。これらの接続は、プロジェクト、ビルド構成、パイプラインを最も速く作成する方法を提供します。認証は自動的に処理されるため、リポジトリを選択するだけでビルドステップの設定を開始できます。接続が...

TeamCity エージェントをインストールして開始する

TeamCity ビルドエージェントは、TeamCity サーバーからのコマンドをリッスンし、実際のビルドプロセスを開始するソフトウェアです。実稼働の TeamCity セットアップでは、専用のマシンに追加のビルドエージェントをインストールする必要があります。その前に、エージェントとサーバー間の通信、システム要件、競合するソフトウェア、およびセキュリティに関する注意事項を必ず参照してください。Tomcat サーブレットコンテナーにバンドルされた TeamCity をインストールするか、Window...

エージェントプールの構成

ビルドエージェントの共通セットを 1 つ持つ代わりに、エージェントプールと呼ばれる個別のグループに分割できます。プールは、プロジェクトを割り当てることができるエージェントの名前付きセットです。エージェントは 1 つのプールにのみ所属できます。プロジェクトではビルドに複数のプールを使用できます。TeamCity サーバーによって承認されるエージェントの数は、エージェントライセンスの数によって制限されます。デフォルトでは、新しく承認されたすべてのエージェントがデフォルトプールに含まれます。エージェント...