TeamCity 2023.11 の新機能。
マトリックスビルド
TeamCity では、 ビルドパラメーターを利用して、ビルドスクリプト、構成 / プロジェクト設定、コマンドライン引数などで生の値を置き換えることができます。 通常、各パラメーターには 1 つの値のみが保存されます。 バージョン 2023.11 以降では、構成に マトリックスビルド 機能を追加して、パラメーター値の範囲を指定できます。 このような構成を実行すると、TeamCity は複数のビルドを生成し、これらの値を自動的に順番に処理します。

それぞれに独自の値設定を持つ複数のパラメーターを追加すると、マトリックスが形成されます。 TeamCity はこのマトリックスの各セルに対してビルドを実行し、どのパラメーター/値の組み合わせが失敗しているかを一目で確認できる 概要 ページに結果を報告します。

マトリックスビルド機能には、インストールされているオペレーティングシステム、デフォルトの Java バージョン、およびアーキテクチャによって異なる環境でビルド構成を実行できるように、ビルド構成を迅速にセットアップできる複数の事前構成オプションが用意されています。
詳細: マトリックスビルド。
Amazon ウェブサービスの統合
EC2 プラグインの更新
Amazon EC2 統合プラグインを全面的に見直しました。 リフレッシュされたプラグインには、外観が新しくなったほかに、次の機能強化が加えられています。
Mac AMI を利用するイメージを作成できるようになりました。 Mac VM は、少なくとも 1 日予約する必要がある専用の Mac Mini ホスト上でのみ実行できます。 更新された TeamCity EC2 プラグイン UI を使用して、適切なホストを見つけるためのタグを指定できるようになりました。
クラウドイメージに複数のインスタンスタイプを指定できるようになりました。 この機能強化により、クラウドエージェントのセットアップの汎用性と信頼性が向上し、スポットインスタンスを予約できる可能性が高まります。
サブネット フィールドは複数の値を受け入れるようになり、受信トラフィックルールと送信トラフィックルールの異なるセットを指定できるようになりました。
新しい 画像の優先度 設定を使用すると、クラウドのイメージの範囲を指定できます。 TeamCity が新しいクラウドエージェントをスピンアップする必要がある場合、最も高い優先度番号のイメージを優先します (そのイメージがアクティブエージェントの上限にまだ達していない場合)。
TeamCity は、 スポット配置スコアに基づいて、スポットリクエストが成功する可能性が最も高いリージョンまたはアベイラビリティーゾーンを自動的に選択できるようになりました。 TeamCity がこれらのスコアをリクエストして利用できるようにするには、
ec2:GetSpotPlacementScoresIAM 権限を追加します。
S3 プラグインの更新
バージョン 2023.11 には、次の機能強化を備えた更新された S3 プラグインが同梱されています。

Amazon S3 バケットと S3 互換ストレージ (MinIO(英語)、 バックブレイズ B2(英語) など) の両方を念頭に設計された、直感的で合理化された UI。
転送加速(英語)が有効になっているバケットのサポート。
設定項目を減らして簡単にセットアップできます。 すべての接続関連のプロパティが、選択した AWS 接続から取得されるようになりました。 AWS リージョンは、選択したバケットから自動的に取得されます。
TeamCity がすべてのカスタム S3 ストレージに対してデフォルトで実行する整合性検証を無効化する機能。
AWS 接続の改善
AWS 接続の新しい サブプロジェクトで利用可能 および ビルドステップで利用可能 設定により、これらの接続が望ましくない TeamCity プロジェクトや機能 (例: AWS 資格情報 や カスタム S3 ストレージ) によって使用されないようにすることができます。

さらに、Amazon ガイドラインに従い、永続的なユーザー認証情報を必要としない安全な AWS 接続を構成する方法については、ドキュメント記事「接続の構成」の新しいセクションを参照してください: 推奨セットアップ。
詳細: Amazon ウェブサービス (AWS)。
VCS 統合
GitHub
シームレスな GitHub アプリ登録
バージョン 2023.05 では、GitHub および GitHub Enterprise への 新しいタイプの接続を導入しました。 これらの接続では、リポジトリへの従来の OAuth ベースのアクセスではなく、 GitHub アプリ(英語)が使用されます。
バージョン 2023.11 以降では、GitHub で新しいアプリを手動で設定して登録することなく、これらの接続をより速く作成できるようになります。 自動 作成モードを 接続を追加 ダイアログで選択すると、残りは TeamCity が行います。

