コンテナーラッパー
コンテナーラッパー拡張機能を使用すると、指定された Docker/Podman イメージ内でビルドステップを実行できます。ビルドを実行するエージェントにインストールされているコンテナーマネージャーに応じて、イメージは docker pull または podman pull コマンドによってプルされます。
TeamCity は、コンテナーを匿名でプルできます (イメージが公開されている場合)。または、レジストリにログインした後でプルできます (プライベートレジストリの場合、または匿名ダウンロードに対する DockerHub のペナルティを回避する場合)。イメージをプルする前に TeamCity がレジストリに承認される必要がある場合は、次のように Docker レジストリ接続ビルド機能を構成します。
プロジェクト設定で、サイドバーから接続を選択し、Docker への接続を設定するの指示に従って、新しい Docker または Podman 接続をプロジェクトに追加します。
ビルド構成設定で、前の手順で作成した接続を使用して Docker レジストリ接続ビルド機能を構成します。
拡張機能は次のビルドステップで使用できます。
コンテナー設定
ビルドステップ設定のコンテナー設定セクションでは、ビルドステップの実行に使用するイメージを指定できます。イメージ名以外のすべてのオプションは最初は非表示になっており、この名前を指定した後にのみ表示されます。
- コンテナー内でステップを実行する
DockerHub(英語) またはその他のレジストリに記載されているイメージ名。TeamCity は指定されたイメージからコンテナーを起動し、このコンテナー内で必要なビルドステップを実行しようとします。例: ` ruby:2.4` は、Ruby コンテナーバージョン 2.4 内でビルドステップを実行します。
ビルドを実行するエージェントに Docker の代わりに Podman がインストールされている場合は、完全なイメージ名 (たとえば、
alpine:latestの代わりにdocker.io/library/alpine:latest) を使用するか、ビルドエージェントマシン上の registries.conf ファイルでレジストリドメインが指定されていることを確認します。Linux コンテナーレジストリを管理する方法(英語)も参照してください。- イメージプラットフォーム
<Any> (デフォルト)、Linux、Windows を選択します。Windows イメージは Podman ではサポートされていないことに注意してください。
- 各実行時に強制的にプルする
有効にすると、
docker/podman runコマンドが送信される前に、docker/podman pull <imageName>経由でリポジトリからイメージがプルされます。- 追加の実行引数
docker/podman runコマンドに追加のオプションを指定できます。デフォルトの引数は--rmですが、さらにオプションを指定できます。例: カスタムボリュームマッピングを追加します。
Container Wrapper の仕組み
TeamCity は、コンテナー内でビルドステップを起動するために次の操作を実行します。
ビルドステップの内容をシェルスクリプトでラップします
docker/podman run経由でコンテナーを起動するdocker/podman exec経由でこのコンテナー内のシェルスクリプトを実行します
開始されたプロセスの詳細、スクリプトのテキストなどを表示するには、詳細モードのビルドログを確認します。
コンテナーラッパーは、ビルドチェックアウトディレクトリと buildAgent/work などの他のエージェントディレクトリへのパスをマップし、これらすべてのディレクトリがビルドエージェント上とラッパー内で同じ場所になるようにします。
プロセス環境に前の Docker Compose ビルドステップで設定された TEAMCITY_DOCKER_NETWORK 環境変数が含まれている場合、このネットワークは --network スイッチを指定して開始済みの docker run コマンドに渡されます。
Linux でのファイル所有権の復元
Docker を使用するビルドエージェントは、コンテナー内で実行される各ステップの最後に chown コマンドを実行して、チェックアウトディレクトリにアクセスするための buildAgent ユーザーの権限を復元します。このアクションにより、root 所有権で作成された不要になったコンテナーファイルをビルドエージェントが削除できないことに関連する潜在的な問題が防止されます。Podman を使用するエージェントはこの手順を実行しません。
デフォルトでは、TeamCity エージェントは Docker Hub の busybox イメージを使用して chown コマンドを実行します。 buildAgent.properties ファイルまたはビルド構成パラメーターのいずれかで、teamcity.internal.docker.busybox パラメーターを使用して代替イメージ名を指定できます。
環境変数の取り扱い
TeamCity はビルド構成からの環境変数を Docker または Podman プロセスに渡しますが、ビルドエージェントからの環境変数はコンテナー環境に関連しない可能性があるため渡しません。渡された環境変数のリストは、ビルドログの詳細モードで確認できます。
イメージエントリポイントの設定
Docker イメージが ENTRYPOINT (英語) を定義していない場合でも、コマンドラインから ENTRYPOINT を使用してコンテナーを実行できます。
コマンドラインビルドステップを追加します。
実行モードをパラメーター付き実行可能に設定します。
コマンド実行可能フィールドに、ターゲットコンテナー内の
ENTRYPOINTへのフルパスを指定します。Docker の設定では、コンテナーの名前を指定します。
TeamCity は、指定された ENTRYPOINT を使用して指定された Docker イメージを開始します。
コンテナーユーザーの設定
ステップでローカルストレージ上のファイルまたはフォルダーを作成またはアクセスする場合は、十分な権限を持つ正しいユーザーでこれらのアクションが実行されていることを確認してください。これを行うには、ランナーの追加の実行引数に --user=<value> を追加します。
ホスト UID は、env.UID パラメーター (--user=%env.UID%) を介して取得できます。
関連ページ:
Docker への接続を設定する
事前構成された Docker 接続により、次のことが可能になります。ビルドを実行する前に認証された Docker または Podman レジストリにサインインし、ビルド後にサインアウトします。ビルド後に公開されたイメージをクリーンアップします (現在、Podman では使用できません)。プロジェクト設定 | 接続ページで、Docker レジストリ接続を構成できます。TeamCity は、docker.io(デフォルト) またはプライベート Docker レジストリへの接続をサポートします。プロジェ...
Docker レジストリ接続
Docker レジストリ接続ビルド機能により、TeamCity はビルドの開始前に DockerHub またはその他のコンテナーレジストリに自動的にサインインできます。この機能を次の場所に追加します。TeamCity による Docker/Podman 操作 (たとえば、および) の監視と検出を許可します。ビルド前に認証されたレジストリに自動的にログインし、ビルド後にログアウトします。ローカル (Docker と Podman の両方) イメージをクリーンアップし、レジストリにプッシュ (Doc...
ビルドステップの設定
ビルドステップは、CI/CD ワークフローの最小単位です。ビルドステップは、全体として実行される一連のアクションを定義します。ビルドステップは、ビルド構成とパイプラインジョブに属します。構成とパイプラインのビルドステップ:TeamCity は、.NET、Maven、NAnt、Xcode などの特定のビルドツール用に設計された幅広いビルドステップを提供します。現在、ビルド構成ではすべてのステップが利用可能です。バージョン 2025.07 で導入された
コマンドライン (スクリプト)
コマンドライン(ビルド構成内)またはスクリプト(パイプライン内)は、TeamCity の中で最も柔軟なビルドステップです。エージェントマシン上で直接コマンドを実行するため、インストールされている任意のツール(cURL、Homebrew、Python、Unreal Engine など)との連携が可能になります。ツール固有の TeamCity ステップの代替として使用することもできます。たとえば、ゴールで Maven ステップを使用する代わりに、スクリプトを実行します。ステップ設定:スクリプトステップ...
.NET
TeamCity.NET ビルドステップを使用すると、.NET (Core) および .NET フレームワークを対象とするアプリケーションをビルド、テスト、デプロイできるほか、NuGet パッケージをダウンロードしてプッシュすることもできます。.NET ステップイン構成とパイプライン:クラシックビルド構成では、.NET は、選択したコマンドに応じて設定が変化する単一のビルドステップです。パイプラインでは、これらの各コマンドは個別のビルドステップとして使用できます。エージェント要件:.NET ス...
ビルドパラメーターの設定
パラメーターは、TeamCity 全体で参照できるペアです。TeamCity には、次の 3 つの主要なパラメーター型があります。構成パラメーター — ビルド構成内で設定を共有することを主な目的とするパラメーター。これらのパラメーターを使用して、テンプレートから作成された構成やレシピを使用する構成をカスタマイズすることもできます。TeamCity は、この型のパラメーターをビルドプロセスに渡しません (つまり、これらのパラメーターはビルドスクリプトエンジンからアクセスできません)。環境変数 — 接頭辞...