@rajistics: OpenHands Enterprise 现已支持 Azure DevOps。现在,如果你在工作项或 PR 上发表评论,OpenHands 会拾取它…
摘要
OpenHands Enterprise 现与 Azure DevOps 集成,允许用户评论工作项或 PR,OpenHands 会自动执行工作并在 Azure Repos 中打开拉取请求。
查看缓存全文
缓存时间: 2026/07/08 08:29
OpenHands Enterprise 现可与 Azure DevOps 配合使用。因此,当您在工作项或 PR 上添加评论时,OpenHands 会接手处理,并在 Azure Repos 中创建拉取请求。我知道许多团队在 Azure DevOps 中工作,但常被仅支持 GitHub 的工具忽略。此功能正是为您准备的。@OpenHandsDev 关于 @AzureDevOps 的文档 https://docs.openhands.dev/enterprise/integrations/azure-devops…
Azure DevOps - OpenHands 文档
来源:https://docs.openhands.dev/enterprise/integrations/azure-devops
本指南介绍如何将 Azure DevOps Services 连接到 OpenHands Enterprise 实例。此集成允许用户使用 Microsoft Entra ID 登录,访问 Azure Repos,创建分支和拉取请求,并使用 Azure Boards 工作项或拉取请求评论作为 OpenHands 工作流的上下文。
先决条件
- 使用 Replicated 或独立 Helm 部署的 OpenHands Enterprise 实例。
- 一位可以注册应用程序并创建客户端机密的 Microsoft Entra 管理员。
- 一个 Azure DevOps Services 组织、项目和仓库。
- 拥有要用于 OpenHands 的项目和仓库访问权限的 Azure DevOps 用户。
- OpenHands 能够访问
login.microsoftonline.com和dev.azure.com的网络。 - 如果计划从 Azure DevOps Service Hooks 触发自动化,则需要 Azure DevOps 能够访问 OpenHands 应用 URL 或自动化 Webhook URL 的网络。
注册 Microsoft Entra 应用程序
在 Azure 门户中,为 OpenHands 创建一个 Microsoft Entra 应用注册。
- 导航到 Microsoft Entra ID > 应用注册。
- 点击 新注册。
- 输入名称,例如
OpenHands Azure DevOps。 - 选择组织支持的帐户类型。
- 添加 Web 重定向 URI:
https://auth.app.<your-domain>/realms/allhands/broker/azure_devops/endpoint。将<your-domain>替换为 OpenHands Enterprise 实例的域名。如果已配置自定义身份验证主机名,请使用该主机名代替auth.app.<your-domain>。 - 点击 注册。
- 复制 目录(租户)ID 和 应用程序(客户端)ID。
- 转到 证书和机密,创建一个客户端机密。离开页面前复制机密值。
- 如果租户需要显式的 API 权限,请添加用户访问所需的 Azure DevOps 委托权限,并授予管理员同意。OpenHands 在登录时会请求以下 Microsoft 标识作用域:
openid email profile offline_access https://app.vssps.visualstudio.com/.default
配置 Azure DevOps 访问权限
确保将登录 OpenHands 的用户拥有访问所需 Azure DevOps 组织、项目和仓库的权限。OpenHands 使用登录用户的 Azure DevOps 访问令牌进行仓库发现和 Git 操作。
OpenHands 中的仓库名称使用以下格式:organization/project/repository。例如:myorg/myproject/myrepo
配置管理控制台
根据 OpenHands Enterprise 的部署方式选择相应路径。
- Replicated
- 独立 Helm
打开 OpenHands Enterprise 实例的 Replicated 管理控制台,进入应用配置页面。
在 Azure DevOps 身份验证 中:
- 启用 Azure DevOps 身份验证。
- 输入 Microsoft Entra 租户 ID。
- 如果要设置默认组织,请输入 Azure DevOps 组织。
- 输入 Azure DevOps 客户端 ID。
- 输入 Azure DevOps 客户端机密。
- 保存并部署更新后的配置。
在 openhands 和 openhands-secrets 图表中设置 Azure DevOps 值。
在 openhands 图表的 values.yaml 中:
azureDevOps:
enabled: true
tenantId: "<your-tenant-id>"
organization: "<your-organization>"
auth:
existingSecret: azure-devops-app
在 openhands-secrets 图表的 values.yaml 中:
config:
azure_devops_client_id: "<your-client-id>"
azure_devops_client_secret: "<your-client-secret>"
然后重新部署两个图表。使用这些值部署 openhands-secrets 图表将创建名为 azure-devops-app 的 Kubernetes 机密。openhands 图表通过 azureDevOps.auth.existingSecret 从该机密读取客户端 ID 和客户端机密。如果使用不同的机密名称,请确保两个图表中设置相同的名称。
使用 Azure DevOps 登录
部署完成后,用户可以在应用登录页面上选择 使用 Azure DevOps 登录。
首次登录时,Microsoft 可能会要求用户同意所请求的权限。登录后,OpenHands 通过身份验证提供程序存储用户的 Azure DevOps 令牌,以便能够以该用户身份列出仓库并执行 Git 操作。
使用 Azure DevOps 仓库
登录后,用户可以从 OpenHands 仓库选择器中选择 Azure DevOps 仓库。OpenHands 可以:
- 列出登录用户可用的 Azure DevOps 项目和仓库。
- 使用登录用户的 OAuth 令牌克隆 Azure Repos。
- 读取分支和拉取请求上下文。
- 创建分支和拉取请求。
- 读取和发布 Azure Repos 拉取请求评论。
- 读取和发布 Azure Boards 工作项评论。
配置了 Microsoft Entra 登录后,OpenHands 不需要用户粘贴个人访问令牌即可访问 Azure DevOps 仓库。
从 Azure DevOps 触发 OpenHands
通过 Azure DevOps Service Hooks 和 OpenHands 自定义 Webhook,可以将 Azure DevOps 事件连接到 OpenHands 自动化。使用此模式实现以下工作流:
- 工作项评论要求 OpenHands 创建实现拉取请求。
- 拉取请求评论要求 OpenHands 审查更改。
- 拉取请求评论要求 OpenHands 生成测试或验证证据。
- 管道或事件事件要求 OpenHands 检查日志并提出修复方案。
要配置此模式:
- 在 OpenHands 中注册一个自定义 Webhook。参见事件驱动自动化(https://docs.openhands.dev/openhands/usage/automations/event-automations#custom-webhooks)。
- 创建一个 Azure DevOps Service Hook,将选定的事件发送到 Webhook URL。
- 创建一个 OpenHands 自动化,过滤您要支持的事件类型、仓库、项目或触发短语。
- 在广泛启用自动化之前,先在非生产仓库或项目中进行测试。
故障排除
| 症状 | 检查事项 |
|---|---|
| Azure DevOps 登录选项不可见 | 确认管理控制台或 Helm 值中已启用 Azure DevOps 身份验证,并且部署已应用。 |
| OAuth 重定向失败 | 确认 Entra 重定向 URI 完全匹配 https://auth.app.<your-domain>/realms/allhands/broker/azure_devops/endpoint。 |
| Microsoft 登录显示客户端或机密无效错误 | 确认 Azure DevOps 客户端 ID 和客户端机密与 Microsoft Entra 应用注册一致。如果机密已过期,请创建新机密并重新部署。 |
| Microsoft 登录成功但未列出仓库 | 确认用户对 Azure DevOps 组织、项目和仓库具有访问权限。同时确认默认组织值仅为组织名称。 |
| 同意失败或 Azure DevOps API 调用被拒绝 | 确认 Entra 应用程序具有所需的 Azure DevOps 委托权限,并且如果租户要求,已授予管理员同意。 |
| 仓库选择或 Git 操作失败 | 确认 OpenHands 能够访问 dev.azure.com,并且仓库引用格式为 organization/project/repository。 |
| Azure DevOps Service Hook 投递未触发自动化 | 确认自定义 Webhook 已注册,Service Hook URL 正确,事件类型与自动化匹配,并且自动化已启用。 |
相似文章
@OpenHandsDev: OpenHands 被列为顶级 #开源 项目,用于 #AI驱动 开发
OpenHands 被公认为AI驱动开发的顶级开源项目,凸显了其在通过自主智能体和AI能力赋能开发者方面的作用。
@OpenHandsDev:“开发工具必须是开源的” 这篇博客正在 Hacker News 上热传,我们完全赞同。https://blo…
OpenHands 分享了一篇主张开发工具必须是开源的博客文章,重点介绍了“长期运行的分支”概念——智能体每晚合并上游更改,并演示了如何使用 OpenHands Agent Canvas 自动化来完成这个任务。
Open Code Review – 一款由 AI 驱动的代码审查 CLI 工具
阿里巴巴已将 Open Code Review 开源,这是一款由 AI 驱动的代码审查 CLI 工具,将确定性工程方法与 LLM 智能体能力相结合。该工具最初作为内部工具使用,服务于数万名开发者,已识别出数百万处缺陷。它通过读取 Git diff 输出,利用可配置的模型端点生成结构化的行级审查意见。
@OpenHandsDev:在你的笔记本电脑上运行AI智能体是容易的部分。跨团队、代码库和工作流扩展智能体则需要……
对OpenHands CEO Robert Brennan的采访,探讨如何将AI智能体从个人笔记本电脑扩展到企业基础设施,涵盖自动化、治理、成本控制和模型灵活性。
我的家庭实验室AI开发平台
作者描述如何在家庭实验室中搭建一个AI开发平台,使用带有Git访问权限的OpenCode Web UI,通过PR审查和GitOps部署实现对Docker服务的AI辅助维护。