TeamCity 2020.2 の新機能

TeamCity 2020.2 ではプライバシーを考慮した外部サービス経由のログインを導入し、新しい Python ビルドランナーを採用し、Bitbucket Cloud と JetBrains Space を連携させています。 また、ビルドエージェントを占有することなく外部サービス内でビルドを実行可能で、マルチノード環境のセカンダリサーバーでプロジェクトを編集可能にします。 管理者はサーバーのクリーンアップスケジュールを調整し、外部ストレージのディスク使用量を確認できるようになりました。 また、新しい Sakura UI には複数の機能改善が施されています。

GitHub、GitLab、Bitbucket アカウントとの連携

GitHub、GitLab、Bitbucket アカウントとの連携

私たちは継続的インテグレーションをあらゆる開発者の日常業務に取り込んでいただきたいと考えています。 より多様なワークフローに対応し、TeamCity をよりスムーズにお使いいただけるよう、外部サービス(GitHub、GitLab、Bitbucket)を使用した認証をサポートしました。

TeamCity 2020.2 は外部 OAuth アカウントと TeamCity ユーザーを即座に照合し、パスワードを入力することなくプロジェクトに取り組めるようにします。 GitHub の組織や GitLab のグループなどのサポート対象サービスのユーザーディレクトリ機能と連携し、新しいメンバーがチームに参加する際に新しいプロファイルを自動的に作成できます。

TeamCity 2020.2 は各種クラウドサービスのほか、オンプレミスにインストールされた GitHub(GitHub Enterprise)と GitLab(セルフホストの GitLab)もサポートしています。

Bitbucket Cloud のプルリクエストをサポート

バージョン 2020.2 ではプルリクエストをサポートし、Bitbucket Cloud との連携機能を強化しています。 Bitbucket Cloud リポジトリで作成されたプルリクエストを自動的に取得し、各々のビルドを実行するように TeamCity をセットアップできるようになりました。 Commit Status Publisher(コミットステータスパブリッシャー)機能と Automatic Merge(自動マージ)機能と組み合わせると素晴らしい効果を発揮し、ご愛用のツールを最も効率よく活用できるようになります。

Python ビルドランナー

Python が世界で 2 番目に人気の高いプログラミング言語になった現在、同言語のあらゆる最新機能と開発手法をサポートする継続的インテグレーションシステムが望まれています。 そのため、私たちは Python ビルドで TeamCity の能力とインテリジェンスを活用できるようにするまったく新しい Python ビルドランナーを作成しました。 この新しいビルドランナーはあらゆる OS で動作し、仮想環境をサポートし、Python 向けのあらゆる一般的なテストフレームワークとコードインスペクションツールと連携します。

Python ビルドとテストの結果は、他のすべての TeamCity ビルドランナーと同様に TeamCity の UI に報告されます。 変更を追跡し、失敗を分析し、調査を割り当て、使い慣れたその他すべての TeamCity の機能を使用できます。

Space との連携

JetBrains SpaceCommit Status Publisher 機能のサポート対象サービスに追加されました。 従来は自分の変更が悪影響を及ぼさないことを確認するには、TeamCity を起動して自分が行ったビルドの結果を探さなければなりませんでした。 この新たな連携により、Commit Status Publisher が自動的にビルドのステータスを Space に送信するようになり、それをプロジェクトの Commits ページで確認できるようになりました。

エージェントレスビルドステップでエージェントの能力を解放

CI/CD パイプラインが外部サービスを利用しており、ビルドエージェントが外部ジョブの終了待ちの状態で固まることがありますか? しかも、その外部ジョブが AWS などのクラウド内で実行されており、時間や資金を浪費していませんか? このような条件に当てはまる方は、TeamCity 2020.2 のエージェントレスビルドステップを気に入ることでしょう。 ビルドがエージェントレスモードで最後のステップを実行できるようになりました。これにより、ビルドエージェントが解放され、キュー内の他のタスクを実行できるようになりました。 TeamCity はエージェントレスビルドステップを標準のビルドとして表示し、ビルドステータスの追跡、ログの参照、履歴の表示を行えるようにします。

