TeamCity 2024.03: HashiCorm Vault プラグインのバンドル、信頼できないビルドなど

バージョン 2024.03 では、非常に待ち望まれていた多数の機能が導入されています。 たとえば、HashiCorp Vault プラグインが TeamCity にバンドルされるようになりました。 また、新しい「信頼できないビルドグループ」を使用することで、信頼されているユーザーによって作成された変更と外部ソースからの変更を区別できるようになっています。

さらに、新たに導入された dotCover ランナーでは、コードカバレッジプロファイリングでのプロセスの実行、ビルドステップ間のスナップショットのマージ、および TeamCity で実行される並列テストのビルドチェーン全体の総合レポートの生成が可能になっています。

TeamCity の新機能の詳細は、以下をお読みください。

バンドル化: HashiCorp Vault プラグインが TeamCity に組み込まれました

TeamCity は長らくプラグイン経由で HashiCorp Vault との統合を活用してきました。 昨年にこの統合の仕組みを改良し、同プラグインをさらに簡単に構成できるようにしました。

バージョン 2024.03 では、このプラグインを TeamCity にバンドルし、TeamCity インストールの基本コンポーネントにしました。

TeamCity の HashiCorp Vault 統合の詳細は、ドキュメントをご覧ください。

オプションのアーティファクト依存関係

アーティファクト依存関係を構成すると、ビルド構成で他の構成や同じ構成内のビルドによって生成されたファイルを取得できるようになります。 この依存関係を確立するには、ダウンロードするファイルとその格納場所を指定したアーティファクトルールを定義します。

従来の TeamCity はこのルールに基づいてファイルの場所を特定できなかった場合、「Unable to resolve artifact dependency(アーティファクト依存関係を解決できません)」エラーによりビルドが失敗していました。

バージョン 2024.03 からは、より柔軟にアーティファクトの依存関係を定義できるようにしています。 このバージョンでは、以下の場合に依存関係を無視するように構成できるようになりました。

  • ソースビルドがまったく存在しない場合(他のオプションでないルールがある場合を除く)
  • ソースビルドに必要なファイルが欠落している場合
  • アーティファクトルールがアーカイブに基づいており、そのアーカイブに必要なファイルが含まれていない場合。

この機能に関するフィードバックがございましたら、こちらの YouTrack チケットでお気軽にご報告ください。

新機能の全リストについては、ドキュメントの新機能ページをご覧ください。

信頼できないビルドグループで外部プルリクエストをより細かく制御

プルリクエスト機能では、コードをメインのコードベースにマージする前にレビューすることができます。 ユーザーは任意の貢献者のビルドを実行するか、組織内のビルドのみを実行するかを選択できます。 前者のオプションには TeamCity サーバーを有害なコードにさらしてしまうセキュリティ上のリスクがありますが、後者のオプションはより幅広い貢献者とのコラボレーションを制限してしまいます。

バージョン 2024.03 では「信頼できないビルドグループ」を導入し、TeamCity が信頼されているユーザーによって作成された変更と外部ソースからの変更を区別できるようになりました。

信頼できないビルドグループで外部プルリクエストをより細かく制御

現在の信頼できないビルドグループは GitHub と GitLab をサポートしています。 詳細は、ドキュメントをご覧ください。

新しい dotCover ランナー

JetBrains dotCover は TeamCity の .NET 関連プロジェクト向けコードカバレッジツールとして長らくサポートされてきました。 バージョン 2024.03 では、dotCover ツールと連携する新しいビルドランナーを .NET Support プラグインに追加しました。

新しい dotCover ランナーでは以下を実行できます。

  • 任意のプロセスを dotCover プロファイリングで実行し、カバレッジスナップショットを生成する。
  • 他の .NET または dotCover ランナーが生成したビルドステップスナップショットをマージする。
  • 複数の並列テストのビルドチェーン全体をまとめたレポートを生成し、TeamCity のカスタムレポートに変換する。

詳細は、ドキュメントをご覧ください。

TeamCity における .NET テストの再試行ポリシー

バージョン 2024.03 の .NET ビルドランナーには新機能が追加されています。 新しいオプションを使用することで、失敗したテストの再試行ポリシーをビルド全体で設定できます。

