TeamCity 2019.1 の新機能
新しい TeamCity ドキュメント Web サイト
TeamCity 2019.1 のドキュメントを刷新し、より良いユーザーエクスペリエンスを実現するとともに、すべての会社製品のドキュメント全体で共通のルックアンドフィールを確保しました。
主な製品ドキュメントは、 新しいドキュメント Web サイトからアクセスできます。
プラグイン開発ヘルプは 別の場所(英語)にあり、そのソースファイルはパブリック GitHub リポジトリ(英語)に移動されているため、コミュニティはそれに貢献できます。
以前のバージョンのドキュメントを参照してください。
改良された実験的な TeamCity UI
新しい TeamCity バージョンには、製品の使用感を向上させることを目的とした改良版 UI が含まれています。

新しいサイドバー: すべてのプロジェクトに簡単にアクセスして検索したり、サイドバーから構成を構築したり、ビルド構成またはプロジェクト全体をお気に入りとしてタグ付けしたりして、サイドバーの上部に表示できます。 新しい変更、ビルドステータス、新しいテスト、ビルドの実行中: すべてが表示されるようになりました。
再構築された プロジェクトホーム ページでは、ビルド構成をダッシュボード形式で表示できます。 各構成には独自のカードがあり、最新のビルドが最大 14 個までヒストグラムで表示されます。 ステータス、ビルド時間、キュー内の時間も表示されます。 個々のカードをクリックすると、このビルド構成の概要が表示されます。
刷新された ブランチ タブ: ブランチはカテゴリに分割され、必要に応じて展開したり折りたたんだりできます。 ブランチの概要を把握し、便利に閲覧できるようになります。

展開可能な ビルド行: TeamCity では、ページ上にビルドに関する情報をより多く表示できるようになりました。特定のビルドの詳細が必要な場合は、クリックすると行が展開され、さらに情報を確認できます。
新しい UI は 実験的 段階にあり、画面の右上隅にあるアイコンを使用して切り替えることができます。 プロファイルには、実験的な UI をデフォルトで有効にする新しい設定もあります。 新しい UI ではすべての機能がサポートされているわけではないため、必要に応じて従来の TeamCity スタイルに簡単に戻せます。
GitLab のサポート
TamCity 2019.1 は GitLab をサポートします。 接続を GitLab.com および GitLab CE/EE に作成できるため、新しいプロジェクトやビルド構成の作成時に、事前定義済みの GitLab リポジトリを簡単に選択できます。
接続中に GitLab で認証できるようにするには、GitLab に OAuth アプリケーションを登録し、 API および read_repository スコープを指定してシークレットとアプリケーション ID を生成します。
新しい接続を追加するときに、シークレットとアプリケーション ID を GitLab サーバー URL とともに入力します。

GitLab マージリクエストのサポート
GitLab マージリクエストのサポートも追加されたため、各マージリクエストでビルドを自動実行し、ビルドが成功した場合は自動的に承認するように TeamCity を設定できます。
Bitbucket サーバーのプルリクエストのサポート
プルリクエストビルド機能で、Bitbucket サーバーに作成されたプルリクエストを検出できるようになりました。
Bitbucket VCS ルートを追加するには、 Bitbucket サーバー を VSC ホスティングタイプとして選択し、接続パラメーターを構成します:
認証タイプ: VCS ルート認証情報またはユーザー名 / パスワード
ゴールによるろ過 PR ブランチ
Bitbucket サーバーのベース URL

