TeamCity 2020.2 ヘルプ

TeamCity と Docker の統合

TeamCity と Docker の統合には次のものが含まれます。

  • Docker ビルドランナー。ビルド中に Docker コマンドを起動し、Docker イメージを作成します。

  • ビルド中に Docker Compose ツール(英語)の助けを借りてサービスを開始する Docker Compose ビルドランナー。

  • Docker コンテナー内でビルドステップを実行するための Docker ラッパー 拡張。複数のランナーが利用できます。

  • ビルドを開始する前に Docker レジストリに自動的にサインインする Docker サポートビルド機能。この機能は、ビルド中に Docker レジストリに公開されたイメージに関する情報を含むビルド結果Docker 情報タブも追加します。

リストされているツールの詳細については、上記のリンク先にある専用のヘルプ記事を参照してください。次の記事には、これらのツールに共通する情報が含まれています。

要件

統合には、Docker(英語)ビルドエージェントにインストールする必要があります。Docker Compose ビルドランナーを使用するには、Docker Compose(英語) もインストールする必要があります。

バージョン 2019.2.1 以降、TeamCity は、アクティブなビルドエージェントで Docker が使用可能かどうかを定期的にチェックします。エージェントから受信した docker.server.version 変数と docker.version 変数に基づいて、TeamCity は、Docker エンジンがインストールされているエージェント間でのみ Docker を使用するビルドを配布します。
ビルド構成Docker ランナーまたは Docker ラッパー拡張を使用する場合、TeamCity はこの構成の docker.server.version エージェント互換性要件を自動的に追加します。

サポートされる環境

TeamCity Docker サポートは、Windows、Linux、macOS ビルドエージェントで実行できます。ビルドエージェントマシンで docker 実行可能ファイルを使用するため、ビルドエージェントユーザーが実行可能である必要があります。

エージェントによって報告されたパラメーター

ビルド中に、ビルドエージェントは次の Docker 関連パラメーターを報告できます。

パラメーター

説明

docker.version

Docker CLI(英語) バージョン。

dockerCompose.version

Docker Compose ビルドステップが使用されている場合は、Docker Compose ファイルのバージョン。

docker.server.version

Docker エンジン(英語)バージョン。

docker.server.osType

Docker エンジン OS プラットフォーム。サポートされている値: linux または windows

Docker ディスクスペースクリーナー

Docker ディスクスペースクリーナーは、空きディスク容量ビルド機能の拡張機能であり、ビルドに必要な量のディスクスペースを確保します。

TeamCity は、タグ付け / プルされた関連 Docker イメージを定期的にクリーンアップします。

そのようなビルドの場合

  • TeamCity エージェントは、ビルド中にタグ付けまたはプルされた Docker イメージを追跡します(イメージのリストは buildAgent/system/docker-used-images.dat ファイルに保存されます)。

  • クリーンアップ / ディスク領域の解放中に、TeamCity エージェントは、これらのイメージが 3 日以内(またはその後のディスク領域の解放の試行で 1 日または 0 日)に使用されなかった場合、これらのイメージを削除しようとします。

さらに、TeamCity は、docker system prune --volumes コマンドを使用してローカル Docker キャッシュをクリーンアップします。Docker v.17.06.1 以降で動作します。

プッシュされたイメージを報告するためのサービスメッセージ

何らかの理由で、TeamCity がイメージがプッシュされたことを判別できない場合、ユーザーは特別なサービスメッセージを送信して、この情報を TeamCity サーバーに報告できます。

##teamcity[dockerMessage type='dockerImage.push' value='<full_image_tag>,size:<size in bytes>,digest:<hash>']

例:

##teamcity[dockerMessage type='dockerImage.push' value='myRegistry/repo-test:17,size:2632,digest:sha256:8dc5a195c3dcdc7c288d16288ff3f9ab1d8a5a230e09afb9c8dc9215e861aa55']

Docker のダウンロードレート制限に準拠

2020 年 11 月 1 日以降、Docker Hub では、パブリックイメージプルのダウンロードレート制限(英語)が導入されています。

TeamCity ビルドで Docker ラッパーまたは Docker Compose を使用して Docker Hub からイメージをプルする場合は、これらのプルが次の制限を超えないようにしてください。

  • 匿名の Docker ユーザー: 6 時間あたり 100 プル

  • 無料プランの Docker ユーザー: 6 時間あたり 200 プル

Team または Pro Docker アカウントをお持ちの場合、プルの数は無制限のままです。

通常の TeamCity エージェントは、一度プルされたイメージをキャッシュに保存します。これにより、同じプルイメージを定期的に使用して、無制限の数のビルドを実行できます。
ただし、考慮すべきケースはほとんどありません。

  • クラウドエージェントを使用している場合、新しいクラウドエージェントが起動されるたびに、必要なすべてのイメージがダウンロードされます。

  • ビルドステップの設定でイメージを明示的にプルオプションが有効になっている場合、ローカルエージェントであっても、新しいビルドの実行ごとにイメージがダウンロードされます。レート制限に達しないように、このオプションを無効にすることをお勧めします。

  • ビルドの空きディスク容量ステージ中に、TeamCity はローカルキャッシュから古い未使用の Docker イメージをクリーンアップする場合があります。

以前にビルドが Docker Hub に匿名でアクセスしていた場合は、無料の Docker ユーザープロファイルを作成し、TeamCity プロジェクトで Docker 接続を構成することで、許可されるプルの数を 2 倍にすることができます。TeamCity エージェントは、この接続を使用して、各ビルドの前に Docker Hub で認証できるようになります。

関連ページ:

Docker

TeamCity には、Docker コマンドを起動するための Docker ランナー(以前の Docker ビルド)を含む組み込み Docker 統合が付属しています。TeamCity Docker サポートは、Windows、Linux、macOS ビルドエージェントで実行できます。: ビルドエージェントマシンで実行可能ファイルを使用するため、ビルドエージェントユーザーが実行可能である必要があります。Linux では、インストールされた Docker が検出されると統合が実行されます。、mac...

Docker サポート

TeamCity には、Docker サポートビルド機能を含む Docker 統合が組み込まれています。このビルド機能を追加すると、Docker イベントの監視が有効になります。やなどの操作が検出されます。ビルド機能は、Docker 関連の操作に関する情報を提供するビルド結果ページに Docker 情報タブを追加します。また、次のオプションも提供します。イメージをクリーンアップする機能、構築前に認証されたレジストリに自動ログインし、構築後にそれからログアウトする、これらのオプションには、Docker...

TeamCity と VCS ホスティングサービスの統合

GitHub.com、GitHub Enterprise、Bitbucket クラウド、GitLab.com、または GitLab CE / EE に組織アカウントがある場合は、TeamCity をこれらのソースコードホスティングサービスに接続して、組織ユーザーが新しいプロジェクト、Git または MercurialVCS ルート、GitHub または Bitbucket を簡単に作成できるようにすることができます。すぐに利用できるサポートされているトラッカー。TeamCity を Azure DevOps サ...