> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Azure DevOps 集成

> 直接在 Azure DevOps 代码仓库中与 Devin 协作

<Info>
  Devin 还支持通过 Microsoft Entra 服务主体连接 Azure DevOps，这种方式无需使用具有较高目录管理员权限的专用服务账户。根据你的需求，这一流程可能更适合你——请参阅 [Azure DevOps (服务主体) ](/zh/enterprise/integrations/azure-devops-service-principal)。
</Info>

<div id="why-integrate-devin-with-azure-devops">
  ## 为什么要将 Devin 与 Azure DevOps 集成？
</div>

将 Devin 与你的 Azure DevOps 组织集成后，Devin 就可以克隆代码仓库、创建拉取请求 (PR) ，并高效地与你的团队协作。通过此集成，Devin 能够无缝融入你现有的开发工作流程。

与某些其他 SCM 集成不同，Azure DevOps 不会以相同的形式显示第三方应用。相反，所有连接管理都在 Devin 中通过 **Enterprise Settings > Integrations** 进行。

<div id="prerequisites">
  ## 先决条件
</div>

在设置 Azure DevOps 集成之前，你需要先完成以下操作：

1. **为 Devin 创建专用的 Azure DevOps 用户** - 专门为 Devin 创建一个新的 Azure DevOps 账户 (例如：`devin@yourcompany.com`) 。这个专用服务账户能够实现更清晰的访问管理并提供完整的审计记录。

2. **为 Devin 用户授予足够的 Admin 角色** - 新建的 Devin 服务账户必须能够为租户授予管理员同意 (应用程序管理员、云应用程序管理员 或 全局管理员)。除非由具备足够权限的管理员授予租户级别的同意，否则 Microsoft 会限制第三方应用的访问。

3. **为连接流程做好准备** - 要完成集成，你需要确保：
   * 使用你的个人账户登录 **Devin**
   * 使用 Devin 服务账户 (能够为你的租户授予管理员同意的新账户) 登录 **Azure DevOps**

<Note>
  在集成设置过程中，两个浏览器会话都必须保持活动状态——你的 Devin 账户用于发起连接，而 Azure DevOps 中的 Devin 服务账户用于授权 OAuth 同意。
</Note>

<div id="authentication-and-permissions">
  ## 身份验证与权限
</div>

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

<div id="rbac-and-permission-model">
  ### RBAC 和权限模型
</div>

Devin 与 Azure DevOps 的集成采用严格的基于角色的访问控制 (RBAC) 模型设计，将身份验证与授权相分离。这可以确保 Devin 只访问由企业管理员明确授权的代码仓库。

当你将 Azure DevOps 连接到 Devin 时：

1. 会创建一个连接记录，其中包含加密的刷新令牌，并关联到用户身份
2. Devin 会生成权限记录，用于定义哪些组织、项目和代码仓库可访问
3. 在运行时，会对所有代码仓库执行检查，并与权限列表进行比对，以确保访问边界得到严格遵守

对于企业客户，可以在多个组织之间复用权限，且所有仓库级访问都通过 Integrations 下的 **Devin Enterprise UI** 进行管理。

<div id="azure-devops-hierarchy">
  ## Azure DevOps 层级结构
</div>

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

<div id="setting-up-the-integration">
  ## 配置集成
</div>

