TeamCity + GitLab による継続的インテグレーション

柔軟であらゆるワークフローに順応可能な TeamCity には、GitLab.com、GitLab Enterprise Edition、および GitLab Community Edition に対応した一流の統合サポートを提供する強力な CI ツールが備わっています。

他では失敗する規模でのビルド

プロジェクトの規模と複雑度が高まるにつれ、GitLab 組み込みの CI 機能のみを使って効率的なデリバリープロセスを維持するのはますます困難になります。そこで TeamCity の出番です!TeamCity は決まったワークフローを強制せず、あらゆる規模のチームに最大限の柔軟性と構成能力を提供する汎用の CI/CD ソリューションです。

マルチプラットフォーム、マルチクラウド、多言語

TeamCity は Linux、Windows、および macOS に対応しており、ユーザーが所有するハードウェア、好みのクラウドホスティングインフラストラクチャ、Kubernetes クラスター、またはこれらが混在する環境で実行可能です。すべてのプログラミング言語をサポートしており、ソフトウェアのビルドとテストに広く使用されている各種ツールと連携できます。

実践に役立つフィードバックを取得

TeamCity はビルドやテストの失敗に関する有益かつ実践に役立つフィードバックを提供するため、開発プロセスの効率アップに役立ちます。また、テストの失敗をリアルタイムで通知し、ビルド履歴を保持し、ビルド時間をログに記録し、不安定なテストを flaky(同じ構成、コードに対して合否が変わる)としてマークすることができます。各テストにはスタックトレース、スクリーンショット、ログなどの迅速な調査に必要なデータが含まれる場合があります。

あらゆるワークフローをサポート

これ以上ないほど簡単に GitLab プロジェクトの継続的インテグレーションをセットアップできます。GitLab リポジトリへの接続を構成したら、新しい TeamCity プロジェクトをわずか数クリックで作成できるようになります。TeamCity ならどんなプロジェクトとワークフローの編成でもビルドできます。

  • コミットのたびにビルドとユニットテストを実行し、変更に関するフィードバックを即座に取得する。
  • ユーザー名、ブランチ名、コミットメッセージ、またはファイルの変更に基づくパーソナル化されたワークフローを作成する。
  • コードレビュー前に自動化テストを実行するためにマージリクエストが発行された際にビルドをトリガーする。
  • 回帰テスト一式を実行して高いコード品質を維持するため、ナイトリービルドをスケジュールする。
  • 変更がリリースブランチにマージされる際にすべてのビルドとテストを自動化する。
  • 関連するビルドが正常に完了した際に依存するプロジェクトビルドを初期化する。

TeamCity を使用してさまざまなプログラミング言語、プラットフォーム、およびビルドインフラストラクチャを 1 つの強力な CI パイプラインに集約できます。複数の VCS ルートを追加することで、GitLab と他のバージョン管理システム(GitHub、Bitbucket、Azure DevOps、Mercurial、Subversion、Perforce など)の両方でホストされているリポジトリを使用するプロジェクトのビルドパイプラインを作成することも可能です。詳しくは「VCS の統合」をお読みください。

ビルド後の自動化

TeamCity は GitLab の機能を完全にサポートしてシームレスかつ透過的に統合するため、DevOps プロセスを俯瞰できます。

ビルドステータスの公開

TeamCity はビルドがキューに追加された瞬間からコンパイルに至るまで、各ビルドの最新のステータスを GitLab にリアルタイムで公開できます。そのため、コミットまたはマージリクエストから直接進捗を監視し、結果を確認することができます。

詳細については、ドキュメントの「コミットステータスパブリッシャー」セクションをご覧ください。

自動および手動マージ

変更をブランチに自動的にマージするルールを構成して CI パイプラインの一部に組み込むことができます。カスケードマージをサポートしているため、変更内容を保護対象の develop ブランチとリリースブランチに昇格する高度なワークフローを作成できます。テストに失敗した場合や他の自動マージ条件を満たさない場合でも、GitLab に戻ることなく TeamCity UI から直接変更を手動でマージするかどうかを選択できます。

詳細については、ドキュメントの「自動マージ」と「ブランチの手動マージ」セクションをご覧ください。

VCS のラベル付け

TeamCity では、成功したビルド(またはすべてのビルド)のソースに自動または手動でバージョン番号を記録する Git タグを簡単に設定できます。

詳細については、ドキュメントの「VCS のラベル付け」セクションをご覧ください。

