ドキュメント
circleci.com
Start Building for Free

TeamCity からの移行

1 week ago2 min read
クラウド
Server 3.x
On This Page

このドキュメントでは、TeamCity から CircleCI に移行する方法を概説します。

クイックスタート

CircleCI と TeamCity ではセットアップや設定が様々な点で異なります。 CircleCI をより快適にお試しいただくために、まず以下の内容を行うことをお勧めします。

  1. このドキュメントを読んで(少なくとも閲覧して)、コンセプトの違いを明確にしてください。

  2. Quickly build and run a simple Hello World job in any repository. この設定により、YAMLセットアップのシンプルさ、実行環境とその中で実行するステップの両方を定義する方法が分かります。 CircleCI のすべてのジョブは、このフォーマットを共有しています。

  3. Once you understand the config, modify the executor and the individual steps to meet your needs. For example, a Rails project may use a Ruby container image and run bundler commands. Consult our Examples and Guides Overview for various examples in different languages and frameworks.

  4. After finishing one job, setup your other jobs on CircleCI and then configure a workflow. これにより、ビルド チェーンを実質的に移行します。

  5. Next, optimize your jobs with advanced features to see how much faster your builds could run on the CircleCI platform.

  6. Throughout this process, consult the Configuration Reference for a list of all available configuration on the CircleCI platform.

CircleCI に移行する理由

CircleCI は、パフォーマンスと開発者の生産性の向上のために開発された最新の CI/CD ツールです。 With a flexible system for configuration, you can define complex workflows and jobs for your application’s specific needs.

Configuration As Code

The majority of CircleCI’s configuration is done via YAML. メンテナンスが容易で、習得も簡単ですし、CI/CD パイプラインを他のソースコードと同様に追跡することが可能です。

Auto-Scaling Architecture

すべての実行環境は、設定に応じて動的に作成され、タスクの完了時に終了します。 1つのジョブから数百のジョブまで、手間や追加費用をかけずに同時に実行することができます。

Flexibility

CircleCIはベンダーやツールを選びません。 CircleCI の設定では、API を持つあらゆるプラットフォームやクラウドプロバイダーとの統合が可能です。 See our integrations page for existing partnerships. Dependencies and libraries can be installed ad-hoc in your job, and we offer dependency caching to speed up subsequent builds.

Shareable, Reusable Configuration

Steps, execution environments, and jobs can be templated, parameterized, shared, and reused across different projects and teams using CircleCI orbs. Take advantage of the numerous integrations and orbs already written for you.

その他にも、CircleCI ソリューションを特徴づける様々な機能があります。 Sign up for a free account today and try us out, or if you are interested in CircleCI for your team, contact our sales team to set up a trial.

コンセプト

ハイレベルな相違点

  • CircleCIとTeamCityは、プロジェクトのコンセプトを共有しています。

  • TeamCity’s Build Configurations are equivalent to CircleCI’s jobs, which are atomic elements of work consisting of many steps or commands to achieve a goal (e.g. run unit tests).

  • TeamCity は伝統的にほとんどのビルドの設定に UI を使用してきました。 Kotlin Script による設定は最近の新しい機能です。 CircleCI では、パイプライン機能の設定の大部分で YAML を使用しています。

TeamCity settings.ktsEquivalent CircleCI config.yml
import jetbrains.buildServer.configs.kotlin.v2019_2.*
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script

version: "2019.2"

project {
  buildType(HelloWorld)
}

object HelloWorld: BuildType({
  name = "Hello World"
  steps {
    script {
      scriptContent = "echo 'Hello World!'"
    }
  }
})
version: 2.1
workflows:
  hello-workflow:
    jobs:
      - hello-job

jobs:
  # ジョブを定義します。
  hello-job:
    # 環境を定義します。
    docker:
      - image: cimg/base:stable
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # コンテキスト/プロジェクト UI 環境変数を参照

    # ジョブのステップを定義します。
    steps:
      - checkout
      - run: echo "Hello World!"
TeamCity settings.kts
import jetbrains.buildServer.configs.kotlin.v2019_2.*
import jetbrains.buildServer.configs.kotlin.v2019_2.buildSteps.script

version: "2019.2"

project {
  buildType(HelloWorld)
}

object HelloWorld: BuildType({
  name = "Hello World"
  steps {
    script {
      scriptContent = "echo 'Hello World!'"
    }
  }
})
Equivalent CircleCI config.yml
version: 2.1
workflows:
  hello-workflow:
    jobs:
      - hello-job

jobs:
  # ジョブを定義します。
  hello-job:
    # 環境を定義します。
    docker:
      - image: cimg/base:stable
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # コンテキスト/プロジェクト UI 環境変数を参照

    # ジョブのステップを定義します。
    steps:
      - checkout
      - run: echo "Hello World!"
  • Instead of Build Chains, CircleCI has Workflows, which define dependencies and flow between jobs.

  • A Pipeline refers to all configuration, workflows, and jobs for a project. このマルチレイヤー構造により、強力な柔軟性と異なるワークロードに対する懸念の分離を可能にします。