1. **登录两个账户：**
   * 在 [app.devin.ai](https://app.devin.ai) 登录你的 Devin 账户
   * 在单独的浏览器或隐身窗口中，使用 Devin 服务账户 (可为你的租户授予管理员同意的账户) 登录 Azure DevOps

2. 在你的 Devin Enterprise 账户中，前往 [**Settings > 企业设置 > 集成**](https://app.devin.ai/settings/integrations)

<Frame>
  <img src="https://mintcdn.com/cognitionai/IUVOuadgM9g1fi9k/images/enterprise/Connect-ADO.png?fit=max&auto=format&n=IUVOuadgM9g1fi9k&q=85&s=682dac6971ec445fbc868a56acf66845" alt="Azure DevOps 已连接账户" width="3590" height="1856" data-path="images/enterprise/Connect-ADO.png" />
</Frame>

3. 进入 集成 页面后，点击 **Connect to Azure DevOps** 按钮。

<Frame>
  <img src="https://mintcdn.com/cognitionai/IUVOuadgM9g1fi9k/images/enterprise/Connect-To-ADO.png?fit=max&auto=format&n=IUVOuadgM9g1fi9k&q=85&s=f82bd2325d80b96ec62479f09586b91b" alt="连接 Azure DevOps" width="1240" height="508" data-path="images/enterprise/Connect-To-ADO.png" />
</Frame>

4. 这会打开一个新的浏览器标签页，要求你授予 Devin 访问你的 Azure DevOps 组织的权限。**请确保你使用 Devin 服务账户登录** (可为你的租户授予管理员同意的账户) 。

<Frame>
  <div style={{maxWidth: '400px', margin: '0 auto'}}>
    <img src="https://mintcdn.com/cognitionai/ifLkKLaMB-vvINwf/images/enterprise/ADO-Permission.png?fit=max&auto=format&n=ifLkKLaMB-vvINwf&q=85&s=b9389036b537d7f476ad94991a36f26e" alt="Azure DevOps 权限" width="930" height="1224" data-path="images/enterprise/ADO-Permission.png" />
  </div>
</Frame>

5. 授予权限后，你会在 企业设置 的 集成 页面上看到与你的 Azure DevOps 的集成，以及已连接的代码仓库。

<Frame>
  <img src="https://mintcdn.com/cognitionai/IUVOuadgM9g1fi9k/images/enterprise/ADO-Org-in-Devin.png?fit=max&auto=format&n=IUVOuadgM9g1fi9k&q=85&s=c8097e83087683a6036bd71a045d7db4" alt="Azure DevOps 已集成" width="1216" height="1118" data-path="images/enterprise/ADO-Org-in-Devin.png" />
</Frame>

6. 现在 Devin 已经可以访问你的 Azure DevOps，你可以为 Enterprise 账户中的任意或所有子组织 (Sub-Organizations) 授予权限。为此，在 Azure DevOps 集成中选择 **Git Permissions**，选择一个子组织 (Sub-Organization) ，并在 Group 或 Repository 级别授予权限。

<Frame>
  <img src="https://mintcdn.com/cognitionai/IUVOuadgM9g1fi9k/images/enterprise/ADO-git-permissions.png?fit=max&auto=format&n=IUVOuadgM9g1fi9k&q=85&s=765a3e9cdbc8da18001b0cc268e72e64" alt="Azure DevOps Git 权限" width="2414" height="630" data-path="images/enterprise/ADO-git-permissions.png" />
</Frame>

7. 对每个已被授予权限的组织，前往 **Devin's Settings > Devin's Machine**，点击 **+ Repository**，将这些代码仓库集成到 Devin's Machine 中。

<div id="what-devin-can-access">
  ## Devin 可以访问的内容
</div>

Devin 的 Azure DevOps 集成 **仅专注于 Git 操作**，包括：

| 功能          | 说明              |
| ----------- | --------------- |
| 列出存储库       | 查看可用存储库及其元数据    |
| 查看分支        | 查看分支信息和提交历史     |
| 创建拉取请求 (PR) | 为代码更改创建新的 PR    |
| 查看拉取请求 (PR) | 查看 PR 的事件、评论和状态 |
| 推送代码        | 将新分支和提交推送到存储库   |

<div id="what-devin-cannot-access">
  ## Devin 无法访问的内容
</div>

此集成刻意仅限于 Git 相关功能。Devin **无法**访问：

* 工作项 (看板)
* 流水线或构建
* 测试计划
* 制品
* Wiki
* 服务连接

<Note>
  如果贵组织将来需要 Devin 支持上述这些额外的功能/领域，将需要更广泛的 OAuth 权限范围以及新的提供方逻辑。请联系 [enterprise@cognition.ai](mailto:enterprise@cognition.ai) 以讨论您的需求。
</Note>

<div id="security-considerations">
  ## 安全注意事项
</div>

系统设计遵循最小权限原则：

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

<div id="best-practices">
  ## 最佳实践
</div>

* **使用专用的 Devin 服务账户** - 始终使用专门为 Devin 创建的 Azure DevOps 账户，而不是使用个人账户进行连接
* **启用分支策略** - 在 Azure DevOps 中设置分支策略，确保所有更改在合并之前都经过适当的审核流程
* **使用仓库级权限** - 仅为 Devin 授予其所需的特定代码仓库的访问权限，而不是整个组织范围的访问权限
* **监控访问日志** - 定期查看 Azure DevOps 审计日志，以了解 Devin 的活动
* **记录你的设置** - 在内部文档中记录 Devin 拥有哪些代码仓库的访问权限以及相应原因

<Tip>
  我们建议在 Azure DevOps 中设置分支策略，确保所有更改在合并之前都经过适当的审核流程。
</Tip>

<Note>
  如果你的 Microsoft Entra ID 与组织的 HRIS (Human Resources Information System，人力资源信息系统) 集成，为完成 Azure DevOps 集成可能还需要执行额外的配置步骤。请联系 [Devin 支持团队](mailto:enterprise@cognition.ai) 以获取高级配置方面的协助。
</Note>

<div id="troubleshooting">
  ## 故障排查
</div>

**OAuth 授权失败：**

* 验证 Devin 服务账户是否可以为租户授予管理员同意 (需要具备 应用程序管理员、云应用程序管理员 或 全局管理员 角色)
* 检查你的 Microsoft Entra ID 租户是否允许第三方应用授权
* 在完成 OAuth 流程时，确保你是使用 Devin 服务账户 (而不是个人账号) 登录 Azure DevOps

**Devin 看不到我的代码仓库：**

* 验证 Devin 服务账户是否对 Azure DevOps 中的代码仓库具有访问权限
* 检查是否已在 Devin 的企业设置中授予代码仓库权限
* 确认这些代码仓库已经添加到 Devin's Machine 中

**拉取请求 (pull request，PR) 创建失败：**

* 确认 Devin 服务账户在目标代码仓库上具有贡献者权限
* 检查分支策略是否没有阻止 PR 创建
* 验证目标分支是否存在且可访问

<div id="network-setup">
  ## 网络设置
</div>

如果你在 Azure DevOps 实例中启用了 IP 过滤，则需要将 Devin 的 IP 地址加入白名单。

如需查看最新列表，请参阅我们的 [IP 白名单文档](/zh/admin/common-issues#ip-whitelisting)。