課題トラッカーの統合

コミットメッセージで参照されている GitLab 課題の詳細を TeamCity UI 内に直接表示できます。

詳細については、ドキュメントの「TeamCity と課題トラッカーを統合する」セクションをご覧ください。

インスタント通知

コミット作成者とチームメンバーに破損したビルドやテストの失敗を通知したり、成功したテストの実行を祝福したり、コードレビュー担当者に継続的インテグレーションチェックの完了や変更レビューの準備完了を知らせたりできます。TeamCity は Slack、メール、および IDE とブラウザーの通知をネイティブでサポートしているほか、リッチなプラグインエコシステムを通じて Microsoft Teams、Telegram、および Discord の通知を追加でサポートしています。

認証の合理化

TeamCity Cloud と TeamCity On-Premises のどちらでも、既存の GitLab.com または GitLab CE/EE アカウントを使用して ID とアクセスの管理機能を提供できます。

  • ユーザーが既存の GitLab 資格情報を使用して TeamCity にサインインできるようにします。
  • ビルドとテストの結果が GitLab に自動的に公開されるため、すべての GitLab ユーザーに TeamCity へのアクセスを許可するか、ビルドパイプラインの構成を担当する一部のユーザーにアクセスを制限するかを選択できます。
  • 既存の TeamCity ユーザーを GitLab プロファイルにマッピングします。
  • GitLab ロールとは別のユーザー権限を TeamCity で構成できます。

ワークフローを補完する強力な TeamCity の機能

リアルタイムのテスト支援機能

ビルドとテストが失敗した場合、問題の性質を理解してその原因を特定することが最優先です。TeamCity は以下の機能を提供します。

  • 不具合を引き起こした正確なコミットの特定、変更の作者への通知、調査の割り当てを自動的に行います。
  • テスト履歴を解析して後続のビルドで修正された不具合を検出し、不安定なテストを特定します。
  • IntelliJ IDEA または ReSharper のインスペクションを使用して、ビルドパイプラインに組み込まれた静的コード解析の結果を提供します。
  • Java および .NET ツールのネイティブサポートと、Ant、Mave、Paython などの多数のビルドランナーの統合によって、自動化テストのカバレッジ範囲を測定します。

CI の最適化

高速に回せる短いフィードバックループは、効果的な DevOps 戦略において非常に重要です。TeamCity はビルドとテストのワークフローを合理化して最新の変更に関するインサイトを迅速に提供します。そのため、リリースプロセスが高速化され、あらゆる問題の調査と解決により長い時間を掛けることができます。

  • ビルドステップは、変更前のビルドアーティファクトを再利用するようにデフォルトで最適化されています。
  • TeamCity は最速のビルドエージェントと最も効率的なタスクの順序を自動的に特定するため、大規模プロジェクトの計算リソースと時間が大幅に節約されます。
  • 自動並列化によって自動化テストを複数のエージェントに分散することで、フィードバックを高速化できます。
  • テスト結果がリアルタイムでレポートされるため、ビルドステップが完了する前でもエラーの調査に着手できます。

FAQ: TeamCity と GitLab による継続的インテグレーション

TeamCity の GitLab との統合機能は無料ですか?

GitLab との統合機能は無料の自己ホストバージョンを含む TeamCity の全バージョンで利用できます。また、TeamCity Cloud を 14 日間無料でお試しいただくこともできます。

TeamCity は GitLab より優れていますか?

TeamCity と GitLab は異なる種類のツールであるため、これらを比較するのは不適切です。TeamCity は GitLab 組み込みの CI/CD 機能より多くの機能と柔軟性を備えていますが、課題追跡や Git ホスティングなどの機能はありません。

TeamCity は GitLab Container Registry をサポートしていますか?

はい。TeamCity は GitLab Container Registry などの一般的な Docker レジストリをすべてサポートしています。一般的なプル操作や実行操作のほか、TeamCity はサーバークリーンアップ中に古い Docker イメージを自動的に除去することも可能です。これはオンプレミスの CI/CD セットアップで特に役立ちます。

詳しくは「TeamCity の Docker 統合」をご覧ください。

コードを GitLab にコミットせずに TeamCity でビルドできますか?

TeamCity プラグインを IntelliJ ベース IDE または Visual Studio にインストールすることで、コードをコミットせずに CI パイプラインを実行できます。この機能はゲーム開発者に特に人気です。