詳細: 接続を構成。
更新可能なトークン
GitHub アプリの接続のリフレッシュ可能なアクセストークンを発行できるようになりました。
JetBrains Space
自動接続
このリリースでは、TeamCity と JetBrains Space プロジェクト間の統合を設定するための、更新された簡単な方法を導入します。 TeamCity に必要なすべての権限を付与する Space アプリケーションを手動で作成、設定、インストールする代わりに、このルーチンを TeamCity に委任できるようになりました。 必要なのは、TeamCity に正しい Space 組織を指定することだけです。残りは TeamCity が処理します。

更新された統合では、次の 2 種類の接続が利用されます。
組織接続 - TeamCity が組織内のプロジェクト一覧を取得し、新しい Space アプリケーションを作成できるようにする基本的な Space アプリケーションを作成します。
プロジェクト接続 - 親組織接続を使用して、TeamCity が個々の Space プロジェクトにアクセスできるようにするアプリケーションを作成します。
詳細: 接続の構成。
ステータスの自動公開
このバージョン以降、 JetBrains Space リポジトリをターゲットとする TeamCity ビルド構成では、ビルド関連の更新を投稿するために構成済みの コミットステータスパブリッシャー ビルド機能は必要ありません。 事前定義された Space 接続 経由で TeamCity プロジェクトを設定すると、ビルドステータスが自動的に投稿されます。

プロセスを完全に制御したい場合や、TeamCity がビルドステータスを自動的に公開できないカスタムセットアップの場合でも、Commit Status Publisher 機能を手動で設定するオプションは引き続き利用できます。
詳細: JetBrains Space。
更新可能なトークン
JetBrains Space 接続のリフレッシュ可能なアクセストークンを発行できるようになりました。
Perforce
クラウドエージェントでのソースの再利用
クラウドエージェントにマウントされた永続ストレージに存在する (または永続ストレージからコピーされた) ソースを再利用できるようになりました。 以前のバージョンでは、新しいエージェントマシンで実行されている Perforce ビルドではこの動作は不可能でした。
Perforce Helix Swarm の機能強化
バージョン 2023.11 では、 コミットステータスパブリッシャー ビルド機能の「Perforce Helix Swarm」パブリッシャーをオーバーホールしました。 TeamCity は、Swarm セットアップにすでに存在するワークフローとテストを (独自のテストを作成する代わりに) 利用できるようになりました。 さらに、パブリッシャーは管理者アクセス権を持つユーザーの資格情報を必要としなくなりました。

GitLab
GitLab リポジトリをターゲットとする コミットステータスパブリッシャーおよび プルリクエスト機能は、リフレッシュ可能なアプリケーショントークンを利用して認証を通過できるようになりました。

Bitbucket Cloud
Bitbucket クラウドリポジトリを追跡する プルリクエスト機能には、次の 2 つの新しい認証タイプオプションがあります。
対応する OAuth 接続経由で発行されたリフレッシュ可能なアクセストークン。
特定のリポジトリ、プロジェクト、ワークスペースに対して発行される永続的なアクセストークン。
Bitbucket サーバーおよび Data Center
プルリクエスト機能は、リフレッシュ可能な OAuth トークンを利用して、Bitbucket サーバー / データセンター上のリポジトリにアクセスできるようになりました。
詳細: プルリクエスト。
Azure DevOps
コミットステータスパブリッシャーと プルリクエストビルド機能は、 構成済みの TeamCity 接続から取得した更新可能なトークンを使用して認証を通過できるようになりました。

詳細: コミットステータスパブリッシャー | プルリクエスト。
.NET
ビルドエージェントは、エージェントマシンにインストールされているすべての .NET ワークロードを返す
DotNetWorkloads_<バージョン>パラメーターを報告するようになりました。 詳細: エージェントによって報告されるパラメーター。.NET ランナーは、
vstestコマンドに 除外されたテストアセンブリ 設定を提供するようになりました。 このフィールドでは、コマンドが無視するファイルへのパスを指定できます。
ビルドが各バッチで大量の 並列テスト を実行する場合、TeamCity は潜在的なパフォーマンス課題を軽減する代替テストフィルタリングモードに自動的に切り替えることができます。 詳細については、この記事を参照してください: .NET の代替テストフィルタリング。
カスタムビルドのスケジュール
ビルドを実行する特定の日時を設定できるようになりました。 これを行うには、 カスタムビルドを実行するダイアログを呼び出し、新しい 日付 セクションの設定を使用します。

