公開:8月 26, 2024
2分で読めます
この記事では、AWSサービスからGitLabに移行し、DevSecOpsプラットフォームとシームレスに統合する方法をわかりやすく解説します。
2024年7月25日に、AWSが自社のCodeCommitサービスについて重要な発表を行いました。詳細はAWSの公式ブログ記事(外部サイト)に記載されていますが、CodeCommitでの新規顧客の利用受付が終了することになりました。既存のお客様は引き続きサービスを利用できるものの、今後AWSが新機能を実装することはなく、セキュリティ、可用性、パフォーマンスの改善のみに注力するとのことです。
今回の発表は、開発チームがリポジトリを別のGitプロバイダーに移行することを検討するきっかけとなっています。これらの変更をふまえ、お客様がGitLabに移行して他のAWSサービスと統合できるように、抱括的なガイドをご用意しました。
注: 移行に関するAWSの公式推奨事項の詳細については、AWSのブログ記事(外部サイト)をご覧ください。
このガイドでは、GitLabを使用していてAWSサービスとの統合を検討している開発チームや、AWSにホストされているGitリポジトリからGitLab.comに移行予定の開発チーム向けに包括的な情報を提供します。このガイドは次の3つの主要セクションで構成されています。
このガイドを通して、GitLabとAWSの強力な機能を組み合わせ、効率的で柔軟な開発ワークフローを作成する方法を学びましょう!
AWSにホストされているGitリポジトリをGitLab.comに移行することを検討中の方向けに、段階的なアプローチについて取り上げる本セクションでは、リスクを最小限に抑えながら移行を達成する方法をご紹介します。GitLabのミラーリング機能を活用すれば、既存の開発フローを維持しながら、新しい環境をテストできます。
大規模なシステムの移行には常にリスクが伴います。特に、実施中の開発作業や既存のインテグレーション、自動化されたプロセスに影響が生じる可能性があります。並行移行アプローチを採用すると、次のようなメリットがあります。
1. リスクの最小化:既存のシステムを稼働させた状態で新しい環境をテストできます。
2. シームレスな移行:開発チームが新しいシステムに少しずつ慣れることができます。
3. インテグレーションテスト:すべてのインテグレーションと自動化を新しい環境で徹底的にテストできます。
4. 将来性:既存のCIと並行して、チームが徐々にGitLab CI/CDに移行できるようにします。
直接GitLabに一括で移行することが望ましいとわかっている場合は、並行移行を行う必要はありません。
会社で使用中のGitLab.comのグループがあるかどうか、またシングルサインオン(SSO)を設定済みであるかどうかを確認します。グループがあり、シングルサインオンを設定済みである場合は、両方とも使用することになります。
GitLab.comに会社で使用しているグループがない場合は、GitLab.comにアクセスして新規アカウントを作成するか、既存のアカウントにログインしてください。
会社用のネームスペース(Gitlab.comのルートレベルのグループ)を新たに作成します。
ネームスペースに、(これまでに使用されていない)会社に合った名前を付けます。
並行移行の場合:GitLabのプルミラーリング機能を使用して、AWSにホストされているリポジトリからGitLab.comに変更を自動的に同期します。
この設定を行うと、デフォルトでは5分ごとにAWSにホストされているリポジトリからGitLab.comに変更が自動的にプルされます。
詳細については、リポジトリのミラーリングに関するドキュメントをご参照ください。
.gitlab-ci.yml
ファイルを設定します。他のCIツールからGitLab CI/CDへの移行の計画について詳細をご確認ください。詳細については、CodeCommitからGitLabへの移行の自動化をご参照ください。
すべてのテストと検証が完了し、新しい環境にチームが慣れてきたら、完全な移行の計画を立てます。プロジェクトごとに以下の対応を行います。
GitLabでデベロッパーが利用できるコラボレーションとワークフローの自動化機能は、CodeCommitと比べてはるかに豊富です。これらの機能について理解するには、ある程度時間がかかります。中でもマージリクエストプロセスは、CodeCommitよりも強力です。
GitLab上でリポジトリが安定させてしまえば、既存のソリューションと並行して非常に簡単にGitLab CI/CDを試せることになるでしょう。本番環境のワークフローはそのままに、時間をかけてGitLab CI/CDの自動化を完成させることができるのです。
GitLabのアーティファクト管理も、リリース機能や多くのパッケージレジストリで非常に役に立ちます。
GitLabへの並行移行アプローチを採用すると、リスクを最小限に抑えながらスムーズな移行を実現できます。このプロセスを通じて、チームは新しい環境に徐々に適応でき、すべてのインテグレーションと自動化が正しく機能するようになります。並行移行を行う必要がないとわかっていて一括で移行する場合でも、スキップできるのは1つのチェックボックス設定のみです。
AWS CodeBuildを使用して、GitLabリポジトリを構築してコードをテストしたい方は、こちらの完全ガイドを参考にして、CIパイプラインを効率的に設定してください。
注:ステップ3以降では、ご自身の環境とニーズに応じて設定を行ってください。
このセクションでは、GitLabリポジトリをAWS CodeBuildと統合する方法について詳しく説明しました。このように設定することで、GitLabで行ったコード変更がAWS CodeBuildによって自動的にビルド・テストされる継続的インテグレーションパイプラインを実現できます。
AWS CodePipelineを使用してGitLabリポジトリからの継続的デリバリーを実装しようとしている方は、この詳細なガイドを参考にしてください。GitLabをAWS CodeStar Connectionsプロバイダーとして利用できるようになったため、これまでよりも統合しやすくなりました。
注:ステップ3以降では、ご自身の環境とニーズに応じて設定を行ってください。
このセクションでは、GitLabリポジトリをAWS CodePipelineと統合する方法について詳しく説明しました。このように設定することで、GitLabで行ったコード変更が自動的にAWS環境にデプロイされる継続的デリバリーパイプラインを実現できます。
GitLabにAWSを統合すると、開発ワークフローとデプロイワークフローを効率化する強力な機能を利用できるようになり、ソースコード管理に伴う問題を解決しやすくなります。統合方法は次のようにいくつかあり、それぞれに独自のメリットがあります。
1.AWS CodeStar Connectionsを使ってGitLabとAWSサービスを接続する
AWS CodeStar Connectionsは、外部のGitリポジトリ(GitHubやBitbucketなど)をAWSサービスと接続するためのサービスです。また、CodeStar Connections経由でGitLabをAWSサービスに接続することもできます。GitLabを使用する場合、HTTP Gitサーバーとしてカスタム接続を設定しなければならない可能性があります。 この方法でGitLabに接続できるAWSサービスは以下のとおりです。
AWS Service Catalogは、組織におけるAWSリソースの標準化および管理を支援します。AWS Service CatalogをGitLabと統合すると、リソース管理の透明性が向上し、変更を追跡しやすくなります。具体的には、GitLabのコミットに基づいてカタログの更新を自動化し、運用効率を向上させることができます。
AWS CodeBuildは、ソースコードをコンパイルし、テストを実行し、デプロイできるソフトウェアパッケージを生成するマネージド型のビルドサービスです。GitLabとCodeBuildを統合すると、GitLabにコード変更がプッシュされるたびに自動化されたビルドプロセスが開始されるようになります。これにより、ビルドの一貫性が確保され、コラボレーションとバージョン管理を容易に進められます。
AWS Glueノートブックジョブは、データの準備とETL (抽出、変換、ロード)タスクを対話形式で開発して実行できるサービスです。GitLabとGlueノートブックジョブを統合すると、ノートブックとETLスクリプトのバージョン管理を行えるようになり、チームメンバー間のコラボレーションが促進され、データ処理パイプラインの品質管理が強化されます。
AWS Protonは、マイクロサービスとServerlessアプリケーションの開発とデプロイを自動化するサービスです。GitLabとAWS Protonを統合することで、インフラストラクチャをコードとして管理し、デプロイを自動化し、一貫した環境管理を実現できるため、開発プロセスをさらに効率化できます。
AWS CodeStar Connectionsのサポート対象のサービスが増えるにつれ、より多くのAWSサービスをGitLabとさらに簡単に接続できるようになります。そのため、CodeStar Connectionsを新たにサポートするサービスを定期的にチェックすることをお勧めします。
AWS CodePipelineは、ソフトウェアのリリースプロセスを自動化する継続的デリバリーサービスです。GitLabとCodePipelineを接続するには、AWS CodeStar Connectionsを使用する必要があります。この設定方法を用いると、GitLabリポジトリをソースとして指定し、CI/CDパイプライン全体を自動化できます。 CodePipelineがサポートする主なアクションは以下のとおりです。
GitLabとCodePipelineを統合すると、GitLabにコード変更がプッシュされるたびにパイプラインが自動的にトリガーされるため、一貫したプロセスでビルドからデプロイまでを行えます。さらに、これをGitLabのバージョン管理機能と組み合わせることで、デプロイの履歴と状態を簡単に追跡できるようになり、より柔軟で信頼性の高いソフトウェアデリバリーを実現できます。
このガイドでは、GitLabへの移行、およびGitLabとAWSとの統合に関する包括的な情報を提供しました。4つの主なトピックを通して、以下の内容を取り上げました。
コードホスティングと統合の実装戦略は組織ごとに異なります。このガイドをチュートリアルとして、貴社独自のGitLab とAWSの統合および実装戦略の出発点としてご利用ください。
より詳しい情報と高度な設定については、以下のリソースを参照してください。
ご質問がある場合やサポートが必要な場合は、GitLabサポートまたはAWSサポートまでお問い合わせください。みなさまがAWSとGitLabの統合を始める上で、こちらの総合ガイドがお役に立てば幸いです。
監修:小松原 つかさ @tkomatsubara
(GitLab合同会社 ソリューションアーキテクト本部 シニアパートナーソリューションアーキテクト)