View a markdown version of this page

发布就绪代码审查 - AWS DevOps 代理人

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

发布就绪代码审查

发布就绪代码审查评估您的代码变更是否存在跨存储库依赖风险、内部标准合规性和访问控制的正确性。它还会在 AWS DevOps 代理管理的验证环境中执行自动验证测试,即构建、运行和测试您的代码更改。

开始使用

要使用发布就绪代码审查,请完成以下设置步骤。

步骤 1:在仓库上启用功能

必须先在已连接的 GitLab 存储库 GitHub 或存储库上启用代码审查和自动测试功能,然后才能触发这些功能。

管道提供商集成设置中的 “代码审查和自动测试” 部分为每个存储库提供了两种功能:

  • 自动触发变更审查-启用后,每次打开或更新拉取请求或合并请求时, DevOps 代理都会自动运行发布就绪代码审查。评论结果以内嵌评论的形式出现 PR/MR。

  • 自动验证测试-启用后, DevOps 代理将在代码审查期间在托管验证环境中构建、运行和测试您的代码更改。这提供了静态分析之外的功能验证。有关更多信息,请参阅自动验证测试

您可以为每个存储库单独启用或禁用每项功能,这样您就可以在不进行验证测试的情况下使用变更审阅,反之亦然。

该部分还包括:

  • 运行时角色(可选)— 选择 A DevOps gent 代入的 IAM 角色,以便在您选定的存储库上运行自动化功能。此角色用于在构建期间访问内部服务,例如私有包注册表或工件存储。有关更多信息,请参阅步骤 2

对于 GitHub:导航到 GitHub 集成设置中的 “代码审查和自动测试” 部分,然后启用每个存储库的功能。连接存储库时,这两项功能默认处于启用状态。有关详细说明,请参阅配置代码审查和自动测试

对于 GitLab:导航到 GitLab 集成设置中的 “代码审查和自动测试” 部分,然后为项目启用这些功能。有关详细说明,请参阅配置代码审查和自动测试

步骤 2:为验证测试环境配置私有 VPC 访问权限(可选)

发布就绪代码审查可以通过在验证环境中构建、运行和测试您的代码更改来执行自动验证测试(请参阅自动验证测试)。如果您的代码构建过程需要来自内部系统的构件,例如私有镜像存储库(例如 Artifactory、Docker Hub Enterprise)、内部构建工件存储库或依赖代码存储库,则需要向验证测试环境授予可以访问这些服务端点的 VPC 的访问权限。

默认情况下,验证测试环境无法通过网络访问您的内部系统。要启用访问权限,请创建私有连接并将其与您的管道提供商关联(GitHubGitLab)。验证测试环境通过在 VPC 内创建和管理 ENI 来使用与该私有连接关联的 VPC,从而允许构建环境网络访问您的内部服务。

注意

在您的账户中与 VPC 集成,在遵守任何网络限制的情况下,通过您的内部路由路由网络流量。

要配置私有 VPC 访问权限以进行验证测试,请执行以下操作:

  1. 创建以可访问内部构建服务的 VPC 为目标的私有连接。有关说明,请参阅连接到私人托管的工具

  2. 打开 AWS DevOps 代理控制台并导航到您的代理空间。

  3. 前往 “功能” 选项卡,然后选择您的管道提供商(GitHub 或 GitLab)。

  4. 在 “代码审查和自动测试” 部分,通过从可用连接中进行选择,将私有连接与您的管道提供商相关联。

  5. 对于运行时角色,选择 DevOps 代理在构建期间访问内部服务时将担任的 IAM 角色。此角色必须拥有使用与您的代理空间相同的 AWS 账户访问 S AWS ecrets Manager 的权限。我们建议使用与主代理角色不同的角色。

  6. 选择 “保存” 以应用您的配置。

关联后,验证测试环境将在私有连接的 VPC 中配置 ENI,使其能够在代码审查构建期间直接通过网络访问您的内部服务。

执行代码审查

您可以通过 DevOps 代理聊天按需请求代码审查:

  • “查看回购支付服务 feature/payments 上的分支机构是否存在释放风险”

  • “查看存储库基础架构上的提交 abc123 以了解发布准备情况”

  • “回购订单服务的最新变更存在哪些发布风险?”