詳細: カスタムビルドを実行します。
ビルドキャッシング
新しい ビルドキャッシング 機能を使用すると、構成でビルドに必要なファイル (ダウンロードされた npm パッケージなど) をキャッシュし、連続するビルドで再利用できるようになります。 この手法は、ビルドエージェントが過剰な操作をオフロードするのに役立ち、ビルドルーチンを大幅に高速化できます。

ファイルをキャッシュする構成では、将来のビルドとキャッシュを共有するだけでなく、ファイルを同じプロジェクト内の他のビルド構成に渡すことができます。
詳細: ビルドキャッシング。
JDK がバンドルされたエージェント
バージョン 2023.11 以降では、カスタム JDK がバンドルされた TeamCity エージェントのディストリビューションをビルドできます。 これらのディストリビューションを使用すると、エージェントとその動作に必要な JDK の両方を一度にインストールできます。

カスタムエージェントディストリビューションを作成するには、 管理 | エージェント JDK に移動して新しい JDK オプションを追加します (プラットフォーム、アーキテクチャ、および TeamCity がこの特定の JDK をダウンロードするためのリンクを指定する必要があります)。

新しいオプションが追加されると、TeamCity はカスタムエージェントディストリビューションのビルドを開始します。 エージェント | 概要 ページの エージェントをインストール | 完全版ディストリビューション をクリックすると、カスタムエージェント + JDK バンドルをダウンロードできます。
バージョン化設定: VCS から追加設定を読み込む
このバージョン以降、TeamCity はバージョン管理システムに保存されている設定から、カスタムスナップショット依存関係、VCS ルート、チェックアウトルールを読み込めるようになりました。 その結果、バージョン管理された設定を編集し、デフォルト / 安定版ブランチの設定とは大幅に異なる設定でカスタムブランチを作成する柔軟性がさらに向上しました。
以前は無視されていたこれらの設定を検出すると、TeamCity は必要な非表示エンティティ (仮想ビルド構成など) を動的に作成します。これらは現在のビルドに対してのみ有効で、異なる設定を使用する他のリビジョン / ブランチでは非表示のままになります。

更新された動作を有効にするには、プロジェクトの バージョン対応設定 ページで スナップショット依存関係とバージョン管理設定の変更を適用する オプションにチェックを入れます。
プライマリビルドから並列ビルドのアーティファクトにアクセス
並列テスト ビルド機能を使用するビルド構成を実行すると、TeamCity はビルドを、自動生成された チェーンで相互接続されたバッチに分割します。 以前のバージョンでは、このようなビルド中に生成されたアーティファクトは個々のバッチビルドで公開されていましたが、親ビルドには アーティファクトは含まれていませんでした。

回避策として、完了した構成ビルドを表示するときに 依存関係 タブに切り替えることができます。

このバージョン以降、バッチビルドによって生成されたアーティファクトは、メインビルドの アーティファクト タブに集約されます。 teamcity.build.parallelTests.currentBatch パラメーターを使用して、バッチビルドによって生成されたアーティファクトを別のディレクトリに配置することもできます。

ステップのステータスと ID
バージョン 2023.11 以降では、ステップの ID を指定できるようになりました (プロジェクト ID や構成 ID と同様)。

TeamCity はこれらの ID を使用して、ステップの終了ステータス ("success"、"failure"、または "cancelled") を報告する新しい teamcity.build.step.status.<ステップ_ID> パラメーターを生成します。

これらの値を使用して、前のステップのステータスに応じてカスタムアクションを実行できます。 例: カスタムのステップ実行条件を作成できます。
詳細: ステップステータスのパラメーター。
インスペクションランナー用の追加 ReSharper プラグイン
インスペクション (ReSharper) ランナーには R# CLT プラグイン フィールドが追加され、JetBrains マーケットプレイスからダウンロードしたりローカルストレージからインストールしたお気に入りの ReSharper プラグイン (StyleCop(英語)、 CleanCode(英語)、 Unity サポート(英語)など) を追加できるようになりました。

サービスメッセージ
指定されたファイルの内容を追跡し、新しい行をビルドログにエコーできる 新しいサービスメッセージが追加されました。

