View a markdown version of this page

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

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

发布就绪代码审查

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

开始使用

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

第 1 步:在您的仓库上启用功能

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

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

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

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

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

该部分还包括:

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

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

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

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

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

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

注意

与账户中的 VPC 集成会遵循任何网络限制,通过您的内部路由路由路由网络流量。

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

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

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

  3. 前往 能力” 选项卡并选择您的管道提供商(GitHub 或 GitLab)。

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

  5. 对于运行时角色,选择 DevOps 代理在构建期间访问内部服务时将代入的 IAM 角色。此角色必须有权使用与您的代理空间相同的 AWS 账户访问 AWS 密钥管理器。我们建议使用与您的主要代理角色不同的角色。

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

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

执行代码审查

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

  • “审查回购支付服务的分支机构 feature/payments 是否存在发行风险”

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

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

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

  • 建议采取的行动 — 封锁、谨慎行事或安全释放

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

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

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

审核通常在 8-10 分钟内完成,具体取决于变更的大小和复杂程度。

自动代码审查

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

代码生成期间的代码审查

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

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

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

启用自动 PR/MR 审阅后,代理会审查您连接的存储库中的所有新的拉取请求和合并请求。评论在以下情况下触发:

  • 新 PR/MR 开了一个

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

调查结果以对受影响代码行的行内注释的形式出现,总体评估以 PR/MR 评论的形式发布。您可以配置发现是阻止合并(必需的状态检查)还是仅限建议。

公共存储库限制

自动 PR/MR 代码审查触发器仅适用于私有存储库。 DevOps 代理不会自动审查公共存储库上的拉取请求或合并请求。

由于任何人都可以针对公共存储库(包括未知的外部贡献者)提出拉取请求,因此自动触发对这些 PR 的审查可能会在仓库所有者不知情的情况下消耗资源或处理不可信的内容。将自动触发器限制为私有仓库可确保只有可信合作者才能启动审查工作流程。

如果你使用公共存储库,你仍然可以通过 DevOps 代理聊天或编码代理集成(Kiro Power、Claude Code 插件或 T AWS ransform 自定义)提出申请,进行发布准备情况代码审查。

自动验证测试

触发发布准备情况风险评估时, 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 源托管
.prisma.sh Prisma ORM
get.helm.sh Helm 包管理器
.terraform.io Terraform 注册表
buf.build 增益(Protobuf)
.jitpack.io JitPack (JVM 软件包)
.scala-sbt.org Scala SBT
.sheetjs.com SheetJS
.confluent.io Confluent (Kafka)
.external-secrets.io 外部机密操作员
registry.npmmirror.com npm 镜像注册表
注意

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

查看代码审查结果

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

  • 查找类别 — 违反政策、依赖性风险、访问控制问题和测试覆盖范围差距

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

  • 执行日志 — 代理人使用的评估步骤和工具的完整记录,可透明地了解如何得出结论

您还可以在客服聊天中 DevOps 提出后续问题:“为什么审核在第 42 行标记 IAM 变更?” 或 “哪些存储库依赖于我修改的 API 端点?”

与 Kiro IDE 和 CLI 集成

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

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

  2. 权限包括指导编码代理何时调用发布准备情况审查的技能(在重大代码更改之后和创建 PR 之前)

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

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

与 Claude Code 集成

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

  1. 从 Claude Code 插件市场安装 Ag DevOps ent Claude Code 插件

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

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

与... 集成 AWS 自定义转换

要在 T AWS ransform 自定义中使用发布就绪代码审查,请

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

  2. 按照存储库自述文件中的说明将该技能安装到您的 T AWS ransform 环境中。

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

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

在中使用代码审查 GitHub

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

  • 评论以内联评论的形式显示在拉取请求差异中,并附有总体状态评论

  • 将状态检查配置为必需状态检查,以在存在阻塞发现时阻止合并

在中使用代码审查 GitLab

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

  • 评论以嵌入式评论形式显示合并请求差异,并附有总体说明

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

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

通过 DevOps 代理聊天,您可以:

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

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

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

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

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

代理安全护栏

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

防止凭证泄露

如果工具输入包含明文形式的常见凭据模式,例如 AWS 密钥、访问令牌和私钥,代理会阻止任何工具调用。

敏感文件泄露检测

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

突变 AWS 操作阻止

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

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

顺序阶段执法

发布准备情况审查阶段必须按顺序执行。这样可以确保系统和全面的评估,并防止跳过不完整的评估。