4

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

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

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

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

4

1 回答 1

6

组织之间的 Azure DevOps Repos 同步

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

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

1.试用Martin Hinshelwood提供的用于 Azure Devops扩展的免费 G​​it工具。关于如何使用它的一些步骤:

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

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

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

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

    在此处输入图像描述

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

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

    (您应该使用具有 repos 相关权限的PATFull 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 密钥保管库的链接机密

于 2020-04-21T03:01:48.010 回答