無料でビルドを開始
CircleCI.comアカデミーブログコミュニティサポート

Azure DevOps からの移行

10 months ago1 min read
クラウド
Server 3.x
このページの内容

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

ソースコントロールの設定

Azure DevOps のGit レポジトリや TFVC レポジトリを使用している場合は、まずソースコードを GitHub または Bitbucket に移行する必要があります。 Azure DevOps の Git リポジトリについては、下記のリンクより GitHub や Bitbucket にインポートする方法をご確認ください。

TFVC リポジトリの場合は、git-tfs ツールの使用をお勧めします。 以下は git-tfs ツールおよび使用方法へのリンクです。

GitHub Enterprise

以下は、GitHub のコマンドラインツールを使って GitHub Enterprise にコードをインポートするための手順です。

  1. GitHub Enterprise のインスタンスに空のリポジトリを作成します。

  2. ローカルマシンに外部リポジトリのベアクローンを作成し、すべてのリモートタグ (refs/tags/*) をフェッチし、すべてのリモートブランチヘッド (refs/heads/\*) を対応するローカルブランチヘッドに直接コピーします。

    git clone https://external-host.com/extuser/repo.git --bare
  3. ローカルクローンに、GitHub Enterprise リポジトリをリモートリファレンスとして追加します。

    cd [repo-name]
    git remote add enterprise git@[hostname]:[owner]/[repo-name].git
  4. すべてのローカルリファレンス(refs/*)を、リモートの GitHub Enterprise リポジトリにプッシュします。

    git push enterprise --mirror

他の Azure DevOps のアーティファクトをエクスポートする必要がある場合は、ほぼすべてのデータを Excel のスプレッドシートにダウンロードすることができます。 プロジェクトデータに関する Azure DevOps のドキュメントをご覧ください。

コードを GitHub または Bitbucket にインポートしたら、 入門ガイド に従って CircleCI 上でのプロジェクト作成を開始することができます。

ビルドの設定

Azure DevOps Pipelines や TFS Build and Release を使用している場合は、ビルドの設定を移行する必要があります。 Azure DevOps Pipelines では、ソースコードリポジトリのルートディレクトリにある azure-pipelines.yml というファイルでビルド設定が定義されています。 TFS Build and Release の場合は Web インターフェイスで行われ、json ファイルにエクスポートすることができます。 どちらの場合もビルドの実行にシェルスクリプトを使用していれば、CircleCI でそのスクリプトを再利用することができます。

まず、CircleCI のビルド設定ファイルを作成します。 ソースコードリポジトリのルートディレクトリに、.circleci というフォルダを作成し、その中に config.yml という名前のファイルを作成します。 次に、こちらの CircleCI のドキュメントに従い、 config.yml ファイルの設定方法を確認します。

Azure DevOps Pipelines と CircleCI の設定は異なります。 ビルドステップを変換する際は、Azure DevOps と CircleCI の両方のリファレンスドキュメントを並べて開いておくことをお勧めします。

設定の比較

Azure DevOpsCircleCI

1つのビルドステップを実行するジョブの定義

jobs:
  - job: job1
    steps:
      - script: chmod +x ./script.sh
      - script: ./script.sh

[source, yaml] ---- jobs: job1: steps: - checkout - run: "execute-script-for-job1" ----

ジョブに使用する Docker イメージの指定

jobs:
  - job: job1
    container:
      image: node:10

[source, yaml] ---- jobs: job1: docker: - image: node:10 ----

マルチステージのビルドパイプラインの定義: ジョブ 1 と ジョブ 2 を同時に実行します。 完了すると、ジョブ 3 を実行します。 ジョブ 3 が完了すると、ジョブ 4 を実行します。

stages:
  - stage: build
    jobs:
    - job: job1
      steps:
        - script: make build dependencies
    - job: job2
      steps:
        - script: make build artifacts
  - stage: test
    jobs:
    - job: job3
      steps:
        - script: make test
  - stage: deploy
    jobs:
    - job: job4
      steps:
        - script: make deploy

[source, yaml] ---- version: 2.1 jobs: job1: steps: - checkout - run: make build dependencies job2: steps: - run: make build artifacts job3: steps: - run: make test job4: steps: - run: make deploy

workflows: jobs: - job1 - job2 - job3: requires: - job1 - job2 - job4: requires: - job3 ----

マルチプラットフォームでのジョブの実行: Azure DevOps では、プールと要求によりビルドランナーを識別します。 CircleCI では、Docker、Linux、MacOS用の Executor を提供しています。

jobs:
  - job: ubuntuJob
    pool:
      vmImage: ubuntu-16.04
    steps:
      - script: echo "Hello, $USER!"
  - job: osxJob
    pool:
      vmImage: macOS-10.14
    steps:
      - script: echo "Hello, $USER!"

[source, yaml] ---- jobs: ubuntuJob: machine: # The image uses the current tag, which always points to the most recent # supported release. If stability and determinism are crucial for your CI # pipeline, use a release date tag with your image, e.g. ubuntu-2004:202201-02 image: ubuntu-2004:current steps: - checkout - run: echo "Hello, $USER!" osxJob: macos: xcode: 14.2.0 steps: - checkout - run: echo "Hello, $USER!" ----

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

  1. シェルスクリプトや Docker Compose ファイルの実行

  2. ワークフロー

  3. アーティファクト

  4. キャッシュ

  5. トリガー

  6. 最適化の概要


Suggest an edit to this page

Make a contribution
Learn how to contribute