信頼できないビルドグループで外部プルリクエストをより細かく制御

この機能はテストの不安定さを解消し、統合テストの一時的な失敗を減らすのに役立ちます。

詳細は、ドキュメントをご覧ください。

Gradle ランナーの構成キャッシュサポート

Gradle の構成キャッシュオプションを使用すると、構成フェーズの結果をキャッシュして後続のビルドで再利用できるため、ビルドのパフォーマンスが大幅に向上します。 バージョン 2024.03 より前のバージョンで提供されていた TeamCity の Gradle ビルドランナーでは、この機能はサポートされていませんでした。

このリリースでは、この機能を TeamCity に導入することで Gradle ビルドの効率とパフォーマンスを改善しています。 TeamCity の設定で構成キャッシュオプションを有効にする方法は、ドキュメントをご覧ください。

TeamaCity 2023.11: マトリックスビルド、ビルドキャッシュなど

TeamCity 2023.11 にはマトリックスビルドやビルドキャッシュなど、ビルドの構成をより簡単にすることが大いに期待される機能が多数備わっています。

GitHub、GitLab、Bitbucket、Azure DevOps などの Git ホスティングプラットフォームとの統合が強化され、認証をより容易にするオプションが搭載されました。

EC2 および S3 プラグインの UI を全面的に作り直すことで、Amazon サービスと簡単に連携できるようにしました。

新機能の詳細は以下をお読みください。

マトリックスビルドの紹介

マトリックスビルドの画像

TeamCity のマトリックスビルドを利用することで、ビルドのマトリックスを作成するためのパラメーターと対応する値の組み合わせを定義できます。 個々のパラメーター値を組み合わせて固有のビルドを生成した後、 並列実行する複数のビルドでマトリックスビルドが構成されます。

マトリックスビルドはオペレーティングシステムやブラウザーのバージョンなどが異なる複数の構成でソフトウェアをテストする場合に特に役立ちます。

マトリックスビルドの詳細は、ドキュメントをご覧ください。

ビルドキャッシュで短縮、再利用、リサイクル

ビルドキャッシュで短縮、再利用、リサイクル

CI/CD では使い捨てのビルドエージェントを使用するのがベストプラクティスであり、最も安全な手法とみなされています。 ただし、このベストプラクティスには問題がないわけではありません。

使い捨てのビルドエージェントでビルドを実行する際は、毎回大きなライブラリまたは複数のライブラリをインターネットからダウンロードしてビルドを実行する必要があります。 これはビルド時間が長くなり、ビルドの開始に遅延が発生する原因となります。

もうこの問題は起きません!

ビルドキャッシュはプロジェクトが依存しているファイルをダウンロードしてプロジェクト内で再利用することにより、CI/CD のビルド時間を最適化するのに役立ちます。

ビルドキャッシュの詳細は、ドキュメントをご覧ください。

クラウドを考慮: EC2 および S3 プラグインの更新

クラウドを考慮: EC2 および S3 プラグインの更新

2023.11 リリースでは、クラウドのプロファイルとイメージを設定する手法を全面的に再考しました。 新しい UI では、関連する設定オプションを提案しながらプロセスを進められるようにしています。

スポットプレイスメントスコアを利用した AWS EC2 スポットインスタンスのビルドエージェントの実行など、EC2 Mac インスタンスを使用するメリットを得られるようになりました。

S3 プラグインにも Amazon S3 バケットと S3 対応ストレージの両方を考慮して設計された新しい直感的で合理化された UI が実装されました。

詳細は、ドキュメントをご覧ください。

TeamCity による Git 対応

TeamCity は GitHubGitLabBitbucket(Cloud および Data Center)、Azure DevOps などの Git ホスティングプラットフォームとのシームレスな統合を提供しています。

GitHub

2023.05 では、新しい種類の GitHub 接続が導入されました。 従来の OAuth ベースのリポジトリアクセスを使用する代わりに、GitHub App を使用できます。

バージョン 2023.11 からは GitHub での手動構成と新しいアプリの登録が不要になり、このような接続をより効率よく確立できるようになりました。

TeamCity による Git 対応

認証に関しては、Commit Status PublisherPull Requests(プルリクエスト)ビルド機能、GitHub 課題トラッカーの設定ページで GitHub App 接続用の個人を特定しないリフレッシュ可能なアクセストークンも発行できるようになりました。