TeamCity マルチノードセットアップの改善
TeamCity の拡張性を向上させるため、クラスターを設定できる機能に取り組んでいます。クラスターでは、メインノードがさまざまな責任を他のノードに分散し、アップグレード、ライセンス、診断、サーバー構成などのタスクも処理します。 このようなマルチノード設定では、すべてのセカンダリノードが同一で、すべてのタスクを相互に置き換え可能な方法で実行できることを意味します。
このバージョンでは、セカンダリノードがすでに実行できるタスクに加えて、セカンダリノードに "ビルドライフサイクルの処理" という責任を割り当てることができます。これにより、エージェントから送信されるビルドメッセージの処理など、ビルド関連タスクからメインサーバーが解放され、エージェント数を大幅に増やすことができます。
その結果、単一のセカンダリノードを開始して複数の責任を割り当てることも、複数のセカンダリノード間でこれらの責任を分散することもできます:
VCS の変更収集
ビルド処理の実行
読み取り専用バックアップノードとして機能: 読み取り専用モードでユーザーインターフェースを提供する
ノード上のキャッシュされた構成ファイル
マルチノードセットアップでは、TeamCity データディレクトリがネットワーク経由でセカンダリノード間で共有されます。 セカンダリノードが起動すると、共有データディレクトリにある構成ファイルを読み取ります。 数千のプロジェクトとビルド構成を含む大規模な設定では、ネットワークストレージから多数のファイルをダウンロードするのに時間がかかる場合があります。
TeamCity 2019.1 では、ノードのローカルデータディレクトリに保存される構成ファイルのキャッシングを作成することで、この操作を最適化しました。 ファイルは最初のノード起動時にキャッシングされ、その後ランタイムで更新されるため、次回以降の起動が速くなります。
Amazon スポットインスタンスの改善
AWS Spot Fleet リクエスト
イメージを実行するように スポットフリート (インスタンスのコレクション) を設定できるようになりました。これにより、常に必要十分な数のインスタンスだけを利用してコストを削減できます。
スポットフリートの割り当て戦略を設定するには、AWS Management コンソールを開いて EC2 | スポットリクエスト | スポットインスタンスをリクエスト に移動します。 ここでは、戦略の選択、ターゲット容量の設定、タグの追加などができます。 使用可能なパラメーターの詳細については、 Spot Fleet Requests を参照してください。 完了したら、構成を JSON ファイルとしてダウンロードします。 この構成を TeamCity の Amazon イメージ設定に追加できるようになりました。 スポットインスタンス Fleet を ソース ドロップダウンリストで選択し、JSON 構成を下のテキストエリアに挿入して、新しいイメージ構成を保存します。

エージェント | クラウド タブで、実行中のすべてのインスタンスの状態を監視できます。
その他の改善
EC2 サービスがインスタンスを管理する方法に従って、 スポットインスタンスの「最大価格」値をオプションにし、オンデマンドインスタンスとまったく同じように起動できるようにしました。
ビルドアーティファクト公開オプション
ビルドアーティファクトには、配布パッケージ、ログファイル、レポートなどが含まれる場合があり、多くのストレージ容量を消費します。 ビルドが頻繁に失敗する場合、ディスク容量を節約するために、アーティファクトの公開を成功したビルドのみに制限したいことがあります。
それ以外の場合、ビルドが中断されていてもアーティファクトを調査する必要がある場合があります。
これらすべてのシナリオをサポートするために、ビルド構成の一般設定にアーティファクト公開用の二つの新しいオプションを追加しました。
これで、アーティファクトをいつ公開するかを選択できます。
ビルドが失敗しても (デフォルト): 以前の TeamCity バージョンと同様に、以前のステップがすべて完了していれば、成功したかどうかにかかわらず、ビルドの最後のステップでアーティファクトが公開されます。 'stop' コマンドが発行されると、アーティファクトは公開されません。
ビルドステータスが成功した場合のみ (新規): 前のステップがすべて正常に完了した場合、ビルドの最後のステップでアーティファクトが公開されます。 TeamCity はアーティファクトを公開する前に、サーバー上の現在のビルドステータスを確認します。
build stop コマンドが発行された場合でも常に (新規): 中断されたビルド (たとえば、「stop」コマンドが発行された後や、ビルド失敗条件で指定されたタイムアウト後) も含め、すべてのビルドのアーティファクトが公開されます。
Go 言語のサポート
TeamCity は Go 言語をサポートするようになりました:
Go プロジェクトをビルドするには:
Go コンパイラーがエージェントにインストールされていることを確認してください。
' Golang' ビルド機能をビルド構成に追加してください。
TeamCity UI で Go テストを表示するには、 -json フラグを コマンドライン ビルドランナーのスクリプトに追加して実行します: go test -json 。または、 env.GOFLAGS = -json パラメーターをビルド構成に追加します。