多数のサーバーを 統一された操作感で使用可能

規模の大きなお客様がこれまで以上に TeamCity を使用してビルドを実行するようになっているため、私たちはマルチサーバー対応を継続的に推進しています。 バージョン 2020.2 では、セカンダリサーバーがプライマリサーバーに 一歩近づき、プロジェクトレベルの設定を編集できるようになっています。 その結果、プライマリサーバーがメンテナンス中でもチームが新しいビルドをセットアップできるようになりました。

プロ管理者向けの高度な機能

外部ストレージのディスク使用量監視

外部ストレージのディスク使用量監視

アーティファクトを Amazon S3 などのクラウドに保存するユーザーが増加しつつあります。 2020.2 以降の TeamCity はローカルドライブだけでなく、リモートに存在するビルドのディスク使用量も表示します。

カスタマイズ可能なクリーンアップスケジュール

カスタマイズ可能なクリーンアップスケジュール

クリーンアップ機能がさらに強化されました。 cron に似た式を使用してスケジュールを調整し、毎週末や 1 日 2 回などのように定期的にサーバーのクリーンアップを起動できるようになりました。

Sakura UI: 機能とデザインの完璧な組み合わせ

私たちの優秀な UI チームが大いに尽力し、実験的な "Sakura" UI に機能を追加し、より多くのユースケースに対応できるようにしました。 TeamCity 2020.2 にはエンドユーザーのみならず、プラグイン開発を想定した素晴らしい機能が数多く搭載されています。

ビルド依存関係

ビルド依存関係

CI/CD 連携に不可欠な要件の一つには、ビルドの概況を把握する機能が挙げられます。このため、TeamCity 2020.2 ではこの部分に関して Build Dependencies(ビルド依存関係)ページに 2 つの重要な機能改善を加えています。

  • Timeline ビューに開始済みおよび終了済みのビルドだけでなく、キュー内のビルドも表示するようにしました。
  • Build Chain ビューにチェーン(現在のビルドに依存するすべてのビルド)内の「適切な」部分を表示するようにしました。

テスト履歴ページ

TeamCity 2020.2 では、Sakura UI にこれまで不足していた新しい Test History(テスト履歴)ページを追加しています。 この新しいページではテストに関する詳細な情報を取得し、傾向分析や調査履歴の参照などを行うことができます。

ビルドログの検索

ビルドログの検索

ユーザーから最も要望の多かった機能の一つであるビルドログ検索を実装しました。 これにより、ビルドログの閲覧、セットアップのデバッグ、ビルド中のイベントの把握がはるかに簡単になりました。

Sakura UI のプラグイン開発フレームワーク

TeamCity は常に拡張ポイントを提供し、開発者がその機能に基づいてビルドできるようにしてきました。 バージョン 2020.2 からは、ユーザーインターフェース用のプラグインを記述・統合するための新しい手段を提供しています。 詳細については、 TeamCity Technology Day の講演内容を確認してください。

Sakura UI: 機能とデザインの完璧な組み合わせ

新しく洗練された Build Queue(ビルドキュー)ページは非常に高速に動作し、必要なものを簡単に見つけることができます。 また、キュー内の各ビルドに対する変更をすばやく確認し、ビルドのトリガー元と実行箇所を把握し、推定開始時刻を取得し、その他すべてのビルド情報をすっきりとした便利な UI に表示することができます。 不要なビルドを選択してキューから除去したり、早めに完了する必要のあるビルドをリストの最上位に移動したりできます。

これらは TeamCity に対して行われた機能強化の一部に過ぎません。 バージョン 2020.2 での完全な変更点の一覧については、TeamCity のドキュメントをご覧ください。

TeamCity 2020.1の新機能

TeamCity 2019.2では新しいビルドのクリーンアップ管理やサーバーのパフォーマンスを監視するための優れた方法を提供します。 このバージョンはEC2の起動テンプレートをサポートし、ビルドチェーン定義用の新しいDSL構文を採用しています。 また、Gitパッチを使用して個人用ビルドを実行する簡単な方法を提供し、実験的なUIに多くの改善を加えています。

条件付きビルドステップで完全な汎用性を実現できます