GitLab

バージョン 2023.11 からは GitLab の Pull Requests(プルリクエスト)ビルド機能で下書きのマージリクエストを無視するように TeamCity を構成できるようになりました。

GitLab

GitLab リポジトリをターゲットとする Commit Status PublisherPull Request(プルリクエスト)は、リフレッシュ可能な OAuth トークンを使用して認証を通過できるようになっています。

認証用のリフレッシュ可能トークンのサポート

GitLab リポジトリをターゲットとする Commit Status PublisherPull Request(プルリクエスト)は、リフレッシュ可能なアプリケーショントークンを使用して認証を通過できるようになっています。

Azure DevOps

TeamCity が Azure DevOps の Commit Status PublisherPull Request(プルリクエスト)ビルド機能において、リフレッシュ可能な OAuth トークンをサポートするようになりました。

詳細は、ドキュメントをご覧ください。

Bitbucket Cloud

このリリースでは、Bitbucket 認証をさまざまな方法で強化しています。

In addition to app passwords and VCS Root credential authentication types, TeamCity also supports refreshable and permanent access tokens as an authentication method for the Pull Request Build Feature for Bitbucket Cloud.

Bitbucket Server / Data Center

Pull Request(プルリクエスト)機能では、Bitbucket Server / Data Center のリポジトリにアクセスする際にリフレッシュ可能な OAuth トークンを使用できるようになりました。

詳細は、ドキュメントをご覧ください。

Perforce Helix Swarm 統合の強化

Perforce Helix Swarm 統合の強化

We’ve also improved the existing Swarm and TeamCity integration. この統合により、Swarm で TeamCity のビルドステータスを使用したり、TeamCity UI から Swarm のインターフェースに移動したりできます。

バージョン 2023.11 より、Commit Status Publisher ビルド機能の TeamCity Perforce Helix Swarm パブリッシャーを Swarm 環境にある既存のカスタムワークフローと統合できるようになりました。 また、Commit Status Publisher で管理者アクセス付きのユーザーの資格情報が不要になりました。

TeamCity で Swarm 管理者レベル資格情報を使用せずに統合をセットアップできるようになりました。 この統合の更新により、TeamCity のチェックに基づくクオリティゲートをカスタムワークフローに含められるようにもなっています。

詳細は、ドキュメントをご覧ください。

お気に入りのエージェントプール

プルリクエストビルド機能の下書きプルリクエストのサポートを改善

特定のエージェントプールをお気に入りに指定し、単一の場所からそのプールにアクセスできるようになりました。 自分が担当しているエージェントプールにアクセスする必要がある場合に便利です。

ターミナルの力を解放: エージェントターミナルによるエージェントへのシームレスなアクセス

ターミナルの力を解放: エージェントターミナルによるエージェントへのシームレスなアクセス

Agent terminal is a unique TeamCity feature that provides a convenient and quick way to get direct access to an agent machine by opening a remote terminal directly from the TeamCity UI. Linux、Windows(PowerShell を使用)、macOS でサポートされています。

バージョン 2023.11 からはタブを切り替えてエージェントターミナルを開く必要がなくなりました。エージェントターミナルは TeamCity UI の同じページで開くようになっています。

TeamCity 2023.05: ダークテーマ、エージェントターミナルなど

TeamCity 2023.05 は、ダークテーマ、エージェントへのターミナルアクセスの改善、マルチノードのセットアップの強化など、多くの期待が寄せられていた多数の機能を提供します。 セキュリティをさらに強化するため、TeamCity は Let's Encrypt を統合し、カスタムグループに対して 2 要素認証を有効にする機能を提供しました。 このリリースには、GitHub App 接続や実行中のビルドから直接カスタム Slack メッセージを送信できる機能など、刺激的な新機能も導入されています。

ダークテーマのご紹介

開発者は、日常的に使用するツールに快適さを感じられなければなりません。 このため、TeamCity の歴史で最も賛成票の多かった機能の 1 つであるダークテーマを開発しました。

ダークテーマは眼精疲労の軽減と視覚的に気が散る要素の排除に役立ちます。 また、その見た目が美しいと感じるユーザーもいます。