リビジョンを同期せずにスナップショット依存関係を使用
TeamCity のビルドチェーンでは、スナップショット依存関係を介してリンクされたすべてのビルドが、ソースコードの同期されたリビジョンを使用しますが、場合によっては望ましくないことがあります。
このバージョンでは、たとえば古いビルドをデプロイビルド構成に昇格する場合などに、 リビジョン同期を強制 オプションを使用して、スナップショット依存関係でリビジョン同期を無効化できます。 ビルドは最新のデプロイスクリプトを使用して実行されます。

ビルド構成の VCS 用ブランチフィルター
ビルドトリガーやテストの詳細のフィルターと同様に、ビルド構成の バージョン管理設定にブランチフィルターを追加しました。 以前の TeamCity バージョンでは、VCS 設定でデフォルトブランチのビルドのみを無効化できましたが、ブランチフィルターではより柔軟なアプローチを使用できます。 ブランチをフィルターするには、 ブランチの設定で説明されている構文を使用します。
VCS ブランチフィルターは他のブランチフィルターの前に適用され、カスタムビルドダイアログに表示されるブランチ、トリガに表示されるブランチ、スナップショットの依存関係からの変更を制限します。
すべてのセッションからログアウト
ユーザーのパスワードが漏えいし、TeamCity サーバーで組み込み認証が有効化されている場合、ユーザーパスワードを変更しても、現在進行中のすべてのセッションからユーザーがログアウトされるわけではありません。これは潜在的なセキュリティリスクです。
ユーザープロファイルに新しいオプション すべてのセッションからログアウト が追加され、現在のセッションを含め、対象ユーザーが設定されたすべてのユーザーセッションを TeamCity が強制的に無効化するようになりました。 管理者アカウントにも、ユーザーをすべてのセッションから強制的にログアウトさせるオプションがあります。 対応するオプションを使用して、 管理 | 認証 ページですべてのユーザーをログオフすることもできます。
トークンベース認証
資格情報を使用した基本認証に加えて、TeamCity は永続アクセストークンに基づく認証をサポートするようになりました。 トークンを使用すると、スクリプト内でユーザーログインとパスワードを公開する必要がありません。 トークンは REST API 認証にも役立ちます。
認証 ページの詳細モードで、Token-Based Authentication モジュールを有効化/無効化できます:

TeamCity-YouTrack 統合における認証用の永続トークン
TeamCity と YouTrack の統合を使用している場合、ログイン/パスワード認証は非推奨で、まもなく YouTrack でサポートされなくなることに注意してください。
TeamCity-YouTrack 統合は、REST API 呼び出しでのトークンベース認可をサポートするようになりました。 トークンを取得し、 プロジェクト設定 | 課題トラッカー ページの課題トラッカーへの接続設定で指定することをお勧めします。
サービスメッセージによるビルドのキャンセル
スクリプトからビルドをキャンセルする必要がある場合、たとえば環境のためにビルドを正常に続行できない場合や、サブプロセスからビルドをキャンセルする必要がある場合は、ビルド ID、サーバー URL、認証パラメーター (ユーザー名とパスワード) をスクリプトに渡して TeamCity REST API 経由で行うことができます。
TeamCity では、サービスメッセージを使用するより洗練された方法が提供されるようになりました。ビルドスクリプトに、ビルドをキャンセルするよう TeamCity に指示する行を追加するだけです。 必要に応じて、キャンセル後にビルドをキューに再度追加できます:
TeamCity サービスメッセージについて続きを読む。
エージェントのより高速なアップグレード
以前は、ビルドエージェントはサーバーのアップグレード直後に利用可能なすべてのツールをサーバーからダウンロードしていたため、サーバーの負荷が大幅に低下し、速度が低下する可能性がありました。 サーバーへのエージェントの要求の影響を減らし、エージェントのアップグレードをスピードアップするために、エージェントはこれらのツールを要求する最初のビルドを開始するときにのみサーバーからツールをダウンロードするようになりました。 ダウンロードされたツールはエージェントに保存されるため、ビルドはそれらを再度ダウンロードすることに時間を費やすことはありません。
エージェント上のすべてのビルド用の個別の Maven アーティファクトリポジトリ
Maven の ローカルアーティファクトリポジトリ設定の選択を変更し、エージェントによって実行されるすべてのビルドに対して個別のリポジトリを作成するオプションを追加しました。
変更点は次のとおりです。
古いオプション | 新しいオプション | 説明 |
|---|---|---|
- | エージェントごと (デフォルト) | エージェントによって実行されるすべてのビルドによって生成されたアーティファクトをエージェントのシステムディレクトリに格納するには、別のリポジトリを使用します。 |
有効化済み: 'このビルド構成に独自のローカルリポジトリを使用する' | ビルド構成ごと | 現在のビルド構成のすべてのビルドによって生成されたアーティファクトを格納するために別のリポジトリを使用します。 |
無効化済み: 'このビルド構成に独自のローカルリポジトリを使用する' | Maven のデフォルト | デフォルトの Maven リポジトリの場所を使用します。 リポジトリは、すべてのビルド構成とマシン上のすべてのエージェント間で共有されます。 |
その他の改善
ビルド構成に 'Docker レジストリ接続' 機能が追加された場合、TeamCity サーバーはインストール済み Docker に対するエージェント要件を自動的に追加するため、ビルドは互換性のあるエージェントでのみ実行されます。
このバージョンから、TeamCity は関連するランナーで Visual Studio 2019 をサポートします: Visual Studio(sln)、 MSBuild、 Visual Studio テスト、 インスペクション(ReSharper)、 重複ファインダー(ReSharper)。
Investigations Auto Assigner に新しいオプション '二度目の失敗時' が追加され、不安定なテスト/問題へのユーザー代入を防止できます。 失敗が二度連続で繰り返された場合にのみ、ユーザーに失敗の調査が割り当てられます。
ビルド機能に基づいてエージェント要件を設定するための新しい API。
プルリクエストへの以前の GitHub プルリクエストプラグイン。
サーバーの起動パフォーマンスが向上しました。
自分の調査 ページに現在実行中のビルドの失敗が表示されます。
ビルドランナーは .NET フレームワーク 4.8 をサポートします。
既知の課題
.NET CLI を使用して NuGet コマンドを使用して資格情報を渡そうとするビルドの実行時に、以下のいずれかのエラーが表示されることがあります。
.NET Core SDK 2.x がインストールされているものの、そのバージョンが 2.1.400 より前の場合:
"ファイルまたはアセンブリ 'System.Runtime, バージョン=\<バージョン\>, カルチャ=neutral, PublicKeyToken=\<鍵\>、またはその依存関係のいずれかを読み込めませんでした。 指定されたファイルが見つかりません。"サーバーに .NET Core SDK 3.0 のみがインストールされている場合:
"エージェントに dotnet バージョン 3.0 のみがインストールされている場合、パス \<パス\> にプラグインが見つかりませんでした。"
これらの問題を解決するには、現在の SDK バージョンに追加して .NET Core SDK 1.x または 2.1.400 以降をインストールすることをお勧めします。
Docker イメージとプロセス分離機能を備えた Windows Server 2019 を使用すると、ビルドエージェントの起動に失敗する場合があります。 この問題を回避するには、Docker/Podman コンテナーに
Hyper-V分離機能を使用してください。docker run --isolation=hyperv ... # or podman run --isolation=hyperv ...