如何从 AWS CodeCommit 迁移到极狐GitLab?

本文将分享如何从 AWS CodeCommit 服务无缝迁移到极狐GitLab,并且使用极狐GitLab 的一体化 DevSecOps 平台功能来进行软件研发。

2024 年 7 月 25 日,AWS 官方发布了一则重要通知:旗下的代码托管服务 AWS CodeCommit 服务将不再接受新用户的注册,老用户可以继续使用,但是该产品不会再添加新功能,只是维护其安全性和可靠性。

官方表述:After careful consideration, we have made the decision to close new customer access to AWS CodeCommit, effective July 25, 2024. AWS CodeCommit existing customers can continue to use the service as normal. AWS continues to invest in security, availability, and performance improvements for AWS CodeCommit, but we do not plan to introduce new features.

这项官宣也就意味着研发团队不得不寻找对应的替代品,而极狐GitLab 作为一个企业级的一体化 DevOps 平台,是可以对 AWS CodeCommit 服务进行平替的。下面的内容将完整分享如何从 AWS CodeCommit 迁移到极狐GitLab。

极狐GitLab 作为 GitLab 在中国的发行版,可以一键私有化部署,中文体验更好,下载安装可以直接查看官网: https://dl.gitlab.cn/j6rp6wgo

写在前面

本指南为使用极狐GitLab 的开发团队提供了全面信息,适用于考虑与 AWS 服务集成或计划从 AWS 托管的Git仓库迁移到 JihuLab.com 的情况。迁移指南包括以下几个主要部分:

  • 并行迁移至极狐GitLab:详细讲述了如何将托管在 AWS 上的既有仓库逐渐迁移到 JihuLab.com,同时将风险最小化。
  • 和 AWS CodeBuild集成:对极狐GitLab 和 AWS CodeBuild 的集成提供了详细的步骤,以便打造一个强大的持续集成(CI)环境。
  • 和 AWS CodePipeline 集成:详细讲述了如何将极狐GitLab 和 AWS CodBuild 进行连接,从而构建高效的持续交付(CD)流水线。
  • CodePipeline 和 CodeStar 连接的下游集成:阐述了如何利用极狐GitLab 与 AWS 的连接实现广泛的服务访问,解锁了跨AWS生态系统的一系列集成可能性。

通过这份指南,你将会学习到如何将极狐GitLab 强大的功能特性和 AWS 结合起来,从而创建高效、灵活的研发工作流。

第一部分:并行迁移至极狐GitLab

对于那些考虑将托管在 AWS 上的 Git 仓库迁移到 JihuLab.com 上的用户来说,这部分内容将介绍整个迁移过程,并且将风险最小化。通过使用极狐GitLab 的镜像能力,你可以在继续使用既有工作流的情况下对新环境进行测试。

为什么并行迁移如此重要?

大型系统的迁移往往伴随着风险,特别是对现有工作流、既有集成以及自动化流程的潜在影响。采用并行迁移能够获得以下好处:

  1. 风险最小化:让既有系统正常运行的时候,还能测试新环境。
  2. 无缝迁移:研发团队可以逐渐适应新环境。
  3. 集成测试:在新环境中完整地测试所有的测试和自动化流程。
  4. 未来适应性:使团队能够逐步在现有 CI 并行运行的情况下迁移到极狐GitLab CI/CD。

如果你决定直接从既有系统完全切换到极狐GitLab,那么就没必要执行并行迁移。

迁移步骤

第一步:设置 JihuLab.com

  • 先检查贵公司是否已经在 JihuLab.com 上有对应的群组在使用以及他们是否开启了 SSO 设置——如果确认开启,那么你会在稍后用到它。
  • 如果贵公司在 JihuLab.com 上没有对应的账号,可以直接注册创建。
  • 创建一个新的公司命名空间(在 JihuLab.com 上创建一个顶级群组)。
  • 名称的选择要能够完整地反映贵公司的情况。

第二步:导入仓库

