组织之间的 Azure DevOps Repos 同步
抱歉,但据我所知,Azure Devops 服务中没有这种开箱即用的功能。
这里有类似的用户声音:在同一组织中的项目之间同步和自动将 Azure Devops Repos 与 GitHub Repos 同步。通常一个组织负责一种产品,因此 Azure Devops 不建议跨组织操作。但是,如果您确实希望在您的场景中出现这种行为,您可以使用以下两个方向:
1.试用Martin Hinshelwood提供的用于 Azure Devops扩展的免费 Git工具。关于如何使用它的一些步骤:
在您的组织中安装它Development
,它包含一项Publish Git Repo
任务。
创建一个名为 的新经典构建管道SyncRepos
,在其中添加Publish Git Repo
任务。
(Yaml 管道也很好用,但由于这是一个只存在一个任务的管道,经典管道就足够了)
配置任务。我们只需要配置 git repo url,就很简单了。
假设另一个组织中相同 repos 的名称Client
是ReposToSync
,并且这个 repos 在 ProjectA 中。因此,您应该在管道(在组织中Development
)输入的 url 应该是:
看到这个:https://anything:PAT@dev.azure.com/Client/ProjectA/_git/ReposToSync
。
(您应该使用具有 repos 相关权限的PATFull Access
。我用一个来轻松测试它,但如果您创建一个以 repos 权限为范围的 PAT,它应该会更好。它更安全!)
现在设置触发器,启用 CI 并将所有分支添加到过滤器中。
Yaml 管道在 step4 中更好,因为它支持使用通配符触发所有分支*
。看到这个。
现在在Development
组织中,当我有任何更改master
和qwe
分支时,它会自动触发管道运行。然后该任务会将Development
's repos 中的更改与 'Client' 组织中的 repos 同步。
组织中的任何更改都Development
将启动同步,如果您想在“客户端”中进行相同的行为,您还需要在“客户端”中使用另一个类似的管道。而且,如果您希望管道监控新创建的分支,使用通配符的 yaml 管道会更好。
补充:除了使用扩展中的任务外,如果您熟悉这些命令,我们还可以在 CMD 任务中使用 git 命令。
2.随时向我们的用户语音论坛发布新功能请求。如果您获得足够的选票,请求的优先级就会提高,团队会认真考虑。
希望以上所有帮助:)
更新1:
无论是 git 命令还是扩展,如果我们想让它更安全(避免在任务中直接使用 PAT 或其他机密),我们可以使用机密来存储 PAT 等重要信息。
1.查看在变量组中创建秘密变量,然后链接变量组,之后我们可以在任务中使用$( MyPat ),它不会显示在日志中。
2.也可以考虑使用Azure Key Valut。相关文档:来自 Azure 密钥保管库的链接机密。