Docker レジストリ接続
Docker レジストリ接続 ビルド機能により、TeamCity はビルドの開始前に DockerHub またはその他のコンテナーレジストリに自動的にサインインできます。
この機能を次の場所に追加します。
TeamCity による Docker/Podman 操作 (たとえば、
docker pullおよびpodman run) の監視と検出を許可します。ビルド前に認証されたレジストリに自動的にログインし、ビルド後にログアウトします。
ローカル (Docker と Podman の両方) イメージをクリーンアップし、レジストリにプッシュ (Docker のみ) イメージをクリーンアップします。
ビルド結果ページにコンテナー情報タブを追加します。このタブには、使用されているコンテナーマネージャーに関連する操作に関する情報が表示されます。

リポジトリへのログインとログアウト、およびイメージのクリーンアップには、Docker レジストリへの接続が設定されている必要があります。

Docker イメージのクリーンアップ
プッシュされたイメージのクリーンアップ
イメージを公開するビルド構成がある場合は、ある時点でイメージを削除する必要があります。対応するオプションを選択し、ビルド自体がクリーンアップされるときに、特定のビルドによって公開されたイメージを削除するように TeamCity に指示できます。
これは次のように動作します。イメージが公開されると、TeamCity はビルドによって公開されたイメージのレジストリに関する情報を保存します。サーバーのクリーンアップが実行されてビルドが削除されると、構成されているすべての接続でこのレジストリのアドレスが検索され、ビルドによって公開されたイメージが、見つかった接続で指定された資格情報を使用してクリーンアップされます。
Podman 経由でプッシュされたイメージのクリーンアップは、現在、イメージが Linux エージェントからプッシュされ、--digestfile=<fileName> オプションが設定されている場合にのみ有効になります。fileName はチェックアウトディレクトリからの相対パスであり、最終的なダイジェストファイルの場所を指す必要があることに注意してください (このパスは、それ以降のナビゲーションコマンドによって変更しないでください)。
ビルドエージェントのイメージのクリーンアップ
空きディスク容量ビルド機能の一部として、Docker レジストリ接続は、このビルドエージェント上の TeamCity ビルドによって作成されたイメージをクリーンアップします。ビルド機能は、docker images が以下に格納されていることを前提としています。
Linux 上の
/var/lib/dockerWindows 上の
%ProgramData%ディレクトリ他のシステムの
$HOMEディレクトリ
空きディスク容量機能はビルドのためにどのディスクボリュームをクリーンアップする必要があるかを分析するため、場所は重要です。docker daemon がイメージ / コンテナーに非標準の場所を使用する場合、場所は teamcity.docker.data.path 構成パラメーターを使用して指定できます ( buildAgent.properties ファイル内が望ましい)。
Docker レジストリの自動ログイン / ログアウト
レジストリ接続を追加ボタンを使用すると、ビルドの開始時に対応するレジストリで自動的に認証するために使用されるレジストリ接続を選択できます。ビルドが終了すると、TeamCity はそれらのレジストリからログアウトします。
Amazon ECR
Amazon Elastic Container Registry (ECR) への接続により、Docker/Podman イメージをプライベート AWS レジストリに保存できます。このためには、ビルド構成に Docker レジストリ接続機能を追加するときに、このような接続を選択する必要があります。
接続設定:
設定 | 説明 |
|---|---|
AWS リージョン | ターゲットリソースが配置されている AWS リージョンを選択します。 |
クレデンシャルタイプ |
|
IAM のロール ARN ( 一時的な認証情報のみ ) | 一時的な資格情報の生成に使用するロールを指定します。AWS コンソールで事前(英語)にこのロールを作成し、必要なすべてのアクセス許可に割り当てる必要があります。 |
外部 ID ( 一時的な認証情報のみ ) | 外部 ID(英語) を指定します。一時的なクレデンシャルを使用する場合は、常に定義することを強くお勧めします。これにより、TeamCity のみが指定された IAM ロールを使用できるようになります。 |
デフォルトの資格情報プロバイダーチェーン | このオプションを有効にすると、デフォルトのチェーン(英語)に従ってアクセスキーが自動的に検索されます。 |
アクセスキー ID | アクセスキー ID を指定します。 こちら(英語)で入手方法を参照してください。 |
秘密アクセスキー | シークレットアクセスキーを指定します。 こちら(英語)で入手方法を参照してください。 |
レジストリ ID | レジストリまたは AWS アカウントの ID を入力します。 |
Kotlin DSL
次の Kotlin DSL スニペットは、ビルド構成に Docker レジストリ接続ビルド機能を追加する方法を示しています。
関連ページ:
ビルド機能を追加する
ビルド機能は、追加の機能を有効にするために任意のビルド構成に追加できる機能です。例: ステータス発行者のコミットビルド機能は、コードファイルを保存する VCS に TeamCity ビルド結果を公開し、調査自動割り当ては最新の変更によってビルドが壊れたユーザーを識別し、これらの問題を解決するタスクを自動的に割り当てます。構成されたビルド機能は、削除することなくいつでも一時的に無効にできます。TeamCity ビルドの特徴:TeamCity には、構成に追加できる次のビルド機能が付属しています。A...
ビルド結果を扱う
TeamCity には、ホームと設定という 2 つのメインモードがあります。ホームモードでは、プロジェクトレベルとビルド構成レベルでビルド結果が蓄積されます。新しい TeamCity UI を使用している場合は、プロジェクトサイドバーを介してこの階層間を移動できます。各モードには、独自の詳細レベルがあります。プロジェクト全体のビルド統計を確認するには、プロジェクトホームにアクセスしてください。単一のビルド構成の詳細を参照するには、その名前をクリックしてビルド構成ホームを開きます。ホームページで特...
Docker への接続を設定する
事前構成された Docker 接続により、次のことが可能になります。ビルドを実行する前に認証された Docker または Podman レジストリにサインインし、ビルド後にサインアウトします。ビルド後に公開されたイメージをクリーンアップします (現在、Podman では使用できません)。プロジェクト設定 | 接続ページで、Docker レジストリ接続を構成できます。TeamCity は、docker.io(デフォルト) またはプライベート Docker レジストリへの接続をサポートします。プロジェ...
TeamCity とコンテナーマネージャーの統合
TeamCity は、コンテナーマネージャー (Docker、Podman) と複数のレベルで統合されます。Docker ビルドランナーはビルド中に Docker コマンドを起動し、Docker イメージを作成します。Docker Compose ビルドランナーは、ビルド中に Docker Compose ツールを使用してサービスを開始します。コンテナーラッパー拡張機能は、コンテナー内でビルドステップを実行します。Docker と Podman をサポートします。複数のランナーで使用できます。Dock...
TeamCity データのクリーンアップ
TeamCity のクリーンアップ機能により、古いビルドデータや不要なビルドデータを自動的に削除できます。サーバーのクリーンアップ構成は管理 | サーバー管理 | クリーンアップ設定で使用可能です。クリーンアップスケジュールの設定が可能で、一般的なクリーンアップ情報が表示されます。特定のプロジェクトに関連するクリーンアップルールはプロジェクト設定で設定されます | クリーンアップルール。これらのルールは、どのデータをクリーンアップし、どのデータを保持するかを定義します。これらは、プロジェクトまた...
Kotlin DSL
TeamCity では、バージョン管理で設定を XML 形式で保存するだけでなく、DSL (Kotlin 言語に基づく) で設定を保存することもできます。バージョン管理に保存された DSL を使用すると、プログラムで設定を定義できます。Kotlin は静的に型指定されるため、IDE で自動補完機能を自動的に受け取ります。これにより、利用可能な API オプションの発見がはるかに簡単になります。TeamCity での Kotlin DSL の使用に関するブログ投稿シリーズと推奨リファクタリングの記...