迁移概述

从 Azure DevOps Server 迁移到 Azure DevOps Services 对于希望利用基于云的协作、可伸缩性和增强功能的组织来说是必不可少的一步 在本概述中,我们将探讨将有价值的数据从本地 Azure DevOps 服务器传输到基于云的 Azure DevOps 服务的选项。

无论选择哪种迁移选项,我们建议确定最重要的资产,例如源代码和工作项。 应考虑数据大小、组织复杂性,并确保在实际迁移之前有足够的时间来运行测试,以实现平稳成功的过渡。

迁移方法

根据采用 Azure DevOps Services 的具体动机,评估每种迁移方法的优缺点至关重要。 正确的策略取决于你的独特环境和需求。

选项 建议方案 限制
1:手动迁移 用于较小的项目或特定数据子集。 并非所有数据都可以以完全保真度进行迁移,并且会受到限制。 此迁移不支持迁移 XML 模板,因此你需要将流程模板重新创建为继承模板。
2:Azure DevOps 数据迁移工具 用于具有不同数据类型和复杂结构的中大规模迁移。 只能将一个 Azure DevOps Server 集合“直接迁移”到一个新的 Azure DevOps Services 组织,无需进行任何修改。 有关详细信息,请参阅“限制”部分
3:基于 API 的迁移 为具有独特迁移要求或自动化需求的组织提供灵活性和自定义功能。 可能会出现低保真、数据丢失和 ID 更改。 有关详细信息,请参阅“限制”部分

选项 1:手动迁移

例如,当 Microsoft 的 Azure DevOps 团队选择从 Azure DevOps Server 迁移到 Azure DevOps Services 时,我们也决定从 Team Foundation 版本控制 (TFVC) 迁移到 Git。 迁移需要大量的规划,但在迁移时,我们使用 TFVC 源的“提示”版本创建了一个新的 Git 存储库,并将我们的历史记录遗留在 Azure DevOps Server 中。 我们还移动了活动工作项,留下了所有旧 bug、已完成的用户故事和任务等。

手动迁移过程

  1. 确定需要迁移的最重要资产,通常是源代码、工作项或两者兼而有之。 Azure DevOps Server 中的其他资产(生成管道、测试计划等)更难手动迁移。
  2. 确定一个合适的时间进行转换。
  3. 准备目标组织。 创建所需的组织和团队项目、预配用户等。
  4. 迁移数据。
  5. 考虑将源 Azure DevOps Server 部署设置为只读。 你可通过以下方式完成此操作:
    • 调整项目级权限:在项目级别将所有用户或组的权限设置为只读,可以通过修改“项目设置”中的安全角色来实现。
    • 修改存储库设置:对于每个存储库,可以更改设置使其为只读,这涉及调整每个用户或组的权限,使其仅允许读取操作。
    • 使用内置安全组:利用内置安全组更有效地管理权限。 可以将用户分配到“读取者”等组,以提供只读访问权限。
    • 脚本权限更改:如果有多个项目或存储库,则可能需要为它们编写脚本。 可以使用 Azure CLI DevOps 扩展列出所有权限,并根据需要进行更新。
    • 禁用存储库功能:禁止访问存储库(包括生成和拉取请求),但使其可被发现并发出警告。 转到项目设置>存储库>,进入存储库,然后在“禁用存储库”旁边,将开关移动到开启

选项 2:Azure DevOps 数据迁移工具

Azure DevOps 数据迁移工具是 Microsoft 提供的一组实用工具,可帮助将数据从 Azure DevOps Server 迁移到 Azure DevOps Services。 这些工具提供了一种简化的方法来迁移各种工件,包括源代码、工作项、测试用例和其他与项目相关的数据。

在启动迁移过程之前,这些工具可以执行预迁移分析,以评估源环境的准备情况,并确定可能影响迁移的潜在问题或依赖关系。 评估准备情况,以便你可以提前计划和缓解潜在的挑战。

迁移工具限制

