azure-devops - 组织之间的 Azure DevOps Repos 同步
问题描述
我们有两个 Azure DevOps 组织,1. 开发 2. 客户
我想知道我们是否可以以安全的方式将 Azure DevOps Repos 从一个组织(开发)同步到不同的组织(客户端)?如果可能,从一个组织安全地同步到另一个组织的最佳方式是什么?
注意:在 PAT 和 GIT Auth 的帮助下,我们第一次能够手动将 Repo 从一个组织克隆到另一个组织,但是当我们想要更新或重新同步代码时就会出现问题。我们必须手动重新导入 repo(通过删除现有的)来进行更改。
我们需要以编程方式并针对另一个组织执行此操作。
解决方案
组织之间的 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 相关权限的PAT
Full 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 密钥保管库的链接机密。
推荐阅读
- python - Django:在 Azure 应用服务上找不到模块 - Azure DevOps CD
- javascript - 如何在音频/视频元素上捕获 FastForward 媒体键
- python-3.x - 从开始日期获取日期名称
- c# - aspnet-api-versioning : 如果在对 api 的调用中提供了错误的 Api 版本,为什么 api 返回 200 (ok)
- ruby-on-rails - Ruby 安装问题
- excel - 基于if条件限制Excel VBA中的设置范围
- javascript - 如何在jquery中设置提交按钮每个具有功能的选项卡?
- javascript - 无法理解为什么状态内的单个数组不起作用
- docker - Docker swarm 无法从 Dockerfile 正确构建
- php - 如何从数据库中查询 HTML 表格内容的数据