TeamCity のダークテーマはクラシック UI と Sakura UI のどちらにも対応しています。 ライトダークのオプションの他に、お使いの OS 設定に自動的に合わせる System theme(システムテーマ)も選択可能です。

エージェントターミナル

Agent terminal

TeamCity 2023.05 では、TeamCity UI から直接エージェントマシンへのリモートターミナルを開き、エージェントログの表示、インストール済みソフトウェアの確認、特定のエージェントの問題のデバッグを簡単に行えるようになりました。

リモートターミナルではエージェントに接続するための SSH キーの管理が不要であるため、この新機能は特にエージェントに関する問題をトラブルシューティングする場合に便利です。 Mac、Linux、および Windows(PowerShell を使用)でサポートされています。

マルチノードのセットアップの強化

マルチノードのセットアップの強化

このリリースでは、メインノードとセカンダリノード間で負荷を効果的に分散するリクエスト分散ロジックの改善も行っています。

TeamCity の拡張性を強化するため、ノードの交換が完全に可能になりました。 TeamCity ネットワーク内のすべてのノードがユーザーリクエストの負荷分散に貢献できるため、ウェブ UI のユーザーが生成する負荷を全ノード間により均等に分散することができます。

VCS ポーリングを複数のノードに割り当てる

2023.05 バージョンでは、VCS リポジトリのポーリング動作が 1 つのノードに制限されなくなりました。 最新のリリースでは、この関数を複数のノードに委譲できるようになったため、より均等に負荷を分散し、より素早く新しいコミットを識別し、より迅速にビルドを開始できるようになっています。

この機能改善により、ユーザーはビルド、テスト、およびデプロイプロセスを合理化し、全体の効率を高め、遅延を減らし、生産性を向上させることができます。

セキュリティの強化

TeamCity では、堅牢なセキュリティの確保を最優先事項としています。 データ漏洩や潜在的なビジネスの中断要因に対する製品の耐性を強化するため、以下の機能を採り入れました。

Let’s Encrypt との統合

TeamCity がウェブサイトで HTTPS を使用できるようにする無料の自動電子証明書を提供する Let's Encrypt という認証局と統合できるようになりました。 Let's Encrypt と通信することで、TeamCity が有効な証明書を自動的に取得してインストールします。それ以降、ユーザーが介入しなくてもその証明書は更新されます。

2 要素認証

以前のバージョンでは、必須の 2 要素認証モードを有効にするとサーバー全体にそのモードが適用されていましたが、 今回のリリースでは、グローバルモードがオプションに設定されている場合であっても 2FA の使用を必須とするカスタムユーザーグループを作成できるようになりました。

GitHub App 接続

GitHub App 接続

TeamCity を GitHub App として GitHub と協調することを許可できるようになりました。GitHub App は、別のサービスアカウントを作成したり、ユーザーの代理で実行したりせずにさまざまなアクションの実行と GitHub API の使用が可能になる最近の機能です。

GitHub App 接続の最大のメリットは、TeamCity がユーザーの資格情報を使って GitHub にアクセスする必要がなくなったことです。 代わりに、ユーザーの GitHub 組織/アカウントでの GitHub アプリのインストールに対して付与される、個人情報を含まない更新可能なトークンを使用します。 これは、誰かが組織を抜けた場合やアクセス権が変更された場合に特に便利です。

プルリクエストビルド機能の下書きプルリクエストのサポートを改善

プルリクエストビルド機能の下書きプルリクエストのサポートを改善

TeamCity 2022.12 では、GitHub の下書きプルリクエストを無視するようにプルリクエストビルド機能を構成する機能が TeamCity Cloud に導入されました。

バージョン 2023.05 ではこれに加えて、TeamCity On-Premises でもプルリクエストビルド機能を使用している場合に GitHub の下書きのプルリクエストを無視することができます。 機能の設定内で Ignore Drafts(下書きを無視する)オプションを有効にすると、TeamCity はステータスが変更されるまで下書きのプルリクエストを無視するようになります。

カスタマイズ可能な通知

TeamCity ユーザーは特定のイベントに対してメールと Slack 通知を構成できます。 バージョン 2023.05 ではこの機能がさらに改善され、サービスメッセージを使って Slack メッセージとメール通知を送信できるようになりました。

