TeamCity からの移行
このドキュメントでは、TeamCity から CircleCI に移行する方法を概説します。
クイックスタート
CircleCI と TeamCity ではセットアップや設定が様々な点で異なります。 CircleCI をより快適にお試しいただくために、まず以下の内容を行うことをお勧めします。
-
このドキュメントを読んで (少なくとも閲覧して)、コンセプトの違いを明確にしてください。
-
簡単な Hello World ジョブ を任意のリポジトリにビルドして実行します。 この設定により、YAML セットアップのシンプルさと、実行環境とその中で実行するステップの両方を定義する方法が分かります。 CircleCI のすべてのジョブは、このフォーマットを共有しています。
-
設定が理解できたら、ニーズに合わせて Executor と各ステップを変更します。たとえば、 Rails プロジェクト では Ruby コンテナイメージを使用し、
bundler
コマンドを実行します。 他の言語や他のフレームワークの例は、 サンプルとガイドの概要 を参照してください。 -
1 つのジョブが終了したら、CircleCI で他のジョブをセットアップして ワークフローを設定します。 これにより、ビルドチェーンを実質的に移行します。
-
次に、高度な機能を使って ジョブを最適化 し、CircleCI プラットフォーム上でビルドがどれだけ高速で実行できるかを確認します。
-
このプロセス全体を通じて、 設定のリファレンス を参照して、CircleCI のプラットフォームで利用可能なすべての設定のリストを確認します。
CircleCI に移行する理由
CircleCI は、パフォーマンスと開発者の生産性の向上のために開発された最新の CI/CD ツールです。 柔軟な設定が可能なため、お客様のアプリケーション固有のニーズに応じた複雑なワークフローやジョブを定義することができます。
- コードとしての設定
-
CircleCI の設定の大部分は YAML で行われます。 メンテナンスが容易で、習得も簡単ですし、CI/CD パイプラインを他のソースコードと同様に追跡することが可能です。
- 自動スケーリングアーキテクチャ
-
すべての実行環境は、設定に応じて動的に作成され、タスクの完了時に終了します。 1 つのジョブから数百のジョブまで、手間や追加費用をかけずに同時に実行することができます。
- 柔軟性
-
CircleCI はベンダーやツールを選びません。 CircleCI の設定では、API を持つあらゆるプラットフォームやクラウドプロバイダとの統合が可能です。 既存のパートナーシップについては、 インテグレーションのページ をご覧ください。 依存関係やライブラリは、ジョブの中でアドホックにインストールすることができ、その後のビルドを高速化するために 依存関係のキャッシュ を提供しています。
- 共有、再利用可能な設定
-
ステップ、実行環境、ジョブは、 CircleCI Orb を使って、異なるプロジェクトやチーム間でテンプレート化、パラメーター化、共有、再利用することができます。 すでに作成されている 数々のインテグレーションや Orb をぜひ活用してください。
その他にも、CircleCI ソリューションを特徴づける様々な機能があります。 今すぐ無料アカウントを作成し 、CircleCI をお試しください。チームでのご利用をお考えでしたら、 セールスチームにご連絡をいただければ 、トライアルを設定させていただきます。
コンセプト
ハイレベルな相違点
-
CircleCI と TeamCity は、プロジェクトのコンセプトを共有しています。
-
TeamCity のビルド設定は、 CircleCI のジョブ と同等です。ジョブとは、目的を達成するための多くのステップやコマンドからなる作業の原子的な要素のことです (例: ユニットテストの実行)。
-
TeamCity は伝統的にほとんどのビルドの設定に UI を使用してきました。Kotlin Script による設定は最近の新しい機能です。 CircleCI では、パイプライン機能の設定の大部分で YAML を使用しています。
TeamCity の settings.kts | 同等の CircleCI の config.yml |
---|---|
| [source, yaml] ---- version: 2.1 workflows: hello-workflow: jobs: - hello-job jobs: # Define job hello-job: # Define environment docker: - image: cimg/base:stable auth: username: mydockerhub-user password: $DOCKERHUB_PASSWORD # context / project UI env-var reference # Define steps for job steps: - checkout - run: echo "Hello World!" ---- |
TeamCity の settings.kts |
---|
|
同等の CircleCI の config.yml |
---|
|
TeamCity のビルドチェーン | 同等の CircleCI のワークフロー |
---|---|
| [source, yaml] ---- version: 2.1 workflows: build-deploy: jobs: - Compile - Test1: requires: - Compile - Test2: requires: - Compile - Package: requires: - Test1 - Test2 - Publish: requires: - Package # Job definitions assumed ---- |
TeamCity のビルドチェーン |
---|
|
同等の CircleCI のワークフロー |
---|
|
設定ファイル
環境
TeamCity では、必要な OS とツールがインストールされたビルドエージェントと、それに対応するビルド設定をセットアップする必要があります。 CircleCI では、すべてのジョブ設定に Executor が定義されており、CircleCI がそのエージェントのスピンアップを代行します。 使用可能な Executor のリストをご確認ください。
version: 2.1
jobs:
my-mac-job:
# Executor definition
macos:
xcode: "12.5.1"
# Steps definition
steps:
- checkout
# ...etc.
ステップ
TeamCity では、定義されたランナータイプ (Visual Studio、Maven、Gradle など) のリストからビルドステップを選択します。 CircleCI のステップの定義では、ターミナルやコマンドプロンプトで実行するコマンドを柔軟に取り入れることができます。
また、この柔軟性により、ステップをあらゆる言語、フレームワーク、ツールに適用できます。 たとえば、 Rails プロジェクト で Ruby コンテナを使用して bundler
コマンドを実行できます。 Node.js プロジェクト で Node コンテナと npm
コマンドを実行することも可能です。 様々な言語やフレームワークの例については、 サンプルとガイドの概要 をご覧ください。
Using Docker? Authenticating Docker pulls from image registries is recommended when using the Docker execution environment. Authenticated pulls allow access to private Docker images, and may also grant higher rate limits, depending on your registry provider. For further information see [Using Docker authenticated pulls](/docs/private-images). {: class="alert alert-info" }
TeamCity のステップ | 同等の CircleCI のステップ |
---|---|
| [source, yaml] ---- version: 2.1 workflows: parallel-workflow: jobs: - Gradle - Maven jobs: Gradle: docker: - image: cimg/openjdk:17.0.1 steps: - checkout # Checks out source code - run: name: Clean and Build command: ./gradlew clean build Maven: docker: - image: cimg/openjdk:17.0.1 steps: - checkout # Checks out source code - run: name: Clean and Package command: mvn clean package ---- |
同等の CircleCI のステップ |
---|
|
同等の CircleCI のステップ |
---|
|
ビルドテンプレート/メタランナー
CircleCI でメタランナーやビルドテンプレートに相当するのが Orb です。Orb はテンプレート化された共有可能な設定です。 詳細は、 Orb ドキュメント をご覧ください。
複雑なビルド
より大規模で複雑なビルドについては、CircleCI のプラットフォームに慣れるまで、段階的に移行することをお勧めします。 以下の順番での移行をお勧めします。
-
シェルスクリプトや Docker Compose ファイルの実行
関連資料
-
CircleCI のその他の設定例は、 サンプルプロジェクト ページをご覧ください。
-
サポートについては、当社の サポートフォーラム にチケットを提出してください。