TeamCity 2022.04 の新機能
複数のエージェントでの並列テスト
TeamCity は、ビルドのテストをバッチに分割し、各バッチを個別のビルドエージェントで実行できるようになりました。このように、テストは並行して実行され、ビルドはより速く終了します。スピードブースト率は、ビルド内のテストクラスの数と使用されるエージェントの数によって異なります。
詳細については、この記事を参照してください。
高度なコード品質インスペクションと Qodana
Qodana プラグインは TeamCity にバンドルされています。Qodana ビルドランナーを有効にして、静的解析をビルドチェーンに追加し、高度なコードインスペクションを実行し、コードの重複を見つけて、コードのコード品質の進捗状況を追跡できるようになりました。ビルドランナーの詳細については、Qodana を参照してください。
以前にバンドルされていない Qodana プラグインをインストールし、DSL を使用していた場合は、アップグレードに関する注意事項を確認してください。
Amazon Web サービスとの統合の強化
TeamCity 2022.04 は、クラウド統合に新しい機能を追加します。
ローカルストレージから Amazon S3 へのビルドアーティファクトの移行
バージョン 2022.04 を使用すると、新しいビルドアーティファクトを Amazon S3 だけでなく、既存のアーティファクトを TeamCity のローカルストレージから Amazon S3 に移動するにも保存できます。これは、セルフホストセットアップからクラウドプラットフォームへの移行を開始したばかりのチームにとって特に便利です。
Amazon CloudFront を介したビルドアーティファクトの転送
Amazon S3 に保存されているビルドアーティファクトの転送速度は、ユーザーと S3 バケットが配置されている地域との間の地理的な距離によって異なります。アーティファクトのアップロード / ダウンロード速度を上げてコストを削減するために、TeamCity 2022.04 は、低遅延と高速転送を提供するコンテンツ配信ネットワークである Amazon CloudFront(英語) のネイティブサポートを追加します。
S3 ストレージのサポートを有効にするを使用すると、TeamCity は最も近い CloudFront サーバーを介してビルドアーティファクトを転送できます。
ビルド承認が必要
実稼働環境での手順によっては、複数の人の承認が必要になる場合があります。TeamCity では、ビルドを実行するために、指定された人またはグループからの手動承認を要求できるようになりました。ユーザーが誤ってビルドをトリガーするのを防ぎ、デプロイ、リソースを消費するビルド、リソースの削除操作をより細かく制御できるようにするには、ビルドのビルド承認機能を構成します。
ブランチごとに実行中のビルドの数を制限する
TeamCity 2022.04 は、ブランチごとに同時に実行されるビルドの数を制限することにより、ビルドエージェントの割り当てを改善できます。例: メインのブランチには、必要な数のビルドエージェントを占有するビルドの数に制限がない場合がありますが、機能ブランチは一度に 1 つのビルドのみを実行するように制限されています。
よりスマートな VCS 統合
TeamCity は、VCS 統合を改善し、次の新機能を提供します。
スペースマージリクエスト
TeamCity と JetBrains Space の統合には、プルリクエストビルド機能が含まれるようになりました。ビルド構成でこの機能を有効にすると、TeamCity は Space リポジトリに送信されたマージリクエストの変更を自動的に検出します。これらの変更に基づいてビルドが実行されると、ビルドの概要にマージリクエストの詳細が表示され、ビルドステータスが JetBrains Space に送信されます。
TeamCity でこの機能を有効にするには:
プロジェクト設定で、JetBrains Space への接続を構成し、Space リポジトリ URL と空のブランチ仕様を使用して Git VCS ルートを作成します。
ビルド構成設定で、JetBrains Space VCS ホスティングタイプを使用してプルリクエストビルド機能を追加します。

ブランチフィルターを指定して、指定した条件に一致するターゲットブランチのマージリクエストのみを監視できます。例:+:refs/heads/feature-*フィルターを設定すると、TeamCity は名前がfeature-で始まるブランチに送信されたマージリクエストのみを監視します。JetBrains Space のコミット詳細にビルドステータスを公開できるようにするには、このビルド構成にステータス発行者のコミット機能を追加する必要もあります。
統合が構成されると、TeamCity は JetBrains Space ターゲットブランチに送信されたマージリクエストを検出します。リクエストされた変更に対してビルドが実行されると、マージリクエストの詳細が概要タブに表示されます。