カスタマイズ可能な通知

誤った受信者にメッセージが配信されないようにするため、さらには信頼できない外部リソースへのリンクを制限するため、これらのサービスメッセージには固有のセキュリティ対策が統合されています。

これが特に役立つ可能性のあるシナリオには、特定の条件が満たされた場合や、ビルドが進行中に継続的なデプロイがエラーを報告し、すぐにレビューが必要となるなどの重大なイベントが発生した場合に通知を送信することが考えられます。

サービスメッセージ経由でのビルドタグの追加と削除

サービスメッセージ経由でのビルドタグの追加と削除

カスタム通知を送信するだけでなく、サービスメッセージを使ってビルドタグを追加・削除することも可能です。

ビルドタグを使用することで、特定の基準に従ってビルドを分類し、整理することができます。 たとえば、ビルド失敗の原因をビルドタグで示すと、似たような理由で失敗となったビルドをより簡単に特定することができます。

Podman のサポート

Podman サポート

2023.05 リリースでは、ルート権限のないユーザーがコンテナーを管理できる Podman というコンテナーエンジンのサポートを導入しています。 Docker コマンドと完全に互換性があるため、エンジンをより簡単に切り替えられます。

ご意見をお聞かせください

新機能の全リストについては、ドキュメントの新機能ページをご覧ください。

いつものように、皆さんのフィードバックを楽しみにお待ちしています! サポートフォームよりお気軽にリクエストを送信してください。

TeamCity 2022.10

TeamCity 2022.10 ではデフォルトで Sakura UI が有効になっているほか、AWS 資格情報管理システムや初期状態で使用できる AWS EC2 ベースのビルドエージェントへのターミナルアクセスなど、多数のクラウド関連機能の導入、そして VCS 統合への重要な改善の追加が行われています。 オンプレミス型 TeamCity インストールでは、サーバー管理者が喜ぶ新しい合理的な HTTPS 実装方法が導入されています。 また、Google アカウントを使った新しい認証モジュールの追加など、待望の機能が多数実装されています。

Sakura UI: 隅々まで完璧

Sakura /sa.ku.ʁa/(桜)は心機一転の象徴です。私たちは Sakura UI を TeamCity 2022.10 のデフォルトにすることで、その気持ちを完璧に伝えていると信じています。

Sakura UI は、高速で美しい最新の UI です。 アクセシビリティを念頭に構築されており、従来の UI と同等の機能だけでなく、新しい独自の機能も多数備えています。 細部まで完璧な仕上がりにするため、Sakura UI には 4 年以上に渡って取り組んできました。 その過程では IntelliJ IDEAKotlin など、社内外の多数のプロジェクトにおいてテストするという特別な機会を得ることもできました。 絶対に皆さんにも気に入っていただけると思います!

旧ユーザーインターフェースに愛着のあるユーザーもいらっしゃるかと思いますので、期間限定で旧インターフェースも利用できるようにしています。 ただし、今後のバージョンでは旧インターフェースを廃止して Sakura UI に入れ替える予定ですので、足りない機能があると思われる場合は YouTrack で課題を作成してください。

クラウドに向けて... 3、2、1、発射!

TeamCity のインストール環境をクラウドに移行するユーザーが続々と増えていることを踏まえ、クラウド機能をさらに前進させています。

より簡単で安全な AWS 資格情報管理

一時的で短期間有効な AWS キーを発行して安全な方法でビルドに公開する、新しい AWS 資格情報管理システムを実装しました。

AWS EC2 ベースのビルドエージェントへのターミナルアクセス

JetBrains では、すべての開発チームがデリバリーパイプラインを完全に把握し、制御できる必要があると考えています。 クラウド CI/CD のデバッグのエクスペリエンスを改善するため、クラウドプロバイダーの管理コンソールにアクセスしたり、忙しい DevOps チームにネットワークリストや SSH キーペアのセットアップを依頼したりせずに、AWS EC2 ベースのビルドエージェントへの安全なターミナルセッションを TeamCity UI から直接起動できる機能を追加しました。

