> ## 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.

# GitHub Enterprise Server 集成

> 将 Devin 连接到 GitHub Enterprise Server 或支持数据驻留的 GitHub Enterprise Cloud

<div id="overview">
  ## 概述
</div>

Devin 支持通过以下两种方式连接到 GitHub Enterprise Server (GHES) 和启用数据驻留的 GitHub Enterprise Cloud (GHEC)：

1. **GitHub App (推荐) ** — 在你的 GHES 或 GHEC 实例中注册并安装专用的 GitHub App。此方式可简化设置流程，且无需管理个人访问令牌。
2. **个人访问令牌 (PAT)** — 创建服务账户并生成细粒度个人访问令牌。此方法适用于所有 GHES 版本。

<Note>
  GitHub App 集成目前仅限少量用户使用。如需开始使用，请联系你的 Cognition 代表。
</Note>

***

<div id="github-app-setup">
  ## GitHub App 设置
</div>

GitHub App 设置分为三个步骤：

1. **App 注册** — 在你的 GHES 或 GHEC 实例上注册一个 GitHub App。每个实例只需**注册一个 App**。
2. **App 配置** — 在你的 GHES 或 GHEC 实例上配置已注册的 App (例如，将其设为公开，并禁用令牌过期) 。
3. **App 安装** — 在你希望 Devin 访问的每个 GitHub 组织中安装已注册的 App。每个组织都需要**安装一次**。

<div id="prerequisites">
  ### 前提条件
</div>

* 拥有 **管理 Git 权限** 的 Devin 用户
* 对将注册该 App 的 GitHub 组织拥有所有者或管理员访问权限

<div id="step-1-register-the-github-app">
  ### 步骤 1：注册 GitHub App
</div>

1. 在你的 Devin 账户中，前往 **企业设置** → **集成** → **GitHub**。
2. 展开 **Advanced** 部分，显示 **GitHub Enterprise** 选项。

<Frame>
  <img src="https://mintcdn.com/cognitionai/tcRB5SQlC6gSZCfn/images/enterprise/ghes-app/ghes-advanced-section.png?fit=max&auto=format&n=tcRB5SQlC6gSZCfn&q=85&s=439f465dc4ae651ff38b98a897abec30" alt="GitHub Enterprise 高级部分" width="3840" height="1980" data-path="images/enterprise/ghes-app/ghes-advanced-section.png" />
</Frame>

3. 点击 **Register App**。
4. 在弹出的模态窗口中，输入你的 GHES 或 GHEC 实例的 **hostname**，以及要注册该 App 的 **organization**。

<Frame>
  <img src="https://mintcdn.com/cognitionai/tcRB5SQlC6gSZCfn/images/enterprise/ghes-app/ghes-register-app-modal.png?fit=max&auto=format&n=tcRB5SQlC6gSZCfn&q=85&s=d3f77370944a7de735d80553dd627860" alt="Register App 模态窗口" width="3840" height="1978" data-path="images/enterprise/ghes-app/ghes-register-app-modal.png" />
</Frame>

5. 你将被重定向到 GitHub。点击 **Register App** 完成注册。

<Frame>
  <img src="https://mintcdn.com/cognitionai/tcRB5SQlC6gSZCfn/images/enterprise/ghes-app/ghes-github-register-page.png?fit=max&auto=format&n=tcRB5SQlC6gSZCfn&q=85&s=b013f540b14227eb2e063e60f87fa8b2" alt="GitHub 注册页面" width="3840" height="1986" data-path="images/enterprise/ghes-app/ghes-github-register-page.png" />
</Frame>

6. 跳转回 Devin 后，该 GitHub App 即已注册到你的 GitHub 组织中。

<div id="step-2-configure-the-github-app">
  ### 步骤 2：配置 GitHub App
</div>

注册完成后，在你的 GHES 或 GHEC 实例上配置该 App：

1. 在你的 GHES 或 GHEC 实例中，前往注册时指定的 GitHub 组织。
2. 依次进入 **Settings** → **Developer Settings** → **GitHub Apps**，然后选择 Devin App。

<Frame>
  <img src="https://mintcdn.com/cognitionai/tcRB5SQlC6gSZCfn/images/enterprise/ghes-app/ghes-developer-settings-apps.png?fit=max&auto=format&n=tcRB5SQlC6gSZCfn&q=85&s=6254c48d1ebf3573bf5a520c0e22e8dc" alt="Developer Settings - GitHub Apps" width="3840" height="1970" data-path="images/enterprise/ghes-app/ghes-developer-settings-apps.png" />
</Frame>

3. 在 **Advanced** 部分的 **Danger zone** 下，点击 **Make public**。这样，该 App 就可以安装到同一实例中的其他组织。
4. 前往 **Optional features** 部分，并关闭 **User-to-server token expiration**。这样可防止访问令牌过期，避免用户需要定期重新授权该 App。

