Skip to main content

在 GitHub Copilot 发布过程中维护代码库标准

使用规则集、安全功能和有效培训控制企业代码。

谁可以使用此功能?

Enterprise owners

大多数企业都知道 AI 编码工具可以带来的生产力优势。 但是,许多人担心公司中的不当使用(如恶意提示或开发人员接受 AI 建议而不审查)将导致其代码库的标准遭到入侵。

可以通过设置 GitHub 环境和工作文化来有效管理从而缓解这些风险。 GitHub Copilot 的主要优势是,它内置于 GitHub 平台中,而该平台已经包含了一系列企业级别的代码治理功能。

1. 需要合并请求和评审

开发人员和不良参与者永远无法单方面应用未经审查的 AI 建议或代理直接应用于敏感代码库。 用户必须先 获得批准的拉取请求 ,然后才能将代码合并到生产代码库和其他重要分支中。

为此,请创建规则集:

  1. 标识包含要保护的代码库的组织或存储库,并向其 应用自定义属性 。 这样,就可以在规则集中轻松定位这些资源。 请参阅“管理组织中存储库的自定义属性”或“管理组织的自定义属性”。

    或者,可以手动将这些受保护的资源添加到规则集,或基于命名约定将其作为目标。

  2. 为企业创建分支规则集。 请参阅“使用规则集在企业中强制实施代码治理”。

    • 在合并和阻止强制推送规则之前,至少启用 “需要拉取请求”。 在“要求合并请求”规则下,确保至少需要一个批准。
    • 如果需要,请启用其他规则。 例如,如果你担心恶意执行组件劫持拉取请求,请确保在推送新提交时 消除过时的拉取请求审批
  3. 鼓励存储库管理员为存储库中的特定文件设置 CODEOWNERS 文件。 当修改这些文件时,这会自动请求代码所有者的评审。

    然后,可以返回到规则集并启用 要求代码所有者审查 规则。

  4. 鼓励组织所有者和存储库管理员创建更具体的规则集,因为他们可能更了解自己的代码的要求。

    这些规则集将添加到您在企业级别定义的基线中,但永远不会覆盖它。

2.测试代码

良好的 DevOps 做法可确保在合并和部署代码之前自动测试代码,最大限度地减少错误进入默认分支并在生产环境中出现的风险。

  1. 启用 GitHub Actions 或其他 CI/CD 系统。
  2. 鼓励开发人员为所有功能编写测试,并将测试集成到 GitHub Actions 工作流中。
  3. 鼓励组织所有者或存储库所有者创建规则集,并将重要的工作流添加到“要求工作流在合并前通过”规则。

3.扫描代码是否存在漏洞

Copilot 已设计为避免在代码库中引入漏洞。 例如,Copilot编程助理 创建的代码会被自动扫描,以发现易受攻击的模式和机密信息,例如 API 密钥。

但是,最好定期扫描所有代码中是否存在漏洞和机密,并防止开发人员首先引入漏洞。

  1. 首先,对组织应用并强制执行 GitHub推荐的安全配置 。 这是针对安全功能的启用功能设置集合,包括 code scanning、secret scanning 和机密推送保护。 请参阅“删除自定义安全配置”。
  2. 了解需求的详细信息时,请在存储库级别创建自定义配置或应用精细设置。
  3. 要在拉取请求中强制实施 code scanning ,请返回到规则集并启用 “需要 code scanning 结果” 规则。

4. 为 Copilot 创建准则

若要首先提高 Copilot 提供建议的质量,您应创建自定义指令。 这些说明为所有提示添加上下文,以便告知 Copilot 遵循贵公司的编码标准。

  1. 若要建立良好的基线, 请在组织级别创建自定义说明。 这些标准可以是可能适用于任何存储库的高级标准。 但是,请注意,这些说明仅适用于 GitHub 网站。 请参阅“为 GitHub Copilot 添加组织自定义说明”。
  2. 有关更完整的覆盖范围,请鼓励开发人员和存储库管理员 为特定存储库编写自定义说明。 这些适用于比组织说明更多的对象,并可以更详细地描述每个项目及其要求。 请参阅“为GitHub Copilot添加存储库自定义说明”。

5. 鼓励最佳做法

有了强大的防护措施,开发人员应该已经能够有效地使用 AI。 但是,必须就 AI 工具提供培训,并创建鼓励最佳做法的文化,而不仅仅是强制实施。

  1. 传达你的治理设置和公司对开发人员如何使用 Copilot的期望。 例如,如果应全面审查所有代理工作,请确保建立并传达此过程。
  2. 创建载入资源,例如内部文档或视频。 将现有资源如 使用 GitHub Copilot 的最佳做法GitHub Copilot Chat 指南 作为起点进行分享。
  3. 提供持续的培训和支持,例如研讨会。 在成功的实施过程中,许多公司会确定一些“骨干”,他们负责培训其他人如何有效使用Copilot。

6. 规划最差的情况

即使有最严格的防护措施,也始终有可能合并易受攻击或容易出错的代码,而不管开发人员使用的是 AI 工具。

若要为这些方案做好准备,应规划如何解决问题,并与开发人员沟通此计划。 例如:

  1. 恢复错误的拉取请求并回滚部署。
  2. 创建一个讨论文章,分析出了什么问题以及如何在未来避免它。
  3. 检查审核日志,以查找规则集绕过、权限错误或对治理设置的更改。

7.检查代码质量

如果你对治理模型有信心,但仍担心 Copilot 会随着时间的推移降低代码库的质量,则可以在推出过程中衡量这一点。 如果启用,GitHub Code Quality 提供存储库代码运行状况的指标。 请参阅“关于GitHub代码质量”。

后续步骤

了解企业如何使用审核日志监视配置设置和许可证分配的更改。 请参阅“查看 GitHub Copilot Business 的审核日志”。