この機能を使用できるかどうかは、「Open an interactive session to the agent(エージェントへの対話型セッションを起動)」権限によって制御されます。この権限はデフォルトではサーバー管理者のみに有効化されていますが、必要に応じて他のユーザーに割り当てることも可能です。

クラウドエージェントのメンテナンスモード

クラウドインスタンスで実行する CI/CD パイプラインの問題をデバッグする必要に迫られた経験のある方は、この作業が面倒になりがちなことをご存知でしょう。 目的のビルドエージェントの特定と起動に時間と労力が要求されるだけでなく、新しいビルドが作業途中で起動しないようにする必要があります。

ここで活用できるのが、メンテナンスモードです。 このモードでは、TeamCity がビルド完了後に自動的にクラウドエージェントを終了せず、新しいビルドの実行に割り当てられることがないため、トラブルシューティングが可能になります。

マルチサーバーセットアップでのクラウドインスタンスの管理

TeamCity 2022.10 からは TeamCity のセカンダリノードでクラウドインスタンスの起動と停止を行えるようになったため、プライマリサーバーのメンテナンス時にクラウドベースの CI が止まることはなくなりました。

VCS 統合の強化

Perforce

TeamCity 2022.10 では、Perforce ツールとの統合に関する以下の 2 つの項目が改善されています。

  • Perforce Shelve Trigger がシェルブされた変更リストが非デフォルトストリームに関連していることを認識し、それに基づいてビルドを実行できるようになりました。
  • TeamCity が Perforce Helix Swarm にレビューのある変更リストを検出し、個々のレビューページと変更ページへのリンクを Build Overview ページと Changes ページにそれぞれ追加するようになりました。

OAuth 接続でのリフレッシュトークンのサポート

TeamCity 2022.10 では、GitLab、Bitbucket Cloud、および Azure DevOps と連携する際に、短期間有効な OAuth トークンが使用されるようになりました。これらのサービスに使うアクセストークンを手動で生成することなく、VCS ルートを作成できます。

セキュリティのレベルアップ

初期状態での HTTPS のサポート

初期状態での HTTPS のサポート

現在、CI/CD パイプラインのセキュリティの重要性がこれまで以上に高まっています。 バージョン 2022.10 では、TeamCity サーバーの HTTPS を簡単に有効にできるようになりました。 PEM 形式の HTTPS 証明書または証明書チェーンをアップロードするだけで、後は TeamCity が処理します。

制限付きアクセストークン

ある特定のプロジェクトに対して表示のみのアクセスを許可するなど、権限を制限した自分のアカウントを他のユーザーが使用して TeamCity にログインできるようにする一時アクセストークンを作成できるようになりました。 他のユーザーにパイプラインのデバッグを支援してもらったり、デモを作成したりする場合に役立ちます。

Google アカウントによる認証

より多様なワークフローに対応し、TeamCity をよりスムーズにお使いいただけるよう、Google アカウントを使用した認証をサポートしました。 Google でログインする場合、TeamCity は瞬時に Google メールアドレスと既存の TeamCity ユーザーを照合し、パスワードの入力を求めることなくそのユーザーをログインさせることができます。 また、指定ドメインに属するメールアドレスを持つ新しいメンバーがチームに参加した場合に新しいプロファイルを自動的に作成することもできます。

ディスク領域クリーンアップの改善

空きディスク領域のビルド機能では、アーティファクトのサイズを追跡し、アーティファクト依存関係を解決するために必要なディスク領域を自動的に計算できるようになりました。 これにより、ビルド中にダウンロードされるアーティファクトのサイズを知る必要がなくなり、ビルドプロセス自体に必要なディスク容量を指定するだけでよくなったため、ビルド機能をより単純明快に使用できるようになります。

個人用ビルドの昇格

TeamCity 2022.10 より、個人用ビルドを昇格できるようになりました。 昇格後にトリガーされるビルドも、個人用ビルドになります。

以上は、TeamCity 2022.10 の最も重要なハイライトに過ぎません。 変更内容の完全な一覧は、TeamCity ドキュメントをご覧ください。

TeamCity 2022.04

