Cloud Build 服务让您在 Google Cloud 上执行构建。
Cloud Build 可以从各种代码库或云存储空间导入源代码,根据您的规范执行构建,并生成诸如 Docker 容器或 Java 归档的软件工件。
您还可以使用 Cloud Build 来帮助保护您的软件供应链。Cloud Build 功能满足软件制品的供应链级别 (SLSA) 级别 3 的要求。如需有关保护构建流程的指导,请参阅保护 build。
构建配置和构建步骤
您可以编写构建配置,以向 Cloud Build 提供有关执行什么任务的说明。可以将构建配置为提取依赖项,运行单元测试、静态分析和集成测试,并使用 docker、gradle、maven、bazel 和 gulp 等构建工具创建软件工件。
Cloud Build 将构建作为一系列构建步骤执行,其中的每个构建步骤都在 Docker 容器中运行。执行构建步骤类似于在脚本中执行命令。
您可以使用 Cloud Build 和 Cloud Build 社区提供的构建步骤,也可以编写自己的自定义构建步骤:
Cloud Build 提供的构建步骤:Cloud Build 发布了一组适用于常用语言和任务的受支持开源构建步骤。
社区提供的构建步骤:Cloud Build 用户社区提供了开源构建步骤。
自定义构建步骤:您可以自行创建要在自己的构建中使用的构建步骤。
每个构建步骤都通过其连接到本地 Docker 网络(名为 cloudbuild
)的容器运行。这样,构建步骤就可以相互通信,
共享数据。如需详细了解 cloudbuild
网络,请参阅
Cloud Build 网络。
您可以在 Cloud Build 中使用标准 Docker Hub 映像,例如 Ubuntu 和 Gradle。
启动构建
您可以使用 Google Cloud CLI 或 Cloud Build API 在 Cloud Build 中手动启动构建,也可以使用 Cloud Build 的构建触发器功能,创建为响应代码更改而启动新构建的自动持续集成/持续交付 (CI/CD) 工作流。
您可以将构建触发器与许多代码库(包括 Cloud Source Repositories、GitHub、Bitbucket)集成在一起。
查看构建结果
您可以使用 gcloud CLI、Cloud Build API 或使用 Google Cloud 控制台的 Cloud Build 部分中的构建记录页面查看构建结果,该页面会显示 Cloud Build 执行的每个构建的详细信息和日志。有关说明,请参阅查看构建 结果。
构建的工作原理
以下步骤描述了一般而言的 Cloud Build 构建生命周期:
- 准备应用代码及任何所需资源。
- 创建 YAML 或 JSON 格式的构建配置文件,其中包含 Cloud Build 的说明。
- 将构建提交到 Cloud Build。
- Cloud Build 根据您提供的构建配置执行构建。
- 如果适用,构建的任何工件都会推送到 Artifact Registry。
Docker
Cloud Build 使用 Docker 执行构建。对于每个构建步骤,Cloud Build 都会将 Docker 容器作为 docker run
的实例执行。目前,Cloud Build 运行的是 Docker 引擎版本 20.10.24。
Cloud Build 接口
您可以通过 Google Cloud 控制台、gcloud
命令行工具或 Cloud Build 的 REST API 使用 Cloud Build。
在 Google Cloud 控制台中,您可以查看 Cloud Build 构建结果 在构建记录中 页面,以及自动构建 构建触发器。
您可以使用 gcloud CLI 创建和管理 build。你可以运行命令来执行任务 例如提交构建, 列出构建以及取消 build。
您可以使用 Cloud Build REST API 请求构建。
与其他 Cloud Platform API 一样,您必须使用 OAuth2 授予访问权限。获得访问授权后,您可以使用 API 启动新构建、查看构建状态和详情、列出每个项目的构建并取消当前正在进行的构建。
如需了解详情,请参阅 API 文档。
默认池和专用池
默认情况下,当您在 Cloud Build 上运行构建时,该构建在可访问公共互联网的安全托管环境中运行。每个构建都在其自己的工作器上运行,并与其他工作负载隔离。您可以通过多种方式自定义构建,包括增加机器类型的大小或分配更多磁盘空间。默认池对环境的可自定义程度有限制,特别是对于专用网络访问权限。
专用池是专用的私有工作器池,允许您对构建环境进行更多自定义,包括访问专用网络中的资源的功能。与默认池类似,专用池由 Cloud Build 托管和完全代管,并可以扩容和缩容至零,无需设置、升级或扩缩基础架构。由于专用池是客户专用的资源,因此您可以通过更多方式对其进行配置。
如需详细了解专用池以及默认专用池之间的功能差异 池和专用池,请参阅专用池概览。
构建安全性
Cloud Build 提供了多种功能来保护构建,包括:
自动构建
自动化 build 或脚本化 build 会在 build 脚本或 build 配置中定义所有 build 步骤,包括检索源代码的步骤和构建代码的步骤。唯一的手动命令(如果有)是运行 build 的命令。Cloud Build 使用构建配置文件 向 Cloud Build 提供构建步骤
自动构建可确保构建步骤保持一致。不过,在一致且可信的环境中运行 build 也很重要。
虽然本地 build 对于调试目的可能很有用,但在发布软件时, 可能会带来很多安全问题、不一致和 影响构建流程的问题
- 允许本地构建为有恶意的攻击者提供了途径 修改构建流程
- 开发者本地环境和开发者做法不一致,导致很难重现 build 并诊断 build 问题。
在 SLSA 框架的要求中,SLSA 级别 1 要求使用自动化构建,SLSA 级别 2 要求使用构建服务(而非开发者环境)进行构建。
构建来源
构建来源是关于 build 的可验证数据的集合。
来源元数据包括已构建映像的摘要、输入源位置、构建工具链和构建时长等详细信息。
生成 build 来源有助于您:
- 验证构建的工件是否是从可信来源位置通过可信构建系统创建的。
- 识别从不可信的来源位置或构建系统注入的代码。
您可以使用提醒和政策机制主动使用 build 来源数据。例如,您可以创建仅允许部署代码的政策 根据经过验证的来源制作而成。
Cloud Build 可以为容器映像生成构建出处 提供 SLSA 3 级保证。如需了解详情,请参阅 查看构建来源。
短暂构建环境
短暂环境是指仅在单次 build 调用期间有效的临时环境。构建完成后,系统会清除或删除环境。临时构建可确保构建服务和构建步骤 可在临时环境中运行,例如容器或虚拟机。无需重复使用 现有构建环境,构建服务就会预配新的环境 并在构建流程完成后将其销毁。
临时环境可确保干净 build,因为没有残留文件 或先前 build 中可能会干扰构建的环境设置 过程。非短暂环境为攻击者注入恶意文件和内容提供了机会。临时环境还可以减少维护开销,并减少构建环境中的不一致性。
Cloud Build 用于设置新的虚拟机 并在构建完成后销毁该环境。
部署政策
您可以将 Cloud Build 与 Binary Authorization 集成 以检查构建证明,并阻止部署非 Cloud Build 生成的项目此过程可以降低部署未经授权的软件的风险。
客户管理的加密密钥
Cloud Build 默认提供客户管理的加密密钥 (CMEK) 合规性。用户无需专门配置任何内容。Cloud Build 通过加密构建时永久性磁盘 (PD) 来实现 CMEK 合规性 并为每个构建生成临时密钥该密钥是针对每个 build 生成的唯一密钥。
构建完成后,系统会立即从内存中擦除并销毁该密钥。时间是 不会存储在任何位置,Google 工程师或支持人员也无法访问;以及 无法恢复。使用此类密钥保护的数据将永久保护 无法访问。如需了解详情,请参阅 Cloud Build 中的 CMEK 合规性。
“安全分析”面板
Cloud Build 在“安全性”数据分析中提供了一个面板, 该 Google Cloud 控制台会显示多个 安全指标您可以使用此面板来识别和降低构建流程中的风险。
此面板会显示以下信息:
软件工件的供应链 (SLSA) 级别:根据 SLSA 规范标识软件构建流程的成熟度级别。
漏洞:在您的 Google Cloud 控制台中发现的所有漏洞的概览 以及图片名称 Artifact Analysis 已扫描。您可以点击映像名称以查看漏洞详细信息。例如,在屏幕截图中,您可以点击 java-guestbook-backend。
构建详情:构建详情,例如构建器和指向 查看日志。
build 出处:build 的出处。
Software Delivery Shield
Cloud Build 是 Software Delivery Shield 解决方案的一部分。Software Delivery Shield 是一种 全代管式端到端软件供应链安全解决方案,可帮助 您可以改进开发者工作流和工具、软件 依赖项、用于构建和部署软件的 CI/CD 系统,以及 运行时环境,例如 Google Kubernetes Engine 和 Cloud Run。如需了解如何将 Cloud Build 与 Software Delivery Shield 的其他组件结合使用以改进软件供应链的安全状况,请参阅 Software Delivery Shield 概览。
后续步骤
- 阅读 Docker 快速入门,了解如何使用 Cloud Build 构建 Docker 映像。
- 了解如何在 Cloud Build 中构建、测试和部署工件。
- 了解不同类型的 Cloud Build 触发器。
- 阅读我们关于 DevOps 的资源,并探索 DevOps 研究和评估研究项目。