技術情報

ガイド:AWS CodeCommit から GitLabへの移行方法

AWS CodeCommit にもう機能追加されないっ!とアナウンスされましたね。
今後、AI機能やセキュリティガバナンス周りなどどんどんアップデートされてしかるべきツールなのにどうしよう?どのGitプラットフォームへ移行しよう?どうしたら効率的に移行できる?などお悩みではありませんか?
エンタープライズ利用を前提に設計されている統合プラットフォーム GitLabへの移行方法完全ガイドが公開されています。
ぜひ参考にしてください!

以下記事は、GitLab社ガイドを翻訳掲載したものです。原文・アップデート有無については以下リンクからご確認いただけます。
https://about.gitlab.com/blog/blog-post/?previewSlug=2024%2F08%2F26%2Fultimate-guide-to-migrating-from-aws-codecommit-to-gitlab
================================================

AWS CodeCommit から GitLab への移行に関する究極のガイド

この包括的なチュートリアルでは、AWS サービスから GitLab に移行し、DevSecOps プラットフォームとシームレスに統合する方法を学びます。

2024 年 7 月 25 日、AWS は CodeCommit サービスに関する重要な発表を行いました。公式ブログ投稿で詳しく説明されているように、AWS は CodeCommit への新規顧客アクセスを終了することを決定しました。既存の顧客は引き続きサービスを利用できますが、AWS は新しい機能を導入せず、セキュリティ、可用性、パフォーマンスの向上のみに重点を置きます。

この発表により、開発チームはリポジトリを別の Git プロバイダーに移行することを検討するようになりました。これらの変更を考慮して、チームが GitLab に移行し、他の AWS サービスと統合できるように、この包括的なガイドを作成しました。

注: AWS の公式移行推奨事項の詳細については、ブログ投稿を参照してください。

このガイドについて

このガイドは、AWS サービスとの統合を検討している、または AWS がホストする Git リポジトリから GitLab.com への移行を計画している GitLab を使用する開発チーム向けに包括的な情報を提供します。このガイドは、次の 3 つの主要なセクションで構成されています。

  • GitLab への並行移行: リスクを最小限に抑えながら、既存の AWS ホストリポジトリから GitLab.com に段階的に移行する方法について説明します。
  • AWS CodeBuild との統合: GitLab リポジトリを AWS CodeBuild と統合し、強力な継続的インテグレーション (CI) 環境をセットアップする手順を示します。
  • AWS CodePipeline との統合: GitLab リポジトリを AWS CodePipeline に接続して、効率http://section-2-integrating-gitlab-with-aws-codebuild的な継続的デリバリー (CD) パイプラインを構築する方法について詳しく説明します。
  • CodePipeline および CodeStar 接続のダウンストリーム統合: GitLab-AWS 接続を活用して広範なサービスアクセスを実現し、AWS エコシステム全体での統合の可能性を広げる方法について説明します。

このガイドでは、GitLab と AWS の強力な機能を組み合わせて、効率的で柔軟な開発ワークフローを作成する方法を学びます。

セクション 1: GitLab への並行移行

AWS でホストされている Git リポジトリを GitLab.com に移行することを検討している方のために、段階的なアプローチであるこのセクションでは、リスクを最小限に抑えながら移行を実現する方法を紹介します。GitLab のミラーリング機能を活用することで、既存の開発フローを維持しながら新しい環境をテストできます。

並行移行が重要なのはなぜですか?

大規模なシステム移行には常にリスクが伴い、特に進行中の開発作業、既存の統合、自動化されたプロセスに影響を及ぼす可能性があります。並行移行アプローチを採用すると、次のような利点があります。

  1. リスクの最小化: 既存のシステムを稼働させながら、新しい環境をテストします。
  2. シームレスな移行: 開発チームは新しいシステムに徐々に慣れることができます。
  3. 統合テスト: 新しい環境ですべての統合と自動化を徹底的にテストします。
  4. 将来性: チームが既存の CI と並行して GitLab CI/CD に段階的に移行できるようにします。

GitLab に直接切り替えることが既にわかっている場合は、並列移行は必要ありません。

GitLab.comへの移行手順

ステップ1: GitLab.comでセットアップする

  • 会社で GitLab.com で既にグループが使用されているかどうか、またシングル サインオン (SSO) が設定されているかどうかを確認します。設定されている場合は、両方を使用する必要があります。
  • あなたの会社が GitLab.com に存在しない場合は、GitLab.comにアクセスして新しいアカウントを作成するか、既存のアカウントにログインしてください。
  • 新しい会社の名前空間 (gitlab.com のルート レベルのグループ) を作成します。
  • 会社全体を反映する(まだ使用されていない)名前を選択します。