TeamCity 2022.04 に、プロジェクトのテスト速度を驚異的に向上する新しい並列テスト機能が導入されました。 新たに追加された強力なコード解析機能により、コードレビューの所要時間を短縮し、プロジェクトのメンテナンス性を高めることができます。 クラウドでビルドを実行するユーザー向けに、Amazon S3 と Amazon CloudFront との統合機能の改善や Cloud Profiles をプログラムで管理する新しいオプションが提供されています。 VCS 統合への多数の改善、新しい構成オプション、およびユーザーインターフェースへの多数の重要な更新が追加されています。

並列テストによる驚異的な速度向上

TeamCity が複数のビルドエージェント間でインテリジェントにテストを分散することで、テスト実行を並列化できるようになりました。総合的な所要時間が最小限に抑えられます。 他の CI/CD ソリューションとは異なり、この機能は最後の実行だけでなく、それまでに実行されたすべてのテストも考慮するようになっています。 そのため、コードのリファクタリングやテストの中断など、プロジェクトに最適と思われる作業を並列化への悪影響やパイプラインの停止を恐れることなく自由に行うことが可能です。

並列テストによって、TeamCity の開発とテストの手法が大きく変化しました。 当社独自の統合テストでは実行時間が 4 時間から約 20 分に短縮され、10 倍以上の速さで完了するようになりました。

テスト実行の並列化は、さまざまな方法で実現できます。 最も簡単な方法は、Maven、Gradle、または .NET ビルドランナーを使用する方法です。これらのビルドランナーは初期状態でこの機能をサポートしているためです。 その他のビルドランナーやカスタムビルドスクリプトについては、TeamCity の特別な指示ファイルにテストを並行化する最適な方法を保存できるため、ユーザー自身が並列テストをセットアップすることができます。

組み込みのコード品質インスペクションでコードを改善

組み込みのコード品質インスペクションでコードを改善

TeamCity にはバグの解消とソフトウェア品質の改善に寄与する機能が多数備わっていますが、さらなる新機能が追加されました! バージョン 2022.04 からは高度なコード品質インスペクションを有効にし、JetBrains Qodana をベースとした新しいさまざまなアクションを実行できます。

  • 静的解析チェックの実行
  • コード内の重複箇所の検索
  • コード品質の経時的な変化の追跡など

ビルドパイプラインにコードインスペクションを追加することで、コードレビューの所要時間を短縮し、プロジェクトのメンテナンス性を確保しながら、各チームメンバーの作業効率アップを支援することができます。 We welcome you to check out a live demo.

レベルアップしたクラウド統合

世界的にクラウドへの移行が急速に進んでおり、JetBrains のお客様も続々とこの流れに乗っています。 TeamCity 2022.04 では、Amazon Web Services との統合機能と新しい構成オプションの追加により、クラウドエクスペリエンスをさらに向上させました。

Amazon S3 へのビルドアーティファクトの移行

TeamCity は常に Amazon EC2 や Amazon S3 との強力な統合機能を備えてきました。プロジェクトの規模や複雑さに左右されることなくビルドインフラストラクチャを自由にスケーリングすることが可能です。 バージョン 2022.04 では、Amazon S3 に新しいビルドアーティファクトを保管できるだけでなく、TeamCity のローカルストレージから Amazon S3 に既存のアーティファクトを移動することもできます。 これは、自己ホスティング型のセットアップからクラウドプラットフォームへの移行を始めようとしており、最初から最大限に活用したいと考えているチームに特に役立ちます。

Amazon CloudFront からのビルドアーティファクトのダウンロード

Amazon CloudFront からのビルドアーティファクトのダウンロード

Amazon S3 に保管されているビルドアーティファクトを扱う際には、ユーザーと S3 バケットがあるリージョンとの地理的な距離に応じて、遅延や高コストが発生する場合があります。 このようなコストを削減できるように、TeamCity 2022.04 ではAmazon CloudFront のネイティブサポートを追加し、AWS が提供する最寄りのエッジロケーションにキャッシュされているアーティファクトを扱えるようにしました。 これは、ビルドエージェント、ウェブユーザー、API リクエストなど、すべてのレベルで機能するため、開発プロセスを大幅に加速できる可能性があります。

プロジェクトレベルでの新しい自動スケール管理方法

