GitLab からの移行

1+ year ago1 min read
Last updated • Read time
クラウド
This document is applicable to CircleCI クラウド
Server 3.x
This document is applicable to CircleCI Server 3.x

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

GitLab アカウントでの登録

CircleCI のユーザー登録 のページに記載されている手順で GitLab アカウントと CircleCI を接続し、以下の内容に従って CI/CD 設定を CircleCI に移行します。

ビルドの設定

GitLab の CI/CD を使用している場合は、ビルドの設定を移行する必要があります。 GitLab では、ビルドの設定は、ソースコードリポジトリのルートディレクトリにある .gitlab-ci.yml というファイルで定義します。 ビルドの実行にシェルスクリプトを使用している場合は、CircleCI でそのスクリプトを再利用することができます。

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

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

設定の比較

GitLabCircleCI

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

job1:
  script: "execute-script-for-job1"

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

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

job1:
  image: node:10

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

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

job1:
  stage: build
  script: make build dependencies

job2:
  stage: build
  script: make build artifacts

job3:
  stage: test
  script: make test

job4:
  stage: deploy
  script: make deploy

stages:
  - build
  - test
  - 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 ----

マルチプラットフォームでのジョブの実行: GitLab では、タグを使ってビルドエージェントを識別します。 CircleCI では主要な OS と Docker はすべてサポートしており、設定で明示的に定義する必要があります。 詳しくは、 実行環境に関するドキュメント をご覧ください。

ubuntu job:
  tags:
    - ubuntu
  script:
    - echo "Hello, $USER!"

osx job:
  tags:
    - osx
  script:
    - echo "Hello, $USER!"

[source, yaml] ---- jobs: ubuntu-job: 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!" osx-job: macos: xcode: 14.2.0 steps: - checkout - run: echo "Hello, $USER!" ----

依存関係のキャッシュ

image: node:latest

# ジョブ間のキャッシュモジュールです。
cache:
  key: ${CI_COMMIT_REF_SLUG}
  paths:
    - node_modules/

before_script:
  - npm install

test_async:
  script:
    - node ./specs/start.js

[source, yaml] ----

jobs: test_async: steps: - restore_cache: key: source-v1-{{ checksum "package.json" }} - checkout - run: npm install - save_cache: key: source-v1-{{ checksum "package.json" }} paths: - node_modules - run: node ./specs/start.js

----

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