条件付きビルドステップで完全な汎用性を実現

異なるプラットフォームで別々のコマンドラインスクリプトを実行したり、異なるブランチの変更を別々のステージングサーバーにデプロイしたりしたいと思ったことはありませんか? そのような操作を自由自在に実行できるようになりました! TeamCity 2020.1 ではconditions for your build steps(ビルドステップの条件)を指定し、条件を満たした場合のみ実行することができます。

Kubernetes クラスターで ビルドをスケーラブルに

Kubernetes クラスター規模で ビルド

クラスター環境でシンプルで再現可能なデプロイを初期状態で行えるようになりました。 バージョン 2020.1 を使用すると、Kubernetes 上でスケーラブルな CI/CD アーキテクチャを実装できます。ビルドエージェントは必要な時に自動的に起動され、ジョブを実行し、ビルド完了後に削除されます。

複数サーバーの使用

複数サーバーの使用

複数の TeamCity サーバーを連携させると、CI/CD のパフォーマンスと信頼性をまったく新しいレベルに高めることができます。 セカンダリサーバーにおける、トリガー処理能力を追加し、および、UI でユーザーレベルの操作を行えるようにすることで、クラスター環境における TeamCity の動作を改善しました。

トリガーの処理

大規模なソフトウェアを構築・デプロイする環境では VCS の変更、パッケージの更新、新規アーティファクトによって発動するトリガーを数千件とは言わないまでも数百件程度は使っています。 このような環境において、最高のパフォーマンスを達成できるよう、セカンダリサーバーがトリガー処理に参加し、プライマリサーバーの負荷を軽減できるようにしました。

ユーザーレベルの操作

セカンダリサーバーの UI を改良し、ユーザープロフィールの変更、プロジェクトや構成の表示変更、ビルドエージェントの管理などを行えるようにしました。

クラウドビルドエージェントの配布を容易化

TeamCity 2020.1 では、pre-packaged agent distribution(パッケージ済みのエージェント配布物)を TeamCity サーバーからダウンロードできるオプションが新たに追加されています。 パッケージ済みのビルドエージェントは TeamCity サーバーに接続する際に自身をアップデートする必要はありません。そのため、クラウドイメージの作成と更新がより高速かつ簡単になりました。

通知をレベルアップ

通知をレベルアップ

TeamCity の通知機能をさらに強化するため、プロジェクト管理者がチーム全体に自動通知を送信する設定を行える新しいビルド機能を実装しました。 新しい通知はビルド構成レベルで設定できるため、Kotlin DSL を使用して編集、再利用、共有することができます。

新しい Slack 通知機能 を使うと、チームメンバーはビルドステータスに関する通知を Slack 内で直接受け取ることができます。

統合機能

Jira Software Cloud

Jira Software Cloud

TeamCity は、コミットメッセージ内の課題コードを対応する Jira の課題へのリンクに自動置換する優れた Jira 統合機能を長らく提供してきました。 さらに多様なワークフローに対応するため、この統合機能を拡張してビルドやデプロイのステータスを Jira Software Cloud に送信するようにしました。 これにより、課題トラッカーで直接 CI/CD パイプラインやリリース履歴を調査し、失敗したビルドに関連する課題を識別できるようになりました。

Azure DevOps

Azure DevOps

Pull Requests ビルド機能がサポートする Git ホスティングサービスを増やし、Azure DevOps プルリクエストを新たにサポートしました。 この新しいオプションを使用すると、GitHub や GitLab の場合と同様に Azure DevOps のプルリクエストブランチでビルドを自動実行できます。

新しい Sakura UI

新しい Sakura UI

ほとんどの開発者は CI/CD を毎日利用しており、私たちはその利便性を向上させたいと考えています。 そのため、私たちは高速で使いやすい新たな UI を追究し続け、新機能をより早く提供するようにしています。

従来の TeamCity のユースケースにより多く対応するため、バージョン 2020.1 の実験的 UI では Agents ページと Projects ページが刷新され、プロジェクトのサイドバーを調整できるようになっています。

バージョン2020.1での完全な変更点の一覧については、TeamCityのドキュメントをご覧ください。