<Frame>
  <img src="https://mintcdn.com/cognitionai/tcRB5SQlC6gSZCfn/images/enterprise/ghes-app/ghes-token-expiration.png?fit=max&auto=format&n=tcRB5SQlC6gSZCfn&q=85&s=2d34149892458cc036ab5a26560d6fde" alt="User-to-server token expiration setting" width="3840" height="1980" data-path="images/enterprise/ghes-app/ghes-token-expiration.png" />
</Frame>

<div id="step-3-install-the-github-app">
  ### 步骤 3：安装 GitHub App
</div>

1. 在你的 Devin 账户中，前往 **企业设置** → **集成** → **GitHub**。
2. 展开 **Advanced** 部分，然后点击 **安装应用**。
3. 在模态窗口中，选择在你的 GHES 或 GHEC 实例下注册的 GitHub App。

<Frame>
  <img src="https://mintcdn.com/cognitionai/tcRB5SQlC6gSZCfn/images/enterprise/ghes-app/ghes-install-app-modal.png?fit=max&auto=format&n=tcRB5SQlC6gSZCfn&q=85&s=a8422617a579bcdbf49490bb6ee5de4b" alt="安装应用模态窗口" width="3840" height="1982" data-path="images/enterprise/ghes-app/ghes-install-app-modal.png" />
</Frame>

4. 你将被重定向到 GitHub，在那里可以选择一个 GitHub 组织，并选择要授权 Devin 访问的代码仓库。我们建议授权访问 **所有代码仓库**。
5. 完成安装后，你将被重定向回 Devin。随后，**设置** → **集成** → **GitHub** 中会显示一条新的 Git 连接。

如需连接其他 GitHub 组织，请对每个组织重复此步骤。

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

如果你在注册或安装 GitHub App 的过程中遇到问题，请联系你的 Cognition 对接人，或发送邮件至 [enterprise@cognition.ai](mailto:enterprise@cognition.ai)。

***

<div id="personal-access-token-setup">
  ## 个人访问令牌 设置
</div>

将 Devin 集成到你的 GitHub 账户中，可以让 Devin 访问你的代码仓库并创建拉取请求 (pull request) 。这样 Devin 就能成为你工程团队中的真正协作者。

<div id="create-a-service-account-for-devin">
  ### **为 Devin 创建服务账号**
</div>

1. 在你的 GitHub Enterprise 中创建一个新的 GitHub 账号供 Devin 使用。这样可以确保 Devin 的所有访问和使用情况都能被正确跟踪和管理。
2. 将新创建的服务账号作为 **Member** 添加到所有相关的 GitHub 组织中。确认该账号可以访问所有预期由 Devin 访问的代码仓库。

<div id="generate-a-personal-access-token-for-devin">
  ### **为 Devin 生成个人访问令牌 (Personal Access Token) **
</div>

1. 使用服务账号登录后，点击右上角的个人头像，然后点击 <Icon icon="gear" iconType="regular" size="16" /> **Settings (设置) **。
2. 在左侧边栏中，点击 <Icon icon="code" iconType="regular" size="16" /> **Developer settings (开发者设置) **。
3. 在左侧边栏中，在 <Icon icon="key" iconType="regular" size="16" /> **Personal access tokens (个人访问令牌) ** 下，点击 **Fine-grained tokens (细粒度令牌) **。
4. 点击 **Generate new token (生成新令牌) **。
5. 填写 **Token name (令牌名称) ** 和 **Expiration (过期时间) **。\
   **注意：** 当令牌过期时，Devin 将立即失去对 GitHub 的所有访问权限，需要创建一个新的令牌。
6. 在 **Resource owner (资源所有者) ** 下，选择正确的组织。

<Accordion title="常见问题：组织未显示" icon="triangle-exclamation">
  If you're not seeing the correct organization under "Resource owner", make sure that the enterprise and organization have enabled the use of fine-grained personal access tokens.
  如果你在 “Resource owner (资源所有者) ” 下未看到正确的组织，请确认企业和组织均已启用细粒度个人访问令牌的使用。

  #### **在 Enterprise 设置中启用**

  只有 Enterprise 管理员 (Enterprise Admin) 可以更新这些设置。请确保在特定组织设置中也启用了 personal access tokens (个人访问令牌) 。

  1. 在 GitHub Enterprise Server 右上角点击你的个人头像，然后点击 **Enterprise settings (Enterprise 设置) **。
  2. 在页面顶部，点击 <Icon icon="scale-balanced" iconType="regular" size="16" /> **Policies (策略) **。
  3. 在 **Policies (策略) ** 下，点击 <Icon icon="key" iconType="regular" size="16" /> **Personal access tokens (个人访问令牌) **。
  4. 选择 **Fine-grained tokens (细粒度令牌) ** 选项卡。
  5. 在 **Fine-grained personal access tokens (细粒度个人访问令牌) ** 下启用访问。
  6. 点击 **Save (保存) **。

  #### **在 Organization 设置中启用**

  只有 Organization 管理员 (Organization Admin) 可以更新这些设置。请确保在 Enterprise 设置中也启用了 personal access tokens (个人访问令牌) 。

  1. 在 GitHub 右上角点击你的个人头像，然后点击 <Icon icon="building" iconType="regular" size="16" /> **Organizations (组织) **。
  2. 在目标组织旁边点击 **Settings (设置) **。
  3. 在左侧边栏中，在 <Icon icon="key" iconType="regular" size="16" /> **Personal access tokens (个人访问令牌) ** 下，点击 **Settings (设置) **。
  4. 选择 **Fine-grained tokens (细粒度令牌) ** 选项卡。
  5. 在 **Fine-grained personal access tokens (细粒度个人访问令牌) ** 下，为你的组织启用访问。
  6. 点击 **Save (保存) **。
