如何将Azure DevOps项目移动到另一个组织?

64

我在一个旧的组织(来自VSTS)中有一个项目,我想将其移动到我的新组织。

我在Azure DevOps中找不到任何关于迁移项目的选项,也没有任何关于此的信息在互联网上。

有人知道如何做吗?


如果您正在使用AzureAD来管理您的组织,则可以按照此链接进行操作。 - Jayendran
请更改已接受的解决方案,@martin的答案是最准确的方法。 - David Noreña
9个回答

54

如果您只需要移动存储库,您可以使用内置的克隆功能:

  1. 前往Azure Devops源代码库->文件
  2. 单击“克隆”
  3. 选择“生成Git凭据”

生成GIT凭据

  1. 在目标Azure DevOps中创建目标存储库
  2. 选择“导入存储库”
  3. 使用第3步中的URL和凭据

输入图像描述

  1. 完成

3
将任何本地仓库的远程仓库更改为新仓库。您可以使用 git remote set-url origin https://XXXXX@dev.azure.com/XXXXXX/XXXXX/_git/XXXXXX 命令(其中https路径是克隆URL),或手动编辑配置文件并更改远程仓库的地址。使用 git remote -v 命令验证一切是否正常。 - RonaldB
这应该是被接受的答案,我已经完成了并且运行得非常完美。 - Guilherme Flores
13
这个回答只涉及如何从GIT迁移存储库。那么如何从一个项目中迁移项目管理组件等呢? - GettingItDone
3
如果这个答案能够包含如何将项目的其他99%移动到另一个组织,那将会更加有帮助。Git仓库实际上是最容易移动的部分,也是唯一设计为易于移动的部分。这可能是楼主没有询问的唯一事项。 - undefined
2
如果这个回答能够说明如何将项目的其他99%移动到另一个组织,那将会更加有帮助。Git仓库实际上是最容易移动的部分,也是唯一设计为轻松迁移的部分。这可能是楼主没有询问的唯一事项。 - Bryan Williams
显示剩余2条评论

34

10
因为这不是一个实际的解决方案,所以我认为它不应该成为被接受的答案。 - CodeGrue
9
这句话的意思是:“这可能不是一个解决方案,但它回答了这个问题。虽然有些人可能会发现其他解决方案对他们的需求足够满足,但现实情况是,对于大多数人来说,这是正确的答案:微软目前(或者将来)没有支持它。这让我清楚地知道我没有忽略任何东西。” - Johan Kool
这并不是一个解决方案,因为问题本身就没有解决方案。所以应该接受这个答案而不是当前被接受的答案,后者是关于移动存储库的,这是 Git 而不是 Azure DevOps 的功能。我认为使用命令行在 Git 中移动存储库比使用 Azure DevOps 过程更容易,因为你需要每次使用 GUI 进行身份验证,而使用命令行只需一次即可。 - DubStep

8
如果你的 Azure DevOps 项目只使用单个 Git 存储库跟踪代码版本,因此没有看板、用户故事、任务、管道等,则可以执行以下操作:
1. 克隆项目存储库。 例如,使用 Visual Studio。 如果已经有本地存储库,就不需要克隆。
2. 删除与远程的关联。
通常情况下,需要在包含 .git 数据库文件夹的文件夹中打开命令行提示符,最可能是 Visual Studio 的解决方案文件夹,并键入 git remote rm origin。这是一个使用 git bash 的示例,显示了解决方案文件夹的内容,包括 .git 数据库和 *.sln Visual Studio 解决方案文件:
enter image description here 3. 如果还没有打开解决方案,请使用 Visual Studio 打开它。
现在应该显示许多提交等待推送到远程服务器。为了说明目的,我的玩具项目总共只有 8 次提交。
enter image description here 4. 单击向上箭头并选择新的远程服务器(在您选择的组织中),然后推送。 5. 现在已经在另一个组织中克隆了该项目。如果需要,则销毁旧组织中的项目,以完成“移动”操作。

1
这是否保留历史记录? - Joshua Drake
3
@JoshuaDrake 是的,绝对没问题。 - Frederic
2
我需要一个解决方案,可以移动所有的拉取请求、问题和工件,例如npm注册表。 - S. Ali Mihandoost

7
我知道有三个项目可以实现这一目标。
Ops Hub提供了一个付费选项 - OpsHub Visual Studio 迁移工具
有一个开源工具需要对工作项过程模板进行更改 - Azure DevOps 迁移工具
最后,还有一个非官方但仍由 Microsoft 编写的工具可创建 Azure DevOps 项目模板 - Azure DevOps Demo Generator & 提取工具
使用最后一个工具(Demo Generator),您可以将项目提取为模板,然后将其应用于新组织。由于它是演示工具,因此不提供支持,并且根据我的经验,它适用于简单项目,但在任何复杂项目上都会出现问题。

2

在其他人的答案基础上,本文关注于流水线。

Azure DevOps API

通过使用 Azure DevOps API,几乎可以迁移项目的所有方面到另一个组织,但这需要大量手动工作。下面的链接展示了所有端点、变量等信息。从这里开始,您可能需要编写PowerShell脚本并对虚拟组织进行几次测试运行。

https://learn.microsoft.com/zh-cn/rest/api/azure/devops/?view=azure-devops-rest-6.1&viewFallbackFrom=azure-devops-rest-6.0

应用内选项

如果避免使用API,就没有办法迁移保留构建或发布历史记录的流水线,但是您可以通过进入您的流水线并选择View YAML来保留配置和过程。从这里,您可以将其作为笔记带走,在新的组织/项目位置重新创建GUI步骤,或者实际采用Git仓库中的YAML标准。

我不认为有一种方法可以在API之外迁移管道变量。但是,您可以将变量移动到Azure Key Vault,并更改流水线设置(YAML)以从密钥保管库引用值。这并不需要太多的工作量,是一个很好的流程优化。

最后,如果您有任何为发布安装的本地管道代理,则需要在新组织上运行PowerShell脚本以在代理服务器上进行更新。这是一个非常简单的5分钟步骤,但目前代理池无法在不同组织之间共享。


0

顺便提一下,如果您需要更改与个人租户(例如VS企业订阅)绑定的整个Devops组织并将其移动到新租户,则可以更改AAD并将其指向新租户,例如Azure商用云上的EA租户。

在切换组织目录之前,请确保以下陈述是正确的:

  • 您是组织的项目集管理员组成员。
  • 您是源Azure AD的成员或访客,并且是目标Azure AD的成员。
  • 您的源组织中有100个或更少的用户。否则,您将不得不打开支持票证。
  • 如果目标组织中不存在用户,则可能需要将用户添加回去,因为他们将在您切换AAD时失去访问权限。

0

正如@Frederic在他的回答中提到的,我们实际上可以很容易地使用Visual Studio来完成这个任务。我已经在没有Visual Studio的情况下完成了这个任务。以下是所涉及的步骤。

  1. 将用户添加到两个组织中
  2. 配置SSH密钥
  3. 在源DevOps中更新SSH密钥并克隆存储库
  4. 检出所有分支和标签
  5. 在目标DevOps中更新SSH密钥
  6. 删除旧的并添加新的Origin
  7. 推送所有分支

命令和详细说明可以在这里找到。


11
这将移动代码,但不会移动DevOps项目。 - Mike Devenney

-2

你可以直接下载成一个zip文件,然后再将其下载到目标仓库中。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community
下载到目标仓库并不是最终操作。您还需要将其解压缩,否则它只是目标仓库中的一个压缩文件。 - Michael
这个答案在很多方面都是错误的。历史记录呢?工作项、迭代等等呢? - SmartDev

-2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接