组织之间的Azure DevOps Repos同步

时间:2020-04-20 06:00:59

标签: azure-devops azure-repos

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

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

注意::我们能够借助PAT和GIT Auth首次将存储库从一个组织手动克隆到另一个组织,但是当我们要更新或重新同步时会出现问题编码。我们必须手动重新导入存储库(通过删除现有存储库)以进行更改。

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

1 个答案:

答案 0 :(得分:3)

组织之间的Azure DevOps Repos同步

对不起,但是据我所知,Azure Devops Service中没有这样的现成功能。

这里有类似的用户声音:Sync between projects in same orgAutomatically Sync Azure Devops Repos with GitHub Repos。通常,一个组织负责一种产品,因此Azure Devops不建议跨组织操作。但是,如果您确实希望在这种情况下出现此行为,则可以使用以下两个方向:

1。尝试从 Martin Hinshelwood 免费获得Git Tools for Azure Devops扩展名。有关如何使用它的一些步骤:

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

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

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

  3. 配置任务。我们只需要配置git repo url,所以非常简单。

    enter image description here

    假定另一个组织Client中相同存储库的名称为ReposToSync,并且此存储库位于ProjectA中。因此,您应该在管道(组织Development中)输入的网址应为:

    请参见thishttps://anything:PAT@dev.azure.com/Client/ProjectA/_git/ReposToSync

    (您应该使用具有与回购相关的权限的PAT。我使用Full Access进行测试很容易,但是如果创建PAT,它应该好很多受回购权限限制。它更安全!)

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

    enter image description here

    Yaml管道在step4中更好,因为它支持使用通配符*触发所有分支。参见this

  5. 现在在Development组织中,当我在masterqwe分支机构中进行任何更改时,它将自动触发管道运行。然后该任务会将Development仓库中的更改与“客户”组织中的仓库同步。

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

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

2。随时向我们的User Voice forum发布新功能请求。如果您获得足够的选票,则请求的优先级会提高,团队会认真考虑。

希望以上所有都对您有帮助:)

更新1:

无论git命令或扩展名是什么,如果我们想使其更加安全(避免直接在任务中使用PAT或其他机密),我们都可以使用机密来存储重要信息,例如PAT。 / p>

1。请参见create secret variable in Variable Group,然后参见link the variable group,之后我们可以在任务中使用$(MyPat),它将不会显示在日志中。

2。此外,您也可以考虑使用Azure Key Valut。相关文档:Link secrets from an Azure key vault