</Accordion>

7. 在 **Repository access (代码仓库访问) ** 下，选择你希望 Devin 使用的仓库。令牌始终包含对 GitHub 上所有公共仓库的只读访问权限。
8. 确保令牌具有以下 Devin 正常工作所需的权限：

| Permission         | Access level   | Description                 |
| :----------------- | :------------- | :-------------------------- |
| Contents           | Read and write | 允许 Devin 向代码库提交更改           |
| Issues             | Read and write | 允许 Devin 创建新的 issue         |
| Metadata           | Read only      | 允许 Devin 查看仓库的重要元数据，例如仓库所有者 |
| Pull requests (PR) | Read and write | 允许 Devin 创建新的 PR            |

根据你希望 Devin 执行的工作，授予更多权限有助于 Devin 更好地与你的团队协作。

9. 点击 **Generate Token (生成令牌) ** 并保存显示的令牌。\
   **注意：** 根据你的 GitHub 设置，可能需要管理员审批。
10. 为验证该令牌是否具有所有必要的访问和权限，请在本地机器上**创建并推送一个测试分支**到该组织中的某个仓库。
11. 令牌生成并测试完成后，请联系你在 Cognition 的对接人以完成配置流程。如果你当前并未直接与我们的团队合作，请发送邮件至 [enterprise@cognition.ai](mailto:enterprise@cognition.ai) 与我们联系。

<div id="validating-pat-permissions-locally">
  ### **在本地验证 PAT 权限**
</div>

在将该令牌提供给 Cognition 之前，请先通过推送测试分支来确认它是否具有正确的权限：

```bash theme={null}
# 使用您的令牌通过 gh CLI 进行身份验证
export GH_TOKEN=your_personal_access_token
export GH_HOST=your-github-enterprise-server.com

# 克隆代码仓库
gh repo clone your-organization/your-repository
cd your-repository

# 创建测试分支
git checkout -b test-devin-token-$(date +%s)

# 进行小改动
echo "# Test" >> TEST.md
git add TEST.md
git commit -m "Test: Validate Devin token permissions"

# 推送分支(测试内容写入权限)
git push origin HEAD

# 创建拉取请求(测试拉取请求写入权限)
gh pr create --title "Test: Validate Devin token permissions" \
  --body "This is a test PR to validate token permissions." \
  --base main

# 清理:关闭测试 PR 并删除测试分支
gh pr close pr-number --delete-branch
```

**预期结果：** push 和 PR 创建应在没有身份验证错误的情况下成功。如果 push 失败，请检查该 token 是否具有 “Contents: Read and write” 权限。如果 PR 创建失败，请检查该 token 是否具有 “Pull requests: Read and write” 权限。

<div id="using-devin-with-the-github-integration">
  ## **配合 GitHub 集成使用 Devin**
</div>

现在 GitHub 已完成集成，你可以配置哪些 Devin 子组织可以访问各个代码仓库 (参见[代码仓库权限](/zh/enterprise/integrations/git-integrations#repository-permissions)) 。

集成完成后，你可以前往 Devin Web 应用程序，现在你已经可以在提示中使用 @ 提及任意代码仓库了！

如果你是第一次使用某个代码仓库，我们建议你先在[入门流程中完成开发环境设置](/zh/onboard-devin/environment)，以确保 Devin 拥有关于如何使用你的代码库的最准确、最新的信息。

<Tip>
  只要会话尚未被归档，Devin 会自动回复任何 PR 评论
</Tip>

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

以下是关于 Devin 在 GitHub 中权限的一些补充信息：

* 我们建议在 `master` 分支上启用分支保护，以确保在 Devin 合并任何变更之前，所有检查都已执行并通过。
* 如果 Devin 已连接到你组织的 GitHub 组织账号，那么对于任何同时拥有该 GitHub 组织和 Devin 组织访问权限的用户，Devin 将具备与其相同级别的权限。
* Devin 不会继承或仿照正在与其进行会话的用户权限，而是始终保留在组织级别授予它的权限。
* Devin 无法在你的 GitHub 账号中创建新的代码仓库。