ビルド、テスト、およびデプロイをいつでも行えるようにするには、CI/CD 構成をプロジェクトのコードベースとともに保存するのが最適な方法です。 クラウド内でソフトウェアをより柔軟にビルドできるように、TeamCity 2022.04 では Kotlin DSL を拡張し、各プロジェクトで独自のクラウドプロファイル構成を使用できるオプションを追加しました。

デプロイワークフローの強化

以前ロードマップで発表したように、デプロイ分野のさらなる開発に取り掛かっています。その最初のステップとして、ビルド承認機能をリリースしています。 トリガー直後に開始せず、承認チームの全メンバーがゴーサインを出すまでキューに留まるビルド構成を作成できるようになりました。 この機能は、開発者のプロダクション環境へのアクセスを制限せずに、デプロイ手順により高レベルな制御を実装する必要のある高度なチームに特に役立ちます。

皆様のご意見を募集しています! デプロイに関する機能リクエストがございましたら、YouTrack プロジェクトでお気軽にご提案ください。

よりスマートになった VCS 統合

Space のマージリクエスト

マージリクエストのサポートを追加し、JetBrains Space との統合機能を改善し続けています。 マージリクエストを作成する際に、TeamCity がそのステータスを Space の各マージリクエストタイムラインに公開するようになりました。

GitLab の課題

サポート対象の課題トラッカーに GitLab が追加されました。 この機能の動作は直感的です。コミットメッセージで課題 ID がメンションされると、TeamCity によって GitLab の対応する課題へのリンクが自動的に追加され、その課題に関する情報が表示されます。

ビルドレポートのキュー登録

従来の Commit Status Publisher ビルド機能は、TeamCity が実際にビルドを起動するまでバージョン管理システムに情報を送信していませんでした。また、コミットが行われてからかなり時間が経つまで送信されない傾向にありました。 新しいバージョンからは TeamCity がそれぞれのビルドがキューに追加された直後にコミットステータスを更新するようになったため、最新の情報を得られるようになりました。 この機能は、GitHub、GitLab、Space、Bitbucket、Azure DevOps など、サポートされているすべての VCS サービスで動作します。

リビジョン指定によるカスタムビルドの実行

リビジョン指定によるカスタムビルドの実行

カスタムビルドを実行する際に、ビルド構成が認識する変更リストに必ずしも属していないリビジョンを正確に指定できるようになりました。 これにより、過去のビルドの複製、古いバージョンのデプロイ、新しいビルド構成のデバッグなど、その他多くの状況でより柔軟に対応できるようになります。

フィーチャーブランチの追加制御

フィーチャーブランチの追加制御

TeamCity では以前からビルド構成で同時に実行するビルドの数を制限することができました。 バージョン 2022.04 からはリソースの割り当てを改善し、この制限をブランチレベルで設定できるようになりました。 メインブランチには必要な数のビルドエージェントを占有できるビルドを無限に使用する一方で、一度に 1 つのビルドのみを実行するようにフィーチャーブランチを制限する場合などに利用できます。

内外のセキュリティ事項

Log4J と Log4Shell

TeamCity が Log4Shell の脆弱性(CVE-2021-44228)による影響を受けていないにも関わらず、一部のセキュリティスキャナーが TeamCity に使用されている Log4J フレームワークの実際のバージョン番号をチェックすることなく脆弱性があると誤って報告していました。 スキャナーによる誤検出の報告を回避するため、Log4J を最新バージョンにアップグレードしました。

Spring と Spring4Shell

Log4Shell と同様に、Spring4Shell の脆弱性(CVE-2022-22965)も TeamCity には影響を及ぼしていませんが、 セキュリティスキャナーによる誤検出の報告を回避するため、TeamCity で使用されている Spring フレームワークを最新バージョンにアップグレードしました。

Sakura UI との調和

新しい Sakura UI は、従来の TeamCity UI に機能面でますます近づいています。 バージョン 2022.04 では Agent Pools(エージェントプール)と Changes(変更)ページを実装し直し、Sakura UI の総合的なパフォーマンスを大幅に改善しました。 これで、TeamCity 2022.10 からこの UI をデフォルトオプションにするという目標をもう少しで達成できそうです。 ご期待ください! 

これらは TeamCity に対して行われた機能改善の一部に過ぎません。 バージョン 2022.04 へのアップグレード手順と完全な変更点の一覧については、TeamCity のドキュメントをご覧ください。