TeamCity は、ビルド変更ごとのステータスを JetBrains Space のマージリクエストのタイムライン (ビルド構成でステータス発行者のコミット機能が有効になっている場合はコミットの詳細) にも送信します。

ターゲットブランチを保護し、検証された要求のみがターゲットブランチにマージされるようにするには、Space リポジトリに品質ゲートをセットアップし、TeamCity ビルドを外部チェックとして使用できます。マージリクエストのビルドが失敗した場合、Space は変更が必要な品質チェックに合格しなかったことを通知します。

GitLab の問題との統合
このバージョン以降、TeamCity はそのまま GitLab の問題をサポートします。
キューに入れられたビルドのレポート
コミットステータスパブリッシャーは、対応するビルドをキューに追加するとすぐにバージョン管理システムのコミットステータスを更新し、最新の情報を提供します。GitHub、GitLab、Space、Bitbucket、Azure DevOps はすべてサポートされています。
特定のリビジョンでカスタムビルドを実行する
カスタムビルドを実行するときに、ビルド構成で認識されている変更のリストに必ずしも属していない可能性のある正確なリビジョンを指定できるようになりました。これにより、過去のビルドを再現したり、古いバージョンをデプロイしたり、新しいビルド構成をデバッグしたりする場合に、柔軟性が大幅に向上します。
セキュリティ
Log4J および Log4Shell
TeamCity は Log4Shell の脆弱性(CVE-2021-44228)の影響を受けていませんが、一部のセキュリティスキャナーは誤って脆弱であると報告しました。誤検知のスキャナーレポートを回避するために、Log4J を最新バージョンにアップグレードしました。
Spring および Spring4Shell
Log4Shell と同様に、Spring4Shell の脆弱性(CVE-2022-22965)は TeamCity に影響を与えません。ただし、セキュリティスキャナーからの誤検知レポートを回避するために、TeamCity で使用されている Spring フレームワークを最新バージョンにアップグレードしました。
サーバーでの VCS 関連の操作用のネイティブ Git
TeamCity は、サーバーでの Git 操作のデフォルトオプションとしてネイティブ Git を使用できるようになりました。ネイティブ Git に切り替えると、以前に使用された JGit 実装と比較して、サーバーでの変更操作のチェックのパフォーマンスが向上します。また、大規模な Git リポジトリに関連する多くの問題も修正されています。
切り替える前に、ネイティブ Git クライアント(英語)バージョン 2.29 以降がサーバーマシンにインストールされていること、およびその実行可能ファイルへのパスが PATH 環境変数で指定されていることを確認してください。または、teamcity.server.git.executable.path 内部プロパティを介して実行可能ファイルへのフルパスを設定することもできます(サーバーを再起動する必要はありません)。Windows では、パスに二重の円記号を使用することを忘れないでください。
TeamCity サーバーをネイティブ Git に切り替えるには、管理 | 診断に移動し、Git タブを開きます。ここでは、サーバー上の任意の VCS ルートでネイティブ Git を介した接続をテストできます。すべての VCS ルートをテストすることを選択した場合、TeamCity は、JGit を介して正常に接続されているかどうかを確認してから、ネイティブ Git を介して接続をテストします。この対策は、ネイティブ Git に切り替えた後にパイプラインが破損しないようにできます。接続テストが成功した場合は、サーバーでネイティブ Git サポートを有効にできます。
内部 TeamCity サーバーの統計によると、ネイティブ git を使用すると、サーバーでの VCS 関連の操作のパフォーマンスが大幅に向上します。新しい変更とブランチは、JGit と比較して数倍速く表示されます。
新しい UI
エージェントプールの編集
従来の UI モードに切り替えることなく、新しい Sakura UI でエージェントプールを編集し、エージェントとプロジェクトをそれらにすばやく割り当てることができるようになりました。エージェントプールを編集するには、設定でエージェントを割り当てるをクリックします。このダイアログでは、プールに割り当てるエージェントを選択できます。