TeamCityのビルドチェーン同等の CircleCI のワークフロー
project {
  sequence {
    build(Compile)
    parallel {
        build(Test1)
        build(Test2)
    }
    build(Package)
    build(Publish)
  }
}

/* BuildType definitions assumed
version: 2.1
workflows:
  build-deploy:
    jobs:
      - Compile
      - Test1:
          requires:
            - Compile
      - Test2:
          requires:
            - Compile
      - Package:
          requires:
            - Test1
            - Test2
      - Publish:
          requires:
            - Package

# 想定されるジョブの定義
TeamCityのビルドチェーン
project {
  sequence {
    build(Compile)
    parallel {
        build(Test1)
        build(Test2)
    }
    build(Package)
    build(Publish)
  }
}

/* BuildType definitions assumed
同等の CircleCI のワークフロー
version: 2.1
workflows:
  build-deploy:
    jobs:
      - Compile
      - Test1:
          requires:
            - Compile
      - Test2:
          requires:
            - Compile
      - Package:
          requires:
            - Test1
            - Test2
      - Publish:
          requires:
            - Package

# 想定されるジョブの定義

For more information on CircleCI Concepts, visit our Concepts and Pipelines documentation pages.

設定ファイル

環境

TeamCity では、必要なOSとツールがインストールされたビルドエージェントと、それに対応するビルド設定をセットアップする必要があります。 CircleCI では、すべてのジョブ設定に Executor が定義されており、CircleCI がそのエージェントのスピンアップを代行します。 See our list of available executors.

.circleci/config.yml
version: 2.1
jobs:
  my-mac-job:
    # Executor の定義
    macos:
      xcode: "12.5.1"

    # ステップの定義
    steps:
      - checkout
      # ...など

手順

TeamCity では、定義されたランナータイプ(Visual Studio、Maven、Gradleなど)のリストからビルドステップを選択します。 CircleCI では、ステップの定義では、ターミナルやコマンド プロンプトで実行するコマンドを柔軟に取り入れることができます。

また、この柔軟性により、あらゆる言語、フレームワーク、ツールに対応したステップが可能になります。 For example, a Rails project may use a Ruby container and run bundler commands. A Node.js project may use a node container and npm commands. Visit our Examples and Guides Overview for various language and framework examples.

TeamCityのステップ同等の CircleCI のステップ
project {
  parallel {
    build(Gradle) # Assume agent configured
    build(Maven)  # Assume agent configured
  }
}

object Gradle: BuildType({
  name = "Gradle"

  steps {
    gradle {
      tasks = "clean build"
    }
  }
})

object Maven: BuildType({
  name = "Maven"

  steps {
    maven {
      goals = "clean package"
    }
  }
})
version: 2.1
workflows:
  parallel-workflow:
    jobs:
      - Gradle
      - Maven

jobs:
  Gradle:
    docker:
      - image: cimg/openjdk:17.0.1
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # コンテキスト/プロジェクト UI 環境変数を参照します
    steps:
      - checkout # ソースコードをチェックアウトします
      - run:
          name: Clean and Build
          command: ./gradlew clean build

  Maven:
    docker:
      - image: cimg/openjdk:17.0.1
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # コンテキスト/プロジェクト UI 環境変数を参照します
    steps:
      - checkout # ソースコードをチェックアウトします
      - run:
          name: Clean and Package
          command: mvn clean package
TeamCityのステップ
project {
  parallel {
    build(Gradle) # Assume agent configured
    build(Maven)  # Assume agent configured
  }
}

object Gradle: BuildType({
  name = "Gradle"

  steps {
    gradle {
      tasks = "clean build"
    }
  }
})

object Maven: BuildType({
  name = "Maven"

  steps {
    maven {
      goals = "clean package"
    }
  }
})
同等の CircleCI のステップ
version: 2.1
workflows:
  parallel-workflow:
    jobs:
      - Gradle
      - Maven

jobs:
  Gradle:
    docker:
      - image: cimg/openjdk:17.0.1
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # コンテキスト/プロジェクト UI 環境変数を参照します
    steps:
      - checkout # ソースコードをチェックアウトします
      - run:
          name: Clean and Build
          command: ./gradlew clean build

  Maven:
    docker:
      - image: cimg/openjdk:17.0.1
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # コンテキスト/プロジェクト UI 環境変数を参照します
    steps:
      - checkout # ソースコードをチェックアウトします
      - run:
          name: Clean and Package
          command: mvn clean package

ビルド済みのテンプレート/メタランナー

CircleCI’s equivalent of Meta-Runners and Build Templates is orbs, which are templatizable, shareable configuration. Read more about them in our orbs documentation.

複雑なビルド

より大規模で複雑なビルドについては、CircleCI のプラットフォームに慣れるまで、段階的に移行することをお勧めします。 以下の順番での移行をお勧めします。

関連資料


ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。