组织之间的 Azure DevOps Repos 同步

pra*_*ish 2 azure-devops azure-repos

我们有两个 Azure DevOps 组织,1. 开发 2. 客户端

我想知道我们是否可以以安全的方式将 Azure DevOps Repos 从一个组织(开发)同步到另一个组织(客户端)?如果可能,从一个组织安全地同步到另一个组织的最佳方式是什么?

注意:我们可以在 PAT 和 GIT Auth 的帮助下第一次手动将 Repo 从一个组织克隆到另一个组织,但是当我们想要更新或重新同步代码时会出现问题。我们必须手动重新导入 repo(通过删除现有的)来进行更改。

我们需要以编程方式对另一个组织执行此操作。

Lan*_*SFT 5

组织之间的 Azure DevOps Repos 同步

抱歉,但据我所知,Azure Devops 服务中没有这样的开箱即用功能。

这里有类似的用户声音:在同一组织中的项目之间同步Automatically Sync Azure Devops Repos with GitHub Repos。通常一个组织负责一种产品,因此 Azure Devops 不建议跨组织操作。但是,如果您确实希望在您的场景中使用这种行为,则可以使用以下两个方向:

1.试用来自Martin Hinshelwood 的免费Git Tools for Azure Devops扩展。关于如何使用它的一些步骤:

  1. 在您的Development组织中安装它,它包含一项Publish Git Repo任务。

  2. 创建一个名为 的新经典构建管道SyncReposPublish Git Repo在其中添加任务。

    (Yaml 管道也运行良好,但由于这是一个仅存在一项任务的管道,经典管道就足够了)

  3. 配置任务。我们只需要配置git repo url,就很简单了。

    在此处输入图片说明

    假设另一个组织的同一个 repos 的名称ClientReposToSync,并且这个 repos 在 ProjectA 中。因此,您应该在管道中(在组织中Development)输入的 url应该是:

    看到这个https://anything:PAT@dev.azure.com/Client/ProjectA/_git/ReposToSync

    (你应该使用一个具有 repos 相关权限的PAT。我用Full Access一个来轻松测试它,但如果你创建一个在 repos 权限范围内的 PAT应该会好得多。它更安全!)

  4. 现在设置触发器,启用 CI 并将所有分支添加到过滤器中。

    在此处输入图片说明

    Yaml 管道在 step4 中更好,因为它支持使用通配符触发所有分支*。看到这个

  5. 现在在Development组织中,当我在masterqwe分支中有任何变化时,它会自动触发管道运行。然后任务会将Development's repos 中的更改与 'Client' 组织中的 repos同步。

    Development组织中的任何更改都将开始同步,如果您想在“客户端”中保持相同的行为,则还需要在“客户端”中使用另一个类似的管道。并且,如果您希望管道监控新创建的分支,带有通配符的 yaml 管道会更好。

另外:除了使用扩展中的任务外,如果您熟悉这些命令,我​​们还可以在CMD任务中使用git命令。

2.随时向我们的用户语音论坛发布新功能请求。如果您获得足够的选票,请求的优先级会增加,团队会认真考虑。

希望以上所有帮助:)

更新1:

无论是git命令还是扩展,如果我们想让它更安全(避免在任务中直接使用PAT或其他秘密),我们可以使用秘密来存储像PAT这样的重要信息。

1.参见在变量组中创建秘密变量,然后链接变量组,之后我们可以在任务中使用$(MyPat),它不会显示在日志中。

2.也可以考虑使用Azure Key Valut。相关文档:从 Azure Key Vault 链接机密