変更ページ
新しい変更ページには、コメント(コミットメッセージ)、変更されたファイルへのパス、リビジョン番号で変更を並べ替えることができる柔軟な検索オプションを提供するフィルターが付属しています。

パブリック ECR レジストリでのビルドによって生成された Docker イメージの保存
TeamCity は、ビルドによって生成された Docker イメージを、プライベートと(この更新以降)パブリック ECR レジストリの両方に保存できるようになりました。
この機能を使用できるようにするには、プロジェクト設定に Amazon ECR 接続を追加し、ECR パブリックレジストリタイプを選択する必要があります。

ビルドで Docker サポートも有効にすることを忘れないでください。
外部システムからのユーザーアバターの自動インポート
ユーザーが GitHub や Bitbucket などの TeamCity サードパーティのアカウント経由に初めてサインインすると、TeamCity は自動的に外部システムからアバターを取得し、それを TeamCity ユーザープロファイルに接続します。TeamCity は、確認済みのメールを持つユーザーのアバターにのみアクセスできることに注意してください (GitLab を使用している場合は、アカウントにパブリックメールが設定されていることを確認してください)。
後で TeamCity ユーザープロファイル設定で別のアバターをアップロードすることができます。
複数のビルドにアクションを適用する
複数のビルドを選択して、それらすべてに一度にアクションを適用できるようになりました。
ピン留め / ピン留め解除
タグ
別のビルドと比較する
コメントの追加
お気に入りに追加
除去
ビルド構成ホームの概要タブで、ビルドにカーソルを合わせると表示されるチェックボックスを使用して、必要なビルドを選択できます。それらにアクションを適用するには、ポップアップコンテキストメニューのそれぞれのコマンドを使用します。ビルドの範囲を選択する必要がある場合は、Shift を押して、選択する範囲の端にあるビルドチェックボックスをクリックします。

Perforce 統合: HelixSwarm テスト実行の自動作成とビルドとのステータス同期
ステータス発行者のコミットには、ビルドステータスレポートを Perforce Helix Swarm — スウォームテストを作成するに送信するための新しいオプションがあります。これを有効にすると、TeamCity は Helix Swarm サーバーでテスト実行を作成し(英語)、TeamCity のビルドステータスに従ってそのステータスを更新します。
パッケージ名にバージョンがない Kotlin DSLAPI
以前の TeamCity バージョンによって生成された Kotlin DSL コードには、パッケージ名に v2019_2 が含まれるインポートが含まれていました。例:
TeamCity 2019.2 以降、DSL API に互換性のない大きな変更がなかったため、新しい DSLAPI パッケージはありませんでした。しかし、パッケージのいくつかのバージョンの存在は、異なるバージョンのパッケージからのいくつかの同様のクラスを提案する場合、IntelliJ IDEA のコード補完で常に問題を引き起こします。
コード補完の問題を修正するために、新しいバージョンの DSLAPI Maven アーティファクトが TeamCity 2022.04 に導入されます。これらの DSLAPI アーティファクトには、パッケージ名にバージョンが含まれていません。新しく生成された Kotlin DSL コードは、これらのバージョン管理されていないアーティファクトに自動的に切り替えられます。既存の Kotlin DSL プロジェクトは手動で切り替えることができます。
UI を介してプロジェクトの SSH キーの公開部分を取得する
アップロードされた暗号化されていない SSH キーの公開部分をプロジェクト設定からコピーできるようになりました。これを行うには、プロジェクト設定 | SSH キーに移動し、キー名にある公開鍵をコピーするをクリックします。