代理评估指定的范围(分支、提交或一组更改),并返回发布就绪报告。该报告包括:

  • 建议的操作-封锁、谨慎行事或安全释放

  • 变更摘要-修改的内容和影响范围

  • 风险分析 — 受影响代码位置的具体发现

  • 建议 — 解决每项发现的可行步骤

审核通常在 8-10 分钟内完成,具体取决于变更的规模和复杂性。

自动代码审查

自动代码审查无需人工干预即可运行。它们可以在两种情况下触发:

代码生成期间的代码审查

使用 Kiro Power 或 Claude Code 插件时,编码代理可以在生成代码时调用发布准备情况审查。该审查会根据您的策略和依赖关系评估正在进行的更改,并在提交代码之前直接在 IDE 中显示发现的结果。

如果发现问题,编码代理会收到通知并可以立即解决问题——修复违反策略的行为、更正权限过度的 IAM 策略或在其他存储库中准备相关更改。

拉取请求和合并请求中的代码审查

启用自动 PR/MR 审查后,代理会审核您关联的存储库中的每个新的拉取请求和合并请求。评论在以下情况下触发:

  • 新开 PR/MR 了

  • 新的提交被推送到现有的 PR/MR

调查结果以内联注释的形式出现在受影响的代码行上,总体评估以 PR/MR 评论的形式发布。您可以配置查找结果是屏蔽合并(必需状态检查)还是仅供参考。

自动验证测试

触发发布就绪风险评估时, DevOps Agent 会创建一个 AWS托管验证环境并将您的代码克隆到该环境中。该环境在专用的计算资源上运行,其网络限制限制了对构建、工件存储和检索的可信服务的访问。

DevOps 代理会读取应用程序的代码和项目文件以确定所需的构建工具和依赖关系,然后将其安装在验证环境中。成功构建应用程序后,代理会生成测试计划并运行该计划以识别功能风险,例如可能导致故障或意外行为的边缘情况。

验证测试结果与标准、依赖关系和访问控制结果一起包含在最终版本就绪报告中。

您可以使用 代理说明 (AGENTS.md) 来调整验证测试的执行方式,例如,指定要运行哪些测试命令、哪些构成通过构建,或者在验证期间要执行应用程序的哪些部分。

允许的网络目的地

验证测试环境的出站网络访问权限仅限于预定义的许可名单。在验证期间,您的应用程序可以访问以下域:

域: 用途
.amazonaws.com, .aws.amazon.com AWS 服务
.public.ecr.aws Amazon ECR Public
.docker.com, .docker.io Docker Hub
.github.com, .githubusercontent.com GitHub
.gitlab.com GitLab
.npmjs.com, .npmjs.org npm 注册表
.pypi.org, .pypi.python.org, .pythonhosted.org Python 包索引
.crates.io, .rustup.rs Rust 软件包
.maven.org, .gradle.org Java/Gradle 包裹
.nuget.org .NET 包
.rubygems.org, .ruby-lang.org Ruby 软件包
.golang.org, .pkg.go.dev, .goproxy.io Go 套餐
.nodejs.org, .yarnpkg.com Node.js
.alpinelinux.org, .debian.org, .ubuntu.com, .centos.org, .fedoraproject.org Linux 发行版本库
.cloudfront.net CloudFront 分布
.google.com, .googleapis.com 谷歌 API
.microsoft.com, .visualstudio.com 微软服务
.sourceforge.net, .bitbucket.org 源托管
注意

如果您的应用程序需要对不在此列表中的域进行网络访问,则可以将您的验证测试环境连接到 VPC,这将使代理使用您自己的网络防火墙设置,从而允许您配置对应用程序所需的任何服务的访问权限。

查看代码审查结果

每次代码审查都会生成一份报告,可在 DevOps 代理 Web 应用程序的 “更改” 页面中访问。报告包括:

  • 查找类别 — 策略违规、依赖风险、访问控制问题和测试覆盖率差距

  • 严重性级别-阻止(合并前必须修复)、警告(应解决)和信息(仅限感知)

  • 执行日志 — 代理人使用的评估步骤和工具的完整跟踪,为如何得出结论提供了透明度