对并行迁移来说:使用极狐GitLab 的 Pull 镜像功能将 AWS 上的仓库自动同步至 JihuLab.com。

  1. 在 JihuLab.com 上导航至目标群组。
  2. 在右上角,选择“新建项目”。
  3. 在“创建新项目”页面,点击“导入项目”。
  4. 在“导入项目页面”,点击“通过 URL 导入仓库”。
  5. 在“Git 仓库 URL”字段中输入完整的 AWS 仓库 URL。
  6. 在 Git 仓库 URL 字段下方,勾选“镜像仓库”。
  7. 设置认证:在 AWS CodeCommit 控制台,选择你想迁移仓库的克隆 URL。如果你计划将 CodeCommit 仓库导入极狐GitLab,你可以使用 HTTPS CodeCommit URL 通过极狐GitLab仓库镜像功能克隆仓库。你需要将你在 AWS IAM 用户系统中存储的 Git 凭据提供给极狐GitLab。你可以根据 AWS 官方指南来创建 AWS CodeCommit Git 凭据。

默认情况下,这项设置将每隔五分钟将 AWS 上 Git 仓库中的变更同步至 JihuLab.com。

更多详情,可以查看极狐GitLab 仓库镜像文档

第三步:测试和验证集成

  1. CI/CD 流水线:在极狐GitLab CI 中设置 .gitlab-ci.yml文件,来对既有流水线进行“复刻”。更多详情,你可以阅读如何从其他 CI 工具迁移到极狐GitLab CI/CD 这篇文章。
  2. 议题追踪:导入项目议题,然后测试工作流。
  3. 代码审核:设置合并请求流程并且测试审核工作流。

第四步:逐步迁移

  1. 从小型或者非核心项目开始来逐步熟悉如何在 JihuLab.com 上进行工作。
  2. 为团队成员提供配置并且给予一定的时间来适应新的工作流。
  3. 逐步迁移更多的项目,同时要确保集成和工作流是没问题的。

第五步:完成迁移

一旦完成所有的测试和验证,而且团队在新的环境下也感觉很舒适,那么就进行完整的迁移。对于每一个项目:

  1. 设置一个迁移日期并且通知所有干系人。
  2. 执行最终的数据同步。
  3. 从极狐GitLab 项目中移除镜像设置。
  4. 将 AWS 仓库设置为只读,然后将所有研发工作流迁移到极狐GitLb 上。

第六步:评估采用新的能力

极狐GitLab 在协作和工作流自动化方面的能力远比 CodeCommit 丰富。值得花费一些时间来学习这些能力。单就合并请求流程来讲,极狐GitLab 就要比 CodeCommit 强大很多。

等到极狐GitLab 上的仓库稳定以后,就可以很容易地采取并行的方式来体验极狐GitLab CI/CD。在生产工作流不受影响的情况下,团队可以花费一些时间来执行极狐GitLab CI/CD 自动化流程。

极狐GitLab 制品管理也非常强大,具有发布功能和多种软件包仓库。

第一部分总结

通过采用向极狐GitLab 的并行迁移方式,你可以在最小化风险的同时感受丝滑的迁移。整个流程能够让团队逐渐适应新的环境,而且确保所有的集成和自动化功能都是正确的。而一旦确定并行迁移不再是必需的时候,完全切换过来也仅仅是一个勾选框的事情(指取消镜像设置)。

第二部分:将极狐GitLab 和 AWS CodeBuild 集成

对于那些想要使用 AWS CodeBuild 来对极狐GitLab 代码仓库进行构建和测试的用户来讲,下面的分享指南将帮助完成高效 CI 流水线的设置。

前提

  • 一个极狐GitLab 账号
  • AWS 账号
  • AWS CLI(已配置好)

第一步:在 AWS CodeStar 连接中创建极狐GitLab 连接

  1. 登录 AWS 管理控制台,然后导航找到 CodeBuild service。
  2. 在左侧导航栏面板中选择“设置” > “连接”。
  3. 点击“创建连接”按钮。
  4. 选择“GitLab”作为供应商。
  5. 输入连接名称后点击“连接到极狐GitLab”。
  6. 你将被重定向到极狐GitLab 认证页面。
  7. 授予必要的权限。
  8. 一旦成功,连接状态将变为“可用”。

