Azure DevOps からの移行
このドキュメントでは、Azure DevOps から CircleCI に移行する方法を概説します。
ImagineX Consulting からのヒント |
ソースコントロールの設定
Azure DevOps のGit レポジトリや TFVC レポジトリを使用している場合は、まずソースコードを GitHub または Bitbucket に移行する必要があります。 Azure DevOps の Git リポジトリについては、下記のリンクより GitHub や Bitbucket にインポートする方法をご確認ください。
TFVC リポジトリの場合は、git-tfs ツールの使用をお勧めします。 以下は git-tfs ツールおよび使用方法へのリンクです。
GitHub Enterprise
以下は、GitHub のコマンドラインツールを使って GitHub Enterprise にコードをインポートするための手順です。
-
GitHub Enterprise のインスタンスに空のリポジトリを作成します。
-
ローカルマシンに外部リポジトリのベアクローンを作成し、すべてのリモートタグ (refs/tags/*) をフェッチし、すべてのリモートブランチヘッド (refs/heads/\*) を対応するローカルブランチヘッドに直接コピーします。
git clone https://external-host.com/extuser/repo.git --bare
-
ローカルクローンに、GitHub Enterprise リポジトリをリモートリファレンスとして追加します。
cd [repo-name] git remote add enterprise git@[hostname]:[owner]/[repo-name].git
-
すべてのローカルリファレンス(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 の両方のリファレンスドキュメントを並べて開いておくことをお勧めします。
設定の比較
Docker実行環境を使用する場合は、イメージ・レジストリ(image registries)から Docker プルを認証することを推奨します。 認証されたプルでは、プライベートな Docker イメージにアクセスすることができ、レジストリのプロバイダによっては、より高いレート制限が付与される場合もあります。 詳細は、 Docker の認証付きプルの使用 を参照して下さい。 |
Azure DevOps | CircleCI |
---|---|
1つのビルドステップを実行するジョブの定義 | |
| [source, yaml] ---- jobs: job1: steps: - checkout - run: "execute-script-for-job1" ---- |
ジョブに使用する Docker イメージの指定 | |
| [source, yaml] ---- jobs: job1: docker: - image: node:10 ---- |
マルチステージのビルドパイプラインの定義: ジョブ 1 と ジョブ 2 を同時に実行します。 完了すると、ジョブ 3 を実行します。 ジョブ 3 が完了すると、ジョブ 4 を実行します。 | |
| [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 を提供しています。 | |
| [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 のプラットフォームに慣れるまで、段階的に移行することをお勧めします。 以下の順番での移行をお勧めします。