跳转到主要内容

为什么要将 Devin 与 Azure DevOps 集成?

将 Devin 与你的 Azure DevOps 组织集成后,Devin 就可以克隆代码仓库、创建拉取请求(PR),并高效地与你的团队协作。通过此集成,Devin 能够无缝融入你现有的开发工作流程。 与某些其他 SCM 集成不同,Azure DevOps 不会以相同的形式显示第三方应用。相反,所有连接管理都在 Devin 中通过 Enterprise Settings > Integrations 进行。

先决条件

在设置 Azure DevOps 集成之前,你需要先完成以下操作:
  1. 为 Devin 创建专用的 Azure DevOps 用户 - 专门为 Devin 创建一个新的 Azure DevOps 帐户(例如:[email protected])。这个专用服务帐户能够实现更清晰的访问管理并提供完整的审计记录。
  2. 为 Devin 用户授予 AAD 全局管理员权限 - 新建的 Devin 服务帐户必须具备 Azure Active Directory (AAD) 全局管理员权限。除非由全局管理员授予租户级别的同意,否则 Microsoft 会限制第三方应用的访问。
  3. 为连接流程做好准备 - 要完成集成,你需要确保:
    • 使用你的个人帐户登录 Devin
    • 使用 Devin 服务帐户(具有 AAD 全局管理员权限的新帐户)登录 Azure DevOps
在集成设置过程中,两个浏览器会话都必须保持活动状态——你的 Devin 帐户用于发起连接,而 Azure DevOps 中的 Devin 服务帐户用于授权 OAuth 同意。

身份验证与权限

Devin 通过 Microsoft 的 MSAL(Microsoft Authentication Library,Microsoft 身份验证库)使用 OAuth 2.0 连接到 Azure DevOps。Devin 服务账户必须具有 AAD 全局管理员权限才能完成 OAuth 授权流程。Azure DevOps 通过服务账户运作,因此 Devin 使用已授权的 Devin 用户身份而不是已注册的应用程序进行连接。

RBAC 和权限模型

Devin 与 Azure DevOps 的集成采用严格的基于角色的访问控制(RBAC)模型设计,将身份验证与授权相分离。这可以确保 Devin 只访问由企业管理员明确授权的代码仓库。 当你将 Azure DevOps 连接到 Devin 时:
  1. 会创建一个连接记录,其中包含加密的刷新令牌,并关联到用户身份
  2. Devin 会生成权限记录,用于定义哪些组织、项目和代码仓库可访问
  3. 在运行时,会对所有代码仓库执行检查,并与权限列表进行比对,以确保访问边界得到严格遵守
对于企业客户,可以在多个组织之间复用权限,且所有仓库级访问都通过 Integrations 下的 Devin Enterprise UI 进行管理。

Azure DevOps 层级结构

Azure DevOps 使用三级层级结构:Organization > Project > Repository。Devin 会在内部处理该结构,只要已连接用户具有访问权限,它就可以在任何层级发现并与代码仓库进行交互。

配置集成

  1. 登录两个账户:
    • app.devin.ai 登录你的 Devin 账户
    • 在单独的浏览器或隐身窗口中,使用 Devin 服务账户(具有 AAD 全局管理员权限的账户)登录 Azure DevOps
  2. 在你的 Devin Enterprise 账户中,前往 Settings > Enterprise Settings > Integrations
Azure DevOps 已连接账户
  1. 进入 Integrations 页面后,点击 Connect to Azure DevOps 按钮。
连接 Azure DevOps
  1. 这会打开一个新的浏览器标签页,要求你授予 Devin 访问你的 Azure DevOps 组织的权限。请确保你使用 Devin 服务账户登录(具有 AAD 全局管理员权限的账户)。
Azure DevOps 权限
  1. 授予权限后,你会在 Enterprise Settings 的 Integrations 页面上看到与你的 Azure DevOps 的集成,以及已连接的代码仓库。