これにより、プロジェクト管理者は、必要なときにいつでもシステム管理者に公開 SSH キーを要求する必要がなくなります(たとえば、TeamCity プロジェクトを VCS ホスティングサービスと統合するため)。TeamCity UI を介して取得できます。
その他の更新
キューに入れられたビルドの最適化の改善 TeamCity 2022.04 より前では、キュー内のビルドは、すでに開始または終了したビルドのみに最適化できました。たとえば、キューに 2 つのビルドチェーン(
A -> BとA -> C)がある場合、両方のビルドチェーンのキューに入れられたビルドAは、同じ設定とリビジョンを持つ別の実行中または終了したビルドAがある場合にのみ、ビルドキューオプティマイザーで置き換えることができます。TeamCity 2022.04 以降、このアルゴリズムは改善され、キューに残っているビルドを再利用できるようになりました。上記の例では、両方のビルドチェーンがキューに残っている間にマージされるため、両方のビルドチェーンは同じキューに入れられたビルド
Aを使用します。ビルド失敗条件: 一致するエラーごとにビルドの問題を作成する
ビルドログの失敗条件 で特定のテキストに基づいてビルドを失敗させるように構成する場合、ビルドログで見つかった最初のテキストの出現に対してのみビルドの問題を作成するか (デフォルト)、指定したパターンに一致する各エラーに対してビルドの問題を作成するかを指定できるようになりました。Eclipse プラグインは TeamCity からバンドル解除されました。プラグインが必要な場合はサポートにお問い合わせください(英語)。
修正された問題
アップグレードノート
アップグレードする前に、2021.2.x と比較したバージョン 2022.04 の重要な変更点について読むことを強くお勧めします。
以前のリリース
ロードマップ
将来のアップデートについては、TeamCity ロードマップを参照してください。
関連ページ:
並列テスト
TeamCity は、テストを複数のビルドエージェントに分散することでテストの実行を並列化できるようになり、テストの全体的な期間を最小限に抑えることができます。ビルドのテストは自動的にバッチに分割でき、各バッチは個別のビルドエージェントで実行されます。この機能は、ビルドが複数のエージェントのリソースを利用して技術的に並行して実行できる一方で、結果的に同じエージェントで多くの独立したテストを実行する場合の一般的なユースケースに対応します。以前は、このような動作をエミュレートするために、一部のユーザ...
TeamCity
Qodana は、TeamCity でビルドランナーとして使用できます。使用を開始するには、次の前提条件を満たす必要があります。TeamCity をプロジェクトのビルドサーバーとして使用します。そうでない場合は、TeamCity のドキュメントでその方法を学習してください。プロジェクト言語は、完全にサポートされているテクノロジのリストに含まれています。Qodana の Docker イメージを使用して独自の TeamCity エージェントを実行する場合は、エージェントマシンに Docker がイ...
プルリクエスト
プルリクエストビルド機能を使用すると、プルリクエスト * 情報を自動的にロードし、GitHub、Bitbucket サーバー、Bitbucket クラウド、GitLab、Azure DevOps、JetBrains Space のプルリクエストブランチでビルドを実行できます。* または、GitLab と JetBrains Space の場合はリクエストをマージします。このビルド機能を追加するときは、VCS ルートを指定し、VCS ホスティングタイプを選択する必要があります。その他の設定は、選択し...
ステータス発行者のコミット
コミットステータスパブリッシャーは、TeamCity がコミットのビルドステータスを外部システムに自動的に送信できるようにするビルド機能です。この機能は、TeamCity にバンドルされているオープンソースプラグインとして実装されます。サポートされているシステム:GitHub (プルリクエストのビルドステータスもサポートされています)、GitLab、Azure DevOps(サポートされているステータス: 保留中、成功、失敗、エラー)、Bitbucket サーバーと Bitbucket クラウド...
ブランチとマージ制限のセットアップ
プロジェクトロールを使用すると、リポジトリでの書き込み権限と読み取り権限を管理できますが、それだけではコードの品質と効率的なコラボレーションを確保するには不十分な場合があります。ブランチ保護設定を使用すると、リポジトリ全体に過剰な制限を課すことなく、重要なブランチを不注意な操作や望ましくない変更から保護できます。特定のブランチのセキュリティルールを作成すると、次のことが可能になります。誤ってブランチが削除されるのを防ぎます。ブランチをプッシュまたは強制的にプッシュできる人を制限します。ブランチに...
Docker サポート
Docker サポートビルド機能を使用すると、ビルドを開始する前に Docker レジストリに自動的にサインインできます。この機能の追加:Docker イベントの監視を有効にします: やなどの操作は TeamCity によって検出されます。Docker 情報タブをビルド結果ページに追加します。このタブは、Docker 関連の操作に関する情報を提供します。この機能により、次のことも可能になります。Docker イメージのクリーンアップ。ビルド前に認証済みレジストリに自動的にログインし、ビルド後にログ...