AWS CodeBuild 常见问题
一般性问题
问:什么是 AWS CodeBuild?
AWS CodeBuild 是一项在云中完全托管的持续集成服务。CodeBuild 可编译源代码、运行测试,并生成可供部署的软件包。使用 CodeBuild,您无需预置、管理和扩展自己的构建服务器。CodeBuild 可自动扩展和缩减以及并发处理多项构建任务,因此您的构建任务不必在队列中等待。您可以使用 CodeBuild 预先打包的构建环境快速开始,也可以使用自定义构建环境来使用自己的构建工具。使用 CodeBuild,您只需按分钟付费。
问:为什么应该使用 CodeBuild?
您不必自行安装、修补和维护构建服务器软件,可以享受 CodeBuild 的完全托管体验。您将构建任务提交给 CodeBuild 后,它会为每个构建任务创建临时计算容器,在容器中运行构建任务,完成后丢弃容器。您无需管理构建服务器硬件或软件。CodeBuild 还会根据您的构建任务量自动进行扩展。它会立即处理您提交的每个构建任务,可以并发运行各个构建任务,也就是说,您的构建任务永远不会在队列中等待。
问:CodeBuild 如何定价?
有关详细信息,请参阅 AWS CodeBuild 定价页面。
使用 CodeBuild
问:什么是构建项目?
构建项目用于定义 CodeBuild 运行构建任务的方式。它包括的信息有源代码获取位置、使用的构建环境、运行的构建命令和存储构建输出的位置等。构建环境是由操作系统、编程语言运行时和 CodeBuild 用于运行构建任务的工具组成的。
问:如何配置构建项目?
可以通过控制台或 AWS CLI 配置构建项目。您指定源存储库位置、运行时环境、构建命令、容器担任的 IAM 角色和运行构建任务所需的计算类。您也可以选择在 buildspec.yml 文件中指定构建命令。
问:CodeBuild 支持哪些源存储库?
CodeBuild 可以连接到 AWS CodeCommit、S3、GitHub 和 GitHub Enterprise 为构建任务拉取源代码。
问:CodeBuild 支持哪些编程框架?
CodeBuild 为支持的 Java、Ruby、Python、Go、Node.js、Android、.NET Core、PHP 和 Docker 版本提供预配置环境。您也可以自定义自己的环境,方法是创建 Docker 镜像并将其上传到 Amazon EC2 Container Registry 或 Docker Hub 注册表。然后您就可以在自己的构建项目中引用此自定义镜像。
问:CodeBuild 提供了哪些预配置的 Windows 构建运行时?
CodeBuild 为 .NET Core 2.0 提供预配置的 Windows 构建环境。我们也希望为 Microsoft .NET Framework 客户(许多客户已拥有使用 Microsoft 专有库的许可证)提供预配置的构建环境,但 Microsoft 目前并不愿意与我们合作满足这些客户的要求。通过创建 Docker 镜像并将其上传到 Amazon EC2 Container Registry 或 Docker Hub 注册表,您可以自定义您的环境,以支持 .NET Framework 等其他构建目标。然后您就可以在自己的构建项目中引用此自定义镜像。
问:构建任务运行时会发生什么?
CodeBuild 为构建项目中定义的类创建一个临时计算容器,用指定的运行时环境加载它,下载源代码,执行项目中配置的命令,将生成的项目上传到 S3 存储桶后销毁该计算容器。在构建期间,CodeBuild 会将构建输出流式传输到服务控制台和 Amazon CloudWatch。
问:如何设置第一个构建程序?
登录 AWS 管理控制台,创建一个构建项目,然后运行构建任务。有关 CodeBuild 的介绍,请参阅入门了解分步教程。您也可以使用 CodeBuild Local 在本地测试和调试您的构建。
问:我可以配合使用 CodeBuild 和 Jenkins 吗?
可以。可以使用 CodeBuild Plugin for Jenkins 将 CodeBuild 集成到 Jenkins 任务中。构建任务会发送到 CodeBuild,无需配置和管理 Jenkins 工作程序节点。
问:我该如何查看过去的构建结果?
您可以通过控制台、CloudWatch 或 API 获取过去的构建任务结果。构建结果包括结果(成功或失败)、构建持续时间、输出项目位置和日志位置。借助 CodeBuild 控制面板,您可以查看各项指标来了解一段时间内的构建行为。该控制面板会显示已尝试执行、成功和失败的构建任务数量以及构建任务持续时间。您还可以访问 CloudWatch 控制台查看更详细的构建任务指标。要了解有关使用 CloudWatch 监控 CodeBuild 的更多信息,请访问我们的文档。
问:如何调试过去失败的构建任务?
您可以通过检查构建任务运行期间生成的详细日志来调试构建任务,也可以使用 CodeBuild Local 在本地测试和调试构建任务。
问:为什么 build.general1.small 不支持适用于 Windows 的 .NET Core 构建环境?
由于 Windows Docker 基本容器和其他库的大小,适用于 Windows 的 .NET Core 构建环境所需的内存和处理能力超出了 build.general1.small 计算实例类型的承受范围。基于这一限制,适用于 Windows 的 .NET Core 构建环境没有免费套餐。
问:如何接收 AWS CodeBuild 中各种事件的通知或警报?
您可以针对影响您部署的事件创建通知。通知将以 Amazon SNS 通知的形式出现。每个通知将包括状态消息以及指向其事件生成该通知的资源的链接。 通知没有额外成本;但您可能需要为通知使用的其他 AWS 服务付费,例如 Amazon SNS。要了解如何开始使用通知,请参阅通知用户指南。此外,使用 AWS Chatbot 的客户可以将通知配置为发送到其 Slack 通道或 Amazon Chime 聊天室。有关更多详情,请单击此处。
安全性
问:我可以加密 CodeBuild 存储的构建项目吗?
可以。您可以指定存储在 AWS Key Management Service (AWS KMS) 中的密钥,从而加密您的项目。
问:CodeBuild 如何隔离属于其他客户的构建任务?
CodeBuild 在与其他用户隔离的新环境中运行您的构建任务,并在完成后丢弃每个构建环境。CodeBuild 在基础设施和执行级别提供安全性和隔离。
问:我是否可以使用 AWS Identity and Access Management (IAM) 管理对 CodeBuild 的访问?
可以。您可以通过 IAM 策略中的资源级权限控制对构建项目的访问。
区域
了解有关 AWS CodeBuild 定价的更多信息