Azure DevOps 已集成
  1. 现在 Devin 已经可以访问你的 Azure DevOps,你可以为 Enterprise 账户中的任意或所有子组织(Sub-Organizations)授予权限。为此,在 Azure DevOps 集成中选择 Git Permissions,选择一个子组织(Sub-Organization),并在 Group 或 Repository 级别授予权限。
Azure DevOps Git 权限
  1. 对每个已被授予权限的组织,前往 Devin’s Settings > Devin’s Machine,点击 + Repository,将这些代码仓库集成到 Devin’s Machine 中。

Devin 可以访问的内容

Devin 的 Azure DevOps 集成 仅专注于 Git 操作,包括:
功能说明
列出存储库查看可用存储库及其元数据
查看分支查看分支信息和提交历史
创建拉取请求(PR)为代码更改创建新的 PR
查看拉取请求(PR)查看 PR 的事件、评论和状态
推送代码将新分支和提交推送到存储库

Devin 无法访问的内容

此集成刻意仅限于 Git 相关功能。Devin 无法访问:
  • 工作项(看板)
  • 流水线或构建
  • 测试计划
  • 制品
  • Wiki
  • 服务连接
如果贵组织将来需要 Devin 支持上述这些额外的功能/领域,将需要更广泛的 OAuth 权限范围以及新的提供方逻辑。请联系 [email protected] 以讨论您的需求。

安全注意事项

系统设计遵循最小权限原则:
  • OAuth 提供能力,RBAC 划定边界 - OAuth 赋予访问 Azure DevOps 的技术能力,但通过额外一层 Git 权限控制来约束实际访问边界
  • 仅限显式授权访问 - Devin 不会访问任何未在 Enterprise UI 中显式授予访问权限的代码仓库或项目
  • 加密凭证 - 所有 refresh token 都会被加密并安全存储
  • 审计记录 - 使用专用服务账户可以更轻松地在 Azure DevOps 审计日志中追踪 Devin 的活动
  • 遵守分支策略 - Devin 提交的 PR 与任何其他贡献者一样,必须遵守相同的分支策略和代码审查要求

最佳实践

  • 使用专用的 Devin 服务账户 - 始终使用专门为 Devin 创建的 Azure DevOps 账户,而不是使用个人账户进行连接
  • 启用分支策略 - 在 Azure DevOps 中设置分支策略,确保所有更改在合并之前都经过适当的审核流程
  • 使用仓库级权限 - 仅为 Devin 授予其所需的特定代码仓库的访问权限,而不是整个组织范围的访问权限
  • 监控访问日志 - 定期查看 Azure DevOps 审计日志,以了解 Devin 的活动
  • 记录你的设置 - 在内部文档中记录 Devin 拥有哪些代码仓库的访问权限以及相应原因
我们建议在 Azure DevOps 中设置分支策略,确保所有更改在合并之前都经过适当的审核流程。
如果你的 Microsoft Entra ID 与组织的 HRIS(Human Resources Information System,人力资源信息系统)集成,为完成 Azure DevOps 集成可能还需要执行额外的配置步骤。请联系 Devin 支持团队 以获取高级配置方面的协助。

故障排查

OAuth 授权失败:
  • 验证 Devin 服务账号是否具有 AAD 全局管理员权限
  • 检查你的 Azure AD 租户是否允许第三方应用授权
  • 在完成 OAuth 流程时,确保你是使用 Devin 服务账号(而不是个人账号)登录 Azure DevOps
Devin 看不到我的代码库:
  • 验证 Devin 服务账号是否对 Azure DevOps 中的代码库具有访问权限
  • 检查是否已在 Devin 的 Enterprise 设置中授予代码库权限
  • 确认这些代码库已经添加到 Devin 的 Machine 中
拉取请求(pull request,PR)创建失败:
  • 确认 Devin 服务账号在目标代码库上具有贡献者权限
  • 检查分支策略是否没有阻止 PR 创建
  • 验证目标分支是否存在且可访问

网络设置

如果您在 Azure DevOps 实例中启用了 IP 过滤功能,则需要将 Devin 的 IP 地址加入白名单。 要获取最新的列表,请参阅我们的 IP 白名单文档