该工具允许将一个 Azure DevOps Server 集合“直接迁移”到一个新的 Azure DevOps Service 组织,无需进行任何修改,原因如下:

  • 数据完整性和一致性:
    • 迁移数据时,保持完整性和一致性至关重要。 允许在迁移过程中进行修改可能会导致数据损坏或不一致。
    • 该工具可确保数据在传输过程中保持完整,从而最大限度地降低出错的风险。
  • 源数据保留:
    • 迁移工具旨在在目标环境中忠实地复制源数据。
    • 修改可能会改变原始数据,从而可能导致迁移数据和源数据之间的差异。
  • 可预测行为:
    • 通过限制修改,该工具确保了迁移过程中的可预测行为。
    • 用户可以依赖一致的结果,而不会出现意外的更改。
  • 关注迁移,而不是转换:
    • 迁移工具的主要目的是将数据从一个位置移动到另一个位置。
    • 数据转换(如修改值)通常在迁移后单独处理。
  • 支持的迁移方案:
    • 目前不支持将项目从一个 Azure DevOps Services 组织移到另一个 Azure DevOps Services 组织。
    • 不支持从一个 Azure DevOps Server 实例迁移到另一个实例。

可以在迁移之前或之后清除不需要的数据。

迁移工具过程

  1. 完成先决条件,例如将 Azure DevOps Server 更新到两个最新版本之一。
  2. 验证你想要移动到 Azure DevOps Services 的每个集合。
  3. 生成迁移文件。
  4. 为迁移过程准备所有内容。
  5. 执行测试运行。
  6. 进行迁移。
  7. 确认用户和数据已迁移,并且集合按预期运行。

选项 3:基于 API 的迁移

如果无法使用数据迁移工具,但仍需要比 选项 2更高的保真迁移,请考虑使用利用公共 API 移动数据的各种工具。 这些工具包括在 Visual Studio Marketplace 中提供的扩展。

基于 API 的迁移限制

基于 API 的迁移存在以下限制:

  • 低保真迁移:
    • 限制:基于 API 的工具提供比手动复制更高的保真度,但保真度仍然相对较低。
    • 含义:虽然这些工具提供了一些保真度,但它们并不能保留数据的所有方面。
      • 示例:它们都未保留 TFVC 更改集(Team Foundation 版本控制)的原始日期。
      • 许多人也不会保留工作项修订的更改日期。
  • 数据丢失和 ID 更改:
    • 限制:在迁移期间,工具会重播工作项更改、TFVC 更改集、包源和管道工件。
    • 含义:此过程可能会导致数据丢失、生成新 ID 以及更改创建、修改和关闭日期。
      • 示例:与特定日期关联的历史上下文可能会丢失,从而影响报告和可跟踪性。

基于 API 的迁移过程

一般来说,只有在超出手动复制的额外保真度至关重要的情况下,我们才建议采用这种方法。 如果你决定采用这种方法,你可以考虑聘请一位具有一种或多种工具经验的顾问,并在最终迁移之前进行测试迁移。

许多组织只需对他们工作的一部分进行非常高保真度的迁移。 新工作可能直接在 Azure DevOps Services 中启动。 其他对保真度要求不那么严格的工作,可以使用其他方法进行迁移。

支持的进程模型

Azure DevOps Services 支持以下进程模型:

默认情况下,在 Azure DevOps 服务中,托管 XML 被关闭。 仅当你在 Azure DevOps Server 中自定义项目时,我们才会在迁移过程中启用托管 XML 流程模型。 项目在托管 XML 上后,就可以升级为迁移后继承状态

关键原则

迁移到 Azure DevOps Services 时,请记住以下关键原则和限制:

  • Azure DevOps 服务仅支持英语:Azure DevOps Server 支持多种语言,但目前 Azure DevOps Services 仅支持英语。 如果你的集合使用非英语语言或过去使用非英语,并且你在升级过程中将语言转换为英语,则无法使用数据迁移工具。
  • 继承:一个从敏捷、Scrum 或 CMMI 过程模板创建的项目,从来没有定制过,在迁移之后就处于继承过程模型上。
  • 托管 XML:具有自定义项的任何项目都使用托管 XML 进程模型。
  • 每个自定义项目的过程:尽管 Azure DevOps Services 允许项目共享进程,但数据迁移工具为每个自定义团队项目创建托管 XML 进程。 例如,如果你有 30 个自定义项目,那么你就有 30 个托管 XML 进程要管理。 如果要为所有项目进一步自定义托管 XML 进程,则必须分别更新每个托管 XML 流程。
  • 进程验证:数据迁移工具的进程验证检测每个项目的目标进程模型。 在迁移之前,需要修复托管 XML 项目的任何进程验证错误。 你可能需要考虑更新项目的流程,以匹配我们的其中一个流程(敏捷、Scrum 或 CMMI),从而利用继承流程模型。 请参阅我们的文档,了解有关流程验证类型的更多信息。

资源

后续步骤