ステップ2: リポジトリをインポートする

並列移行の場合: GitLab のプルミラーリング機能を使用して、AWS でホストされているリポジトリから GitLab.com に変更を自動的に同期します。

  1. ターゲット グループ GitLab.com に移動します。
  2. 右上の「新しいプロジェクト」をクリックします。
  3. 「新しいプロジェクトの作成」ページで、「プロジェクトをインポート」をクリックします。
  4. 「プロジェクトのインポート」ページで、「URL によるリポジトリ」をクリックします。
  5. 「Git リポジトリ URL」フィールドに AWS ホストリポジトリの URL を入力します。
  6. Git リポジトリ URL フィールドの下にある「ミラー リポジトリ」をチェックします。
  7. 認証の設定: AWS CodeCommit コンソールで、移行するリポジトリのクローン URL を選択します。CodeCommit リポジトリを GitLab にインポートする予定の場合は、HTTPS CodeCommit URL を使用して、GitLab リポジトリミラーリング経由でリポジトリをクローンできます。GitLab 内の Identity and Access Management (IAM) ユーザー用に、AWS からの Git 認証情報も提供する必要があります。このAWS ガイドに従って、AWS CodeCommit の Git 認証情報を作成できます。
URL を複製

この設定により、デフォルトでは 5 分ごとに AWS ホストリポジトリから GitLab.com に変更が自動的にプルされます。

詳細については、リポジトリミラーリングのドキュメントをお読みください。

ステップ3: 統合をテストして検証する

  1. CI/CD パイプライン: GitLab CI でファイルを設定し、既存のパイプラインを複製します。他の CI ツールから GitLab CI/CD への移行の計画.gitlab-ci.ymlについて詳しくは、こちらをご覧ください。
  2. 問題追跡: プロジェクトの問題をインポートし、ワークフローをテストします。
  3. コードレビュー: マージリクエストプロセスを設定し、レビューワークフローをテストします。

ステップ4: 段階的な移行

  1. GitLab.com での作業に慣れるために、小規模または重要でないプロジェクトから始めてください。
  2. チーム メンバーにトレーニングを提供し、新しいワークフローに適応する時間を確保します。
  3. 統合とワークフローに問題がないことを確認しながら、徐々にプロジェクトを移行します。

詳細については、「CodeCommit から GitLab への移行の自動化」を参照してください。

ステップ5: 移行を完了する

すべてのテストと検証が完了し、チームが新しい環境に慣れたら、完全な移行を計画します。プロジェクトごとに次の作業を行います。

  1. 移行日を設定し、すべての関係者に通知します。
  2. 最終的なデータ同期を実行します。
  3. GitLab プロジェクトからミラーリング設定を削除します。
  4. AWS でホストされているリポジトリを読み取り専用に設定し、すべての開発作業を GitLab.com に移行します。

ステップ6: 新しい機能の導入を評価する

GitLab の開発者向けコラボレーションとワークフロー自動化は、CodeCommit よりもはるかに充実しています。これらの機能が何であるかを学ぶには、少し時間をかける価値があります。マージ リクエスト プロセスは、CodeCommit と比較して特に充実しています。

GitLab でリポジトリが安定したら、既存のソリューションと並行して GitLab CI/CD を簡単に試すことができます。チームは、本番ワークフローに影響を与えずに、時間をかけて GitLab CI/CD の自動化を完成させることができます。

GitLab アーティファクト管理は、リリース機能と多数のパッケージ レジストリを備えており、非常に優れています。

セクション 1: 要約

GitLab への並行移行アプローチを採用することで、リスクを最小限に抑えながらスムーズな移行を実現できます。このプロセスにより、チームは新しい環境に徐々に適応し、すべての統合と自動化が正しく機能することを確認できます。カットオーバー移行では、並行移行が不要であることがわかっている場合にのみ、1 つの設定チェックボックスが省略されます。

セクション 2: GitLab と AWS CodeBuild の統合

AWS CodeBuild を使用して GitLab リポジトリからコードをビルドおよびテストしたい場合、この包括的なガイドは効率的な CI パイプラインの設定に役立ちます。

前提条件

  • GitLab.com アカウント
  • AWS アカウント
  • AWS CLI (設定済み)

ステップ1: AWS CodeStar ConnectionsでGitLab接続を作成する

  1. AWS マネジメントコンソールにログインし、CodeBuild サービスに移動します。
  2. 左側のナビゲーション パネルから [設定] > [接続] を選択します。
  3. 「接続を作成」ボタンをクリックします。
  4. プロバイダーとして「GitLab」を選択します。
  5. 接続名を入力し、「GitLab に接続」をクリックします。
  6. GitLab 認証ページにリダイレクトされます。
  7. 必要な権限を承認します。
  8. 成功すると、接続ステータスが「利用可能」に変わります。