詳細: ファイルのビルドログへの書き込み。
REST API
構成の移動
POST リクエストを次のエンドポイントに送信して、ビルド構成を別のプロジェクトに移動できるようになりました。
例: 次のリクエストは、「SourceProject_MyBuildConfig」ID を持つビルド構成を検索し、それを「MyProject2」に移動します。
クラウドインスタンスを段階的にダウンさせる
以前は、実行中のクラウドエージェントに DELETE リクエストを送信して、クラウドエージェントを終了することができました。
このバージョン以降、次のエンドポイントへの POST リクエストを介してクラウドインスタンスを停止できるようになりました。
...actions/stop エンドポイントを使用して "ソフト" 停止リクエストを発行します: ターゲットエージェントが現在ビジーな場合、ビルドの完了後に停止します。
...actions/forceStop エンドポイントを使用すると、ビジー状態であってもクラウドインスタンスを停止できます。
詳細: クラウドインスタンスの開始と停止。
Sakura UI と UX の機能強化
エージェント パラメーター タブを改善しました。 任意の TeamCity エージェントを表示している際にこのタブに移動すると、このエージェントの構成、環境パラメーター、システムプロパティをすぐに確認できます。

必要なエージェントプールをブックマークして、エージェントとプールのリストの上部から簡単にアクセスできるようになりました。
依存関係タブ には、構成名で特定の依存ビルドを検索できる検索パネルが表示されるようになりました。
バージョン 2023.05 で導入された インタラクティブエージェントターミナルは、エージェントの詳細ページまたはビルド結果ページの下部にドッキングされたパネルで開くようになりました。 別のタブで開く をクリックすると、別のブラウザータブに移動できます。

パフォーマンスモニター (既存) は、消費された / 合計エージェントメモリの絶対値を表示するようになりました。
ビルドログ タイムスタンプを絶対値から相対値に切り替えて、ビルドが特定の段階に到達するまでにかかった時間をすばやく分析できるようになりました。

TeamCity UI の 接続 ページから接続 ID を表示およびコピーできるようになりました。 このマイナーな機能強化により、接続 (AWS 認証情報の機能、 Docker レジストリ接続、 S3 アーティファクトストレージ、 他の接続を使用するAWS 接続など) を利用するオブジェクトの Kotlin DSL コードの作成が容易になります。

クラウドイメージの ビルド履歴 タブには、このインスタンスが利用できなくなった場合でも、特定のクラウドエージェントのすべてのビルドを検索できる検索ボックスが表示されるようになりました。

ナビゲーションバーでは、現在の TeamCity ユーザーによる変更があるお気に入りプロジェクトの変更インジケーターが太字で表示されるようになりました。

その他
DslContext オブジェクトは、Kotlin DSL コードで TeamCity サーバーの URL を取得できる文字列
サーバー URLプロパティを公開するようになりました。TeamCity はエージェントをより効果的に配布し、失敗したビルドを含む大規模なビルドチェーンをより速く処理します。 バージョン 2023.11 以降、 「依存関係が失敗した場合」の条件が「Make ビルドの開始に失敗しました」である依存ビルドは、依存関係が失敗またはキャンセルされたときに、利用可能なエージェントを待機しなくなりました。 代わりに、依存ビルドのステータスはできるだけ早く "開始に失敗" に変更され、TeamCity はチェーン内の次のビルドに進みます。
コミットステータスパブリッシャー ビルド機能は、GitLab リポジトリの
refs/(merge-requests/*)/headブランチ (「マージ結果」ブランチ) をターゲットとする構成のビルドステータスを正しく公開するようになりました。 以前は、マージ結果リビジョンの TeamCity ビルドを実行すると、Publisher で HTTP 404 エラーが発生していました。ユーザーが外部の 2FA 保護サービスの資格情報を使用して TeamCity にログインする場合、TeamCity は追加の 2FA リクエストを送信しません。 詳細: 過剰な承認リクエストの削減。
ログ分析ツールがビルドログを取得するために使用する URL に
dateFormat=<値>パラメーターを追加できるようになりました。 詳細: DateTime パターンの変更。builds_queued、開始されたビルド数、builds_running、builds_queuedの メトリクス に加えて、TeamCity は実験的なbuilds_detachedメトリクスを報告するようになり、 エージェントから切り離されたビルド の数を表示できます。
アップグレードノート
アップグレードする前に、バージョン 2023.11 2023.05.4 との比較の重要な変更点について読むことを強くお勧めします。
修正済みの課題
実装された機能と修正された課題の概要については、 TeamCity 2023.11 リリースノート の記事を参照してください。
ロードマップ
今後の更新について詳しく見るには、 TeamCity ロードマップを参照してください。
フィードバックは重要です
皆様からのフィードバックを重視しており、ご意見やご提案を共有することをお勧めします。 詳細については、リンク フィードバックを参照してください。