Skip to main content
Devin 还支持通过 Microsoft Entra 服务主体连接 Azure DevOps,这种方式无需使用具有较高目录管理员权限的专用服务账号。根据你的需求,这一流程可能更适合你——请参阅 Azure DevOps (服务主体) 。

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

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

先决条件

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

身份验证与权限

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

RBAC 和权限模型

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

Azure DevOps 层级结构

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

设置集成

  1. 登录两个账户:
    • 在 app.devin.ai 登录你的 Devin 账户
    • 在另一个浏览器或无痕窗口中,使用 Devin 服务账号 (即能够为你的租户授予管理员同意的账户) 登录 Azure DevOps
  2. 在你的 Enterprise Devin 账户中,前往 Settings > Connections > Azure DevOps。
  3. 点击 Connect 按钮启动 OAuth 流程。如果已连接过 Azure DevOps,该按钮会显示为 Add connection。
    • 如需改用 Microsoft Entra service principal 进行连接,请展开 Connect 按钮上的下拉菜单,然后选择 Connect with service principal。请参阅 Azure DevOps (Service Principal) 。
带有 Connect with service principal 选项的 Azure DevOps Connect 按钮
  1. 此时浏览器会打开一个新选项卡,请求你授予 Devin 访问你的 Azure DevOps 组织的权限。请确保你使用的是 Devin 服务账号 (即能够为你的租户授予管理员同意的账户) 。
Azure DevOps 权限
  1. 授权完成后,你将返回 Devin 中的 Azure DevOps 连接页面,新连接会显示在列表中。点击该连接即可打开其详情面板:
    • General:webhook 设置、重新连接和断开连接
    • Manage access:允许指定用户或角色管理此连接的代码仓库权限
    • Repositories:可通过此连接使用的仓库
  2. Devin 现已可以访问你的 Azure DevOps,你可以向 Enterprise 账户中的部分或全部组织授予权限。具体操作为:前往 设置 > 仓库,选择一个组织,点击 Manage permissions,然后在 Organization/Project 或 Repository 级别授予权限。请参阅代码仓库权限。
  3. 对于每个已获授权的组织,在该组织中前往 Settings > Environment > Blueprints,在 Repositories 部分点击 Add,然后选择要添加到 Devin 环境中的仓库。请参阅声明式环境配置。

Devin 可以访问的内容

Devin 的 Azure DevOps 集成 仅专注于 Git 操作,包括:

Devin 无法访问的内容

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

安全注意事项

系统设计遵循最小权限原则:
  • 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 服务账号是否可以为租户授予管理员同意 (需要具备 应用程序管理员、云应用程序管理员 或 全局管理员 角色)
  • 检查你的 Microsoft Entra ID 租户是否允许第三方应用授权
  • 在完成 OAuth 流程时,确保你是使用 Devin 服务账号 (而不是个人账号) 登录 Azure DevOps
Devin 看不到我的仓库:
  • 验证 Devin 服务账号是否对 Azure DevOps 中的仓库具有访问权限
  • 在 Settings > Connections > Azure DevOps 中打开该连接,确认这些仓库已显示在 Repositories 选项卡中
  • 检查是否已在 设置 > 仓库 中为该组织授予仓库权限
  • 确认这些仓库已在 Settings > Environment > Blueprints 中添加到该组织的环境中
拉取请求 (pull request,PR) 创建失败:
  • 确认 Devin 服务账号在目标仓库上具有贡献者权限
  • 检查分支策略是否没有阻止 PR 创建
  • 验证目标分支是否存在且可访问

网络设置

如果你在 Azure DevOps 实例中启用了 IP 过滤,则需要将 Devin 的 IP 地址加入允许列表。 如需查看最新列表,请参阅我们的 IP 允许列表文档。