CodeStar Connect のセットアップ

ステップ2: AWS CodeBuildプロジェクトを作成する

  1. CodeBuild ダッシュボードで「ビルド プロジェクトの作成」をクリックします。
  2. プロジェクト名と説明を入力します。
  3. ソース設定では、プロバイダーとして「GitLab」を選択します。
  4. 先ほど作成した接続を選択し、GitLab リポジトリとブランチを指定します。
CodeBuildプロジェクトを追加する

注: 手順 3 以降は、特定の環境とニーズに応じて設定を構成してください。

セクション2の要約

このセクションでは、GitLab リポジトリを AWS CodeBuild と統合する方法を詳しく説明しました。この設定により、GitLab でのコード変更が AWS CodeBuild を使用して自動的に構築およびテストされる継続的インテグレーション パイプラインが有効になります。

セクション 3: GitLab と AWS CodePipeline の統合

AWS CodePipeline を使用して GitLab リポジトリからの継続的デリバリーを実装しようとしている方には、この詳細なガイドが役立ちます。GitLab が AWS CodeStar Connections プロバイダーとして利用できるようになったため、統合はさらに簡単になりました。

前提条件

  • GitLab.com アカウント
  • AWS アカウント
  • AWS CLI (設定済み)

ステップ1: AWS CodeStar ConnectionsでGitLab接続を作成する

  1. AWS マネジメントコンソールにログインし、CodePipeline サービスに移動します。
  2. 左側のナビゲーション パネルから [設定] > [接続] を選択します。
  3. 「接続を作成」ボタンをクリックします。
  4. プロバイダーとして「GitLab」を選択します。
  5. 接続名を入力し、「GitLab に接続」をクリックします。
  6. GitLab 認証ページにリダイレクトされます。
  7. 必要な権限を承認します。
  8. 成功すると、接続ステータスが「利用可能」に変わります。
CodeStar 接続のセットアップ

ステップ2: AWS CodePipelineを作成する

  1. CodePipeline ダッシュボードで「パイプラインの作成」をクリックします。
  2. パイプライン名を入力し、「次へ」をクリックします。
  3. ソースプロバイダーとして「GitLab」を選択します。
  4. 先ほど作成した接続を選択し、GitLab リポジトリとブランチを指定します。
  5. トリガー タイプを選択します。リポジトリ内の特定のブランチおよびファイル タイプに対するプル イベントまたはプッシュ イベントに基づいて、CodePipeline パイプラインの実行をトリガーできます。
ソースプロバイダーを追加 ソース構成を追加する

注: 手順 3 以降は、特定の環境とニーズに応じて設定を構成してください。

第3節の要約

このセクションでは、GitLab リポジトリを AWS CodePipeline と統合する方法を詳しく説明します。この設定により、GitLab でのコード変更が AWS 環境に自動的にデプロイされる継続的デリバリーパイプラインが有効になります。

セクション4: GitLabへの移行

GitLab を AWS と統合すると、開発とデプロイメントのワークフローを効率化する強力な機能が得られ、ソースコード管理の悩みの解決に役立ちます。この統合はいくつかの方法で実現でき、それぞれに独自の利点があります。

  • AWS CodeStar Connections を使用して GitLab を AWS サービスにリンクすると、GitLab などの外部 Git リポジトリをさまざまな AWS サービスに接続できるようになり、より一貫性のあるワークフローが実現します。このセットアップでは、GitLab リポジトリからの自動ビルド、デプロイメント、その他の重要なアクションが直接サポートされるため、開発プロセスがより統合され、合理化されます。
  • AWS CodeStar Connections を介して GitLab を AWS CodePipeline に接続すると、完全な CI/CD パイプラインを作成できるようになり、自動化が次のレベルに進みます。このアプローチでは、GitLab と AWS CodePipeline を統合し、CodeBuild や CodeDeploy などの AWS サービスを使用して、ソース管理とビルドからテストとデプロイまで、プロセス全体を自動化できます。これにより、堅牢でスケーラブルで効率的な配信プロセスが保証されます。
GitLab と AWS を併用するための新しいテクノロジーとソリューションのチャート

1. AWS CodeStar Connections を使用して GitLab を AWS サービスに接続する

AWS CodeStar Connections は、外部の Git リポジトリ (GitHub や Bitbucket など) を AWS サービスに接続できるサービスです。また、CodeStar Connections を介して GitLab を AWS サービスに接続することもできます。GitLab を使用する場合は、HTTP Git サーバーとしてカスタム接続を設定する必要があります。この方法を使用して、次の AWS サービスを GitLab に接続できます。

  • AWS サービスカタログ