TeamCity2019.2の新機能

TeamCity 2019.2では新しいビルドのクリーンアップ管理やサーバーのパフォーマンスを監視するための優れた方法を提供します。 このバージョンはEC2の起動テンプレートをサポートし、ビルドチェーン定義用の新しいDSL構文を採用しています。 また、Gitパッチを使用して個人用ビルドを実行する簡単な方法を提供し、実験的なUIに多くの改善を加えています。

クリーンアップの強化

TeamCityの消去ルール

TeamCity 2019.2では、ビルドによって生成される履歴データとアーティファクトを管理するための新しい方法が実装されています。 また、クリーンアップエンジンが改良され、さまざまなクリーンアップポリシーを設定できるようになりました。例えば、特定ブランチや特定タグのビルドをすべて残すことができます。

この新しいクリーンアップルールは、特に多数のプロジェクトを抱える企業や開発でフィーチャーブランチを使用しているチームに役立つと思います。

CI環境の俯瞰

Prometheus形式のTeamCityメトリクス

プロはミッションクリティカルなシステムの動作とパフォーマンスの監視に役立つツールを愛用しています。 2019.2よりTeamCityはHTTPエンドポイントを介してメトリクスを公開するようになりました。これにより、Prometheusによりメトリクスをスクレイピングし、それをPrometheusのウェブインターフェースやGrafanaのダッシュボードで視覚化することができます。

このようなメトリクスにはサーバーのパフォーマンス情報のほか、エージェント、プロジェクト、ビルド構成に関するさまざまな詳細情報があります。

さらなる拡張性の向上

多くの大企業にとって、高性能なCIは自社のワークフローにとって必要不可欠なものです。 TeamCityのマルチノード環境におけるセットアップがさらに進化しました。ビルドキューへのビルドの追加、ビルドの問題や調査の管理、その他ユーザーレベルのアクションをセカンダリサーバで実行できるようにしました。

実験的UIによるさらなる生産性の向上

実験的UIの新しいビルドページ

多くの場合、開発者は一日に何度もTeamCityを開きます。そのため、当社はプロジェクトの規模や複雑さによらず、TeamCityを開発者が必要なものを素早く見つけられるような場所にしたいと考えています。 このバージョンではTeamCity UIのロードマップに従い、ビルド履歴の参照、問題の調査、設定ミスやビルドチェーン内のボトルネックの検出などを簡単に行える方法を提供する新しいビルドページを導入しています。

実験的UIをお試しください。その新しい外観には自信があります。

EC2の起動テンプレートに対応。 新たなレベルに到達したビルド

EC2起動テンプレートのサポート

当社はお客様が今日のワークフローで必要とするものすべてを実装したいと考えています。 バージョン2019.2では新たにEC2の起動テンプレート(launch template)に対応し、ご自身のAWSアカウントから起動パラメータを使用してクラウドビルドエージェントを実行できるようになりました。 起動テンプレートを使用すれば、ビルドエージェントでの新しいソフトウェアのアップデートやインストールが非常に単純明快になります。もうTeamCityプロジェクトの構成を変更する必要はありません。

DSLのレベルアップ

ビルドチェーンを簡単にビルド

クリックに別れを告げ、スクリプトを迎えましょう。 Kotlin DSLがビルドチェーンを定義するための非常に単純明快な構文を提供するようになりました。 連続ビルドや並行ビルドのセットアップ、失敗条件や依存物の設定などをすべてコードで保存することができます。

多数のパラメータを 1つのテンプレートに定義できます。

プロジェクトの構成がより簡単になりました。 バージョン2019.2以降は、Kotlin DSLの構成にカスタムパラメータが含まれる場合があります。このパラメータはUIでプロジェクトをインポートする際に後から定義できます。

より多くの実行を、 少ない待ち時間で。 Gitパッチを使ってビルドを開始できます。

Gitパッチを作成し、それをTeamCityにアップロードして個人用ビルドを実行すれば、ブランチの作成やコミットを行うことなく変更内容を素早くテストできます。

バージョン2019.2での完全な変更点の一覧については、TeamCityのドキュメントをご覧ください。