第二步:创建 AWS CodeBuild 项目

  1. 在 CodeBuild 仪表盘上点击“创建构建项目”。
  2. 输入项目名称和描述。
  3. 在源设置中,选择“GitLab”作为供应商。
  4. 选择上一步创建好的连接,然后指定极狐GitLab 仓库和分支。

注意:从第三步开始,请根据您的特定环境和需求配置设置

第二部分总结

这部分详细介绍了如何将极狐GitLab 仓库和 AWS CodeBuild 进行集成。此项设置会开启一个持续集成流水线,当存储在极狐GitLab 仓库中的代码发生变更时,使用 AWS CodeBuild 就会自动完成变更代码的构建和测试。

第三部分:将极狐GitLab 和 AWS CodeBuild 进行集成

对于那些想要使用 AWS CodePipeline 来完成极狐GitLab 仓库代码的持续交付的用户来说,下面的内容将详细阐述如何实现这一点。现在这一点已经非常容易实现了,因为极狐GitLab 已经成为了 AWS CodeStar 的连接器供应商。

前提

● 一个极狐GitLab 账号
● AWS 账号
● AWS CLI(已配置好)

第一步:在 AWS CodeStar 连接中创建极狐GitLab 连接

  1. 登录 AWS 管理控制台,然后导航找到 CodePipeline 服务。
  2. 在左侧导航栏中选择“设置” > “连接”。
  3. 点击“创建连接”按钮。
  4. 选择“GitLab”作为供应商。
  5. 输入连接名称后点击“连接到极狐GitLab”。
  6. 你将被重定向到极狐GitLab 认证页面。
  7. 授予必要的权限。
  8. 一旦成功,连接状态将变为“可用”。

第二步:创建 AWS CodePipeline

  1. 在 CodePipeline 仪表盘中点击“创建流水线”。
  2. 输入流水线名称然后点击“下一步”。
  3. 将“GitLab”作为源供应商。
  4. 选择上一步创建好的连接,然后指定极狐GitLab 仓库和分支。
  5. 选择触发方式:你可以根据对仓库中特定分支和文件类型的拉取或推送事件来触发CodePipeline流水线的执行。

注意:从第三步开始,请根据您的特定环境和需求配置设置。

第三部分总结

这部分详细介绍了极狐GitLab 仓库和 AWS CodePipeline 的集成。此项设置将开启一个持续交付流水线,当极狐GitLab 仓库中的代码发生变更时,变更会被自动部署到你的 AWS 环境中。

第四部分:迁移到极狐GitLab

极狐GitLab 和 AWS 的集成能够解锁很多丰富的功能,用以简化你的研发工作流,而且能够帮助你解决源代码管理问题。这种集成可以通过多种方式来实现,每一种都有其独特的优势:

  • 使用 AWS 服务中的 AWS CodeStar 连接完成和极狐GitLab 的集成,这种方式能够通过使用外部 Git 仓库(诸如极狐GitLab)和不同 AWS 服务的连接来构建统一的工作流。此项设置支持直接从极狐GitLab 仓库来实现自动化构建、部署和其他必要的执行步骤,从而让研发工作流更加集成和简化。
  • 通过 AWS CodeStar 连接来实现极狐GitLab 和 AWS CodePipeline 的集成,通过允许创建完整的CI/CD流水线,将自动化提升到一个新的水平。这种方式的集成能够让你自动化整个流程——从源代码控制、构建到测试和部署,这些使用 AWS 服务即可,比如 CodeBuild 和 CodeDeploy。这确保了流程的可靠、可扩展以及高效。

  1. 使用 AWS CodeStar 连接将极狐GitLab 和 AWS 服务连接起来