你也可以在客服聊天中 DevOps 提问后续问题:“为什么评论在第 42 行标记了 IAM 的变化?” 或 “哪些存储库依赖于我修改的 API 端点?”

与 Kiro IDE 和 CLI 集成

要在 Kiro 中使用发布就绪代码审查,请执行以下操作:

  1. 从 Kiro Power 市场安装 DevOps Agent Kiro Power

  2. Power 包括指示编码代理何时调用发布就绪审查的技能 —— 在重大代码更改之后和创建 PR 之前

  3. 调查结果直接在 IDE 中浮出水面,Kiro 将主动提出修复已发现的问题

在 Kiro CLI 中,您还可以明确触发审核:编码代理将调用发布就绪审查,并将结果纳入其工作流程。

集成 Claude Code

要在 Claude 代码中使用发布就绪代码审查,请执行以下操作:

  1. 安装 DevOps 特工 Claude Code 插件

  2. 该插件将 Claude Code 连接到你的 Agent Space,并允许编码代理调用发布准备情况审查

  3. 在开发过程中,Claude Code 可以在提交之前请求审查正在进行的更改并解决发现的问题

与集成 AWS 变换自定义

要在 Transform c usto AWS m 中使用发布就绪代码审查

  1. 从 Trans AWS form 自定义示例存储库中下载 AWS DevOps 代理发布就绪代码审查技能 GitHub。

  2. 按照存储库 README 中的说明 AWS 将技能安装到您的 Transform 环境中。

  3. 安装后,该技能将与 T AWS ransform 的代码生成工作流程集成。当 Transform 生成或修改代码时,该技能会针对提议的更改调用发布准备情况审查。

  4. 查看直接在变换输出中显示的结果。如果发现问题,Transform 可以在完成代码更改之前解决这些问题。

在中使用代码审查 GitHub

先决条件: GitHub 存储库已连接到您的代理空间,并启用了自动审阅。有关设置说明,请参阅配置代码审查和自动测试

  • 评论显示为拉取请求差异的内联评论,并附有整体状态评论

  • 配置为必需的状态检查,以便在存在屏蔽发现时阻止合并

  • 默认情况下,代理会查看所有 PR;路径和分支筛选可在您的代理空间设置中配置

在中使用代码审查 GitLab

先决条件: GitLab 项目已连接到您的代理空间,并启用了自动审核。有关设置说明,请参阅配置代码审查和自动测试

  • 评论显示为合并请求差异的内联评论,并附有总体说明

  • 配置为合并请求批准规则,要求解决屏蔽结果

  • 默认情况下,代理会查看所有 MR;路径和分支筛选可在您的代理空间设置中配置

在 DevOps 代理聊天中使用代码审查

在 DevOps 代理聊天中,您可以:

  • 请求审查任何分支、提交或存储库范围

  • 询问代理对您项目的依赖关系了解多少:“哪些代码库与支付存储库中的服务交互?”

  • 询问有关具体发现的后续问题

  • 请求代理针对已发现的问题生成修复程序

  • 查看已连接存储库的依赖关系知识图表

Agentic 安全护栏

发布准备情况审查包括内置安全护栏,可防止常见的不安全代理行为。在审查过程中,这些护栏始终处于活动状态。随着功能的发展,具体的覆盖范围和执法行为可能会发生变化。虽然我们的目标是尽可能多地涵盖常见的不安全行为,但有些行为却没有相应的防护措施。

凭据泄露防护

如果工具输入包含普通的纯文本凭证模式(例如 AWS 密钥、访问令牌和私钥),代理会阻止任何工具调用。

敏感文件泄露检测

该代理会扫描并阻止将访问敏感文件路径与网络操作结合在一起的 shell 命令,从而防止数据泄露企图。

变异的 AWS 操作阻塞

代理会阻止任何会修改您的基础架构的 AWS API 调用。这可以防止审查代理在分析期间对您的 AWS 环境进行更改。 Read-only 允许操作(描述、获取、列出);禁止变异操作。

Read-only 允许诸如describe_*get_*、和之类list_*的操作。

顺序阶段强制执行

发布准备情况审查阶段必须按顺序执行。这样可以确保系统而彻底的评估,并防止因未完成的评估而跳过步骤。