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

AWS からの移行

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

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

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

AWS CodeCommit を使用している場合は、まずソースコードを GitHub または Bitbucket に移行する必要があります。 コードのインポート方法の詳細については、以下をご参照ください。

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

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

ビルドの設定

次に、ビルドの設定を移行する必要があります。 AWS CodeBuild では、ビルドの設定は、Web インターフェイスで定義するか、ソースコードリポジトリのルートディレクトリにある buildspec.yml というファイルで定義します。 ビルドの実行にシェルスクリプトを使用している場合は、CircleCI でそのスクリプトを再利用することができます。

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

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

設定の比較

AWSCircleCI

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

phases:
  build:
    commands:
       - ./execute-script-for-job1.sh
jobs:
  job1:
    steps:
      - checkout
      - run: "execute-script-for-job1"

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

phases:
  install:
    runtime-versions:
      nodejs: 10
jobs:
  job1:
    docker:
      - image: node:10
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # コンテキスト/プロジェクト UI 環境変数を参照します。

マルチステージのビルドパイプラインの定義: ジョブ 1 と ジョブ 2 を同時に実行します。 完了すると、ジョブ 3 を実行します。 ジョブ 3 が完了すると、ジョブ 4 を実行します。 AWS CodeBuild プロジェクトでは、すべてのコマンドを順次実行します。 同時に複数のコマンドを実行している場合は、CodePipeline と複数の CodeBuild プロジェクトを使用していると思われます。

# CodePipeline Project 1
phases:
  build:
    commands:
      - make build dependencies

# CodePipeline Project 2
phases:
  build:
    commands:
      - make build artifacts

# CodePipeline Project 3
phases:
  build:
    commands:
      - make test

# CodePipeline Project 4
phases:
  build:
    commands:
      - make deploy
version: 2
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:
  version: 2
  jobs:
    - job1
    - job2
    - job3:
        requires:
          - job1
          - job2
    - job4:
        requires:
          - job3

マルチプラットフォームでのジョブの実行: AWS CodePipeline プロジェクトは、1 つのプラットフォームのみを対象とすることができます。 同時に複数のプラットフォームをターゲットにしている場合は、CodePipeline と複数の CodeBuild プロジェクトを使用していると思われます。 CircleCI では、Docker、Linux、MacOS 用の Executor を提供しており、1 つのビルド定義にまとめることができます。

# 環境は、CodeBuild の Web コンソールで選定される、
# またはプロジェクト設定ファイルで
# 定義されます。
{
  "name": "linux project",
  "environment": {
    "type": "LINUX_CONTAINER"
  }
}

{
  "name": "windows project",
  "environment": {
    "type": "WINDOWS_CONTAINER"
  }
}
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
      ubuntu-2004:current
    steps:
      - checkout
      - run: echo "Hello, $USER!"
  osxJob:
    macos:
      xcode: 12.5.1
    steps:
      - checkout
      - run: echo "Hello, $USER!"

依存関係のキャッシュ

# カスタムキャッシュが Web コンソールで有効化されている場合、I
# CLI、CloudFormation、キャッシュの場所は
# buildspec.yml ファイルに
# 定義することができます。

phases:
  build:
    commands:
npm install
cache:
  paths:
    - 'node_modules/**/*'
jobs:
  job1:
    steps:
      - restore_cache:
          key: source-v1-< .Revision >

      - checkout

      - run: npm install

      - save_cache:
          key: source-v1-< .Revision >
          paths:
            - "node_modules"

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


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

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

サポートが必要ですか

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

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