AWS CodeStar 连接是一个允许你将外部 Git 仓库(诸如 GitHub 或者 Bitbucket)连接 AWS 服务的服务。你还可以通过 CodeStar 连接来将极狐GitLab 连接到 AWS 服务上。当使用极狐GitLab 时,可能你需要将自定义连接设置为 HTTP Git 服务器。使用这种方式可以将下面的 AWS 服务连接到极狐GitLab:

  • AWS Service Catalog

AWS 服务目录用来帮助组织对 AWS 资源进行标准化和管理。和极狐GitLab 集成能够改善资源管理的透明度并简化变更追溯。特别地,你还可以基于极狐GitLab 代码提交来自动化目录的更新,这又进一步提升了操作效率。

  • AWS CodeBuild

AWS CodeBuild 是一个管理构建的服务,它能够对源代码进行编译、运行测试并且生成可部署的软件包。极狐GitLab 和 CodeBuild的集成能够实现只要极狐GitLab 仓库中的代码有变更,就自动进行整个构建流程。这种构建方便的连续性让协作和版本控制变得更加容易。

  • AWS Glue Notebook Jobs

AWS Glue Notebook Jobs 是一项服务,允许你交互式地开发和运行数据准备和ETL(提取、转换、加载)任务。极狐GitLab 和 Glue Notebook Job 的集成能够对 notebook 和 ETL 脚本实现版本控制,提高团队成员的协作效率,改善数据流程流水线的质量管理。

  • AWS Proton

AWS Proton 是一个能够自动化研发、部署微服务和无服务器应用程序的服务。通过将极狐GitLab 和 AWS Proton 进行集成,你可以对 IaC(基础设施即代码) 进行管理、自动化部署,而且能够确保环境管理的连续性,最终提高研发效率。

因为 AWS CodeStar 连接支持多种服务,因此极狐GitLab 和其他 AWS 服务的集成就变得非常容易。定期检查支持CodeStar连接的新服务是非常有必要的。

  1. 通过 AWS CodeStar 连接(包括 CodeDeploy)将极狐GitLab 和 CodePipeline 连接起来

AWS CodePipeline 是一个持续交付服务,能够自动化软件的发布流程。为了将极狐GitLab 和 CodePipeline 进行连接,你需要使用 AWS CodeStar Connection。此项设置允许你将极狐GitLab 指定为源代码仓库,然后自动化整个 CI/CD 流水线。CodePipeline 支持的主要操作包括:

  • 源代码管理:AWS CodeCommit、GitHub、GitLab、Bitbucket
  • 构建和测试:AWS CodeBuild、Jenkins
  • Deploy:AWS CodeDeploy、Elastic Beanstalk、ECS、S3
  • 批准:手动批准
  • 基础设施管理:AWS CloudFormation
  • 无服务器:AWS Lambda
  • 测试:AWS Device Farm
  • 自定义操作:AWS Step Functions

通过极狐GitLab 和 CodePipeline 的集成,无论何时极狐GitLab 中的代码发生变更,都能自动化触发整个流水线,完成从构建到部署。此外,将此功能和极狐GitLab 的版本控制能力结合起来,能够更容易地追踪部署历史、状态,最终带来灵活、可靠的软件交付。

总结

上面分享的内容提供了关于迁移到AWS并集成GitLab的全面信息。通过上面的四个重要主题,我们涵盖了:

  • 并行迁移到极狐GitLab:如何将托管在 AWS 上的 Git 仓库逐步迁移到极狐GitLab 上,而且能将风险最小化。
  • 和 AWS CodeBuild 集成:设置与极狐GitLab仓库集成的强大CI(持续集成)环境的步骤。
  • 和 AWS CodePipeline 集成:如何使用极狐GitLab 仓库构建高效的持续交付流水线。
  • CodePipeline 和 CodeStar 连接的下游集成:利用极狐GitLab-AWS 连接获取广泛的服务访问,解锁了跨AWS生态系统的一系列集成可能性。

因为每个组织的代码托管和集成实现策略都是独一无二的,本文可能只能作为你使用极狐GitLab + AWS 来构建企业自身所需工作、流程的一个初步指南。

本文由博客群发一文多发等运营工具平台 OpenWrite 发布