AWS Service Catalog は、組織が AWS リソースを標準化および管理するのに役立ちます。GitLab と統合すると、リソース管理の透明性が向上し、変更の追跡が簡素化されます。具体的には、GitLab コミットに基づいてカタログの更新を自動化し、運用効率を高めることができます。

  • AWS コードビルド

AWS CodeBuild は、ソースコードをコンパイルし、テストを実行し、デプロイ可能なソフトウェアパッケージを作成するマネージドビルドサービスです。GitLab と CodeBuild を統合すると、コードの変更が GitLab にプッシュされるたびに自動ビルドプロセスを開始できます。これにより、ビルドの一貫性が確保され、コラボレーションとバージョン管理が容易になります。

  • AWS Glue ノートブックジョブ

AWS Glue Notebook Jobs は、データ準備と ETL (抽出、変換、ロード) タスクをインタラクティブに開発および実行できるサービスです。GitLab を Glue Notebook Jobs と統合すると、ノートブックと ETL スクリプトのバージョン管理が可能になり、チームメンバー間のコラボレーションが促進され、データ処理パイプラインの品質管理が向上します。

  • AWS プロトン

AWS Proton は、マイクロサービスとサーバーレスアプリケーションの開発とデプロイを自動化するサービスです。GitLab を AWS Proton と統合することで、インフラストラクチャをコードとして管理し、デプロイを自動化し、一貫した環境管理を実現し、開発プロセスを効率化できます。

AWS CodeStar Connections がサポートするサービスが増えるにつれて、GitLab を他の AWS サービスに接続することが容易になります。CodeStar Connections をサポートする新しいサービスを定期的に確認することをお勧めします。

  1. AWS CodeStar 接続 (CodeDeploy を含む) を介して CodePipeline を GitLab に接続する

AWS CodePipeline は、ソフトウェアのリリースプロセスを自動化する継続的デリバリーサービスです。GitLab を CodePipeline に接続するには、AWS CodeStar Connections を使用する必要があります。この設定により、GitLab リポジトリをソースとして指定し、CI/CD パイプライン全体を自動化できます。CodePipeline でサポートされる主なアクションは次のとおりです。

  • ソース管理: AWS CodeCommit、GitHub、Bitbucket、GitLab
  • ビルドとテスト: AWS CodeBuild、Jenkins
  • デプロイ: AWS CodeDeploy、Elastic Beanstalk、ECS、S3
  • 承認:手動承認
  • インフラストラクチャ管理: AWS CloudFormation
  • サーバーレス: AWS Lambda
  • テスト: AWS デバイスファーム
  • カスタムアクション: AWS Step Functions

GitLab を CodePipeline と統合することで、コード変更が GitLab にプッシュされるたびにパイプラインを自動的にトリガーし、ビルドからデプロイメントまでの一貫したプロセスを実現できます。さらに、これを GitLab のバージョン管理機能と組み合わせると、デプロイメントの履歴と状態を追跡しやすくなり、より柔軟で信頼性の高いソフトウェア配信が可能になります。

学んだこと

このガイドでは、GitLab の AWS への移行と統合に関する包括的な情報を提供しました。4 つの主なトピックを通じて、次の内容を取り上げました。

  • GitLab への並行移行: リスクを最小限に抑えながら、既存の AWS ホストリポジトリから GitLab.com に段階的に移行する方法。
  • AWS CodeBuild との統合: GitLab リポジトリと統合された強力な CI 環境をセットアップする手順。
  • AWS CodePipeline との統合: GitLab リポジトリを使用して効率的な継続的デリバリーパイプラインを構築する方法。
  • CodePipeline および CodeStar 接続のダウンストリーム統合: GitLab-AWS 接続を活用して広範なサービス アクセスを実現し、AWS エコシステム全体での一連の統合の可能性を実現します。

各組織のコードホスティングおよび統合実装戦略はそれぞれ異なるため、このチュートリアルは、独自の GitLab + AWS 統合および実装戦略の出発点として使用できます。

追加リソース

詳細情報と高度な構成については、次のリソースを参照してください。

ご質問がある場合やサポートが必要な場合は、GitLab サポートまたは AWS サポートにお問い合わせください。この包括的なガイドが、AWS と GitLab の統合の取り組みに役立つことを願っています。


弊社パートナー様はNetworld Dev Portal アカウント(無料)登録いただくと、GitLabパートナー制度や DevSecOps関連提案資料などのパートナー限定コンテンツがご覧いただけます。

DevSecOps全般、GitLab製品または本サイトについては以下よりお問い合わせ下さい。

関連記事