入门 CodeBuild - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

入门 CodeBuild

在以下教程中,您将使用 Amazon CodeBuild 将示例源代码输入文件的集合构建到源代码的可部署版本中。

两个教程都有相同的输入和结果,但其中一个使用 Amazon CodeBuild 控制台,另一个使用控制台 Amazon CLI。

重要

我们不建议您使用 Amazon root 账户完成本教程。

控制台 Amazon CodeBuild 使用入门

在本教程中,您将使用 Amazon CodeBuild 将一组示例源代码输入文件(构建输入工件构建输入)构建为源代码的可部署版本(构建输出工件构建输出)。具体而言,您将指示 CodeBuild 使用常见的构建工具 Apache Maven 将一组 Java 类文件生成到 Java 存档 (JAR) 文件中。您无需熟悉 Apache Maven 或 Java 即可完成本教程。

您可以 CodeBuild 通过 CodeBuild 控制台 Amazon CodePipeline、 Amazon CLI、或 Amazon SDKs。本教程演示如何使用 CodeBuild 控制台。有关使用 CodePipeline 的信息,请参阅 CodeBuild 搭配使用 CodePipeline

重要

本教程中的步骤要求您创建可能会对您的 Amazon 账户产生费用的资源(例如 S3 存储桶)。其中包括与 Amazon S3 和 CloudWatch 日志相关的 Amazon 资源和操作可能产生的费用。 CodeBuild Amazon KMS有关更多信息,请参阅Amazon CodeBuild 定价Amazon S3 定价Amazon Key Management Service 定价亚马逊 CloudWatch 定价

步骤 1:创建源代码

(一部分:控制台 Amazon CodeBuild 使用入门

在此步骤中,您将创建要生成 CodeBuild 到输出存储桶的源代码。此源代码包含两个 Java 类文件和一个 Apache Maven 项目对象模型 (POM) 文件。

  1. 在您的本地计算机或实例上的空目录中,创建此目录结构。

    (root directory name) `-- src |-- main | `-- java `-- test `-- java
  2. 使用您选择的文本编辑器创建此文件,将其命名为 MessageUtil.java,然后保存在 src/main/java 目录中。

    public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }

    创建此类文件是用来输出传入的字符串。MessageUtil 构造函数用于设置字符串。printMessage 方法用于创建输出。salutationMessage 方法用于输出 Hi! 后跟字符串。

  3. 创建此文件,将其命名为 TestMessageUtil.java,然后将它保存在 /src/test/java 目录中。

    import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }

    此类文件用于将 MessageUtil 类中的 message 变量设置为 Robert。然后,通过检查输出中是否出现字符串 RobertHi!Robert 来测试是否成功设置 message 变量。

  4. 创建此文件,将其命名为 pom.xml,然后保存在根(顶级)目录中。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>

    Apache Maven 使用此文件中的指令将 MessageUtil.javaTestMessageUtil.java 文件转换为名为 messageUtil-1.0.jar 的文件,然后运行指定测试。

此时,您的目录结构应如下所示。

(root directory name) |-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

步骤 2:创建 buildspec 文件

(上一步:步骤 1:创建源代码

在此步骤中,您将创建一个构建规范 (build spec) 文件。buildspec 是一组生成命令和相关设置,采 CodeBuild 用 YAML 格式,用于运行构建。如果没有构建规范, CodeBuild 则无法成功地将您的构建输入转换为构建输出,也无法在构建环境中找到要上传到输出存储桶的构建输出项目。

创建此文件,将其命名为 buildspec.yml,然后保存在根(顶级)目录中。

version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
重要

因为 buildspec 声明必须为有效的 YAML,所以 buildspec 声明中的空格至关重要。如果 buildspec 声明中的空格数与此不匹配,则构建可能会立即失败。您可以使用 YAML 验证程序测试 buildspec 声明是否为有效的 YAML。

注意

您可以在创建构建项目时单独声明构建命令,而不是将 buildspec 文件包含在源代码中。如果您需要使用其他构建命令来构建源代码,而不是每次更新源代码存储库,这个方法很有用。有关更多信息,请参阅 buildspec 语法

在此 buildspec 声明中:

  • version 表示正在使用的 buildspec 标准的版本。此 buildspec 声明使用最新版本 0.2

  • phases 表示您可以指示 CodeBuild 运行命令的生成阶段。这些构建阶段包括 installpre_buildbuildpost_build。您无法更改这些构建阶段名称的拼写,也无法创建更多构建阶段名称。

    在本示例中,在该build阶段 CodeBuild 运行mvn install命令。此命令指示 Apache Maven 编译和测试 Java 类文件,然后将编译完的文件打包为构建输出构件。出于完整性考虑,本示例的每个构建阶段中都放了几条 echo 命令。您稍后查看本教程中详细的构建信息时,这些 echo 命令的输出可以帮助您更好地理解 CodeBuild 运行命令的方式以及顺序。(尽管本示例中包含了所有构建阶段,但如果您不打算在某个构建阶段运行任何命令,则无需包含该构建阶段。) 对于每个构建阶段,按所列顺序从头到尾 CodeBuild 运行每个指定的命令,一次运行一个命令。

  • artifacts表示 CodeBuild上传到输出存储桶的一组构建输出项目。 files表示要包含在生成输出中的文件。 CodeBuild 上传在构建环境的target相对目录中找到的单个messageUtil-1.0.jar文件。文件 messageUtil-1.0.jar 和目录 target 只是根据本示例中 Apache Maven 创建和存储构建输出构件的方式来命名的。在您自己的构建项目中,这些文件和目录名称会有所不同。

有关更多信息,请参阅Buildspec 参考

此时,您的目录结构应如下所示。

(root directory name) |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

步骤 3:创建两个 S3 存储桶

(上一步:步骤 2:创建 buildspec 文件

尽管您可以为本教程使用单个存储桶,但使用两个存储桶使您可以更容易地查看构建输入的来源以及构建输出的去向。

  • 其中一个存储桶(输入存储桶)用于存储构建输入。在本教程中,此输入存储桶的名称是codebuild-region-ID-account-ID-input-bucket,其中region-ID是存储桶的 Amazon 区域,account-ID是您的 Amazon 账户 ID。

  • 另一个存储桶(输出存储桶)用于存储构建输出。在本教程中,此输出存储桶的名称为 codebuild-region-ID-account-ID-output-bucket

如果您为这些存储桶选择了不同的名称,请务必在本教程中使用它们。

这两个存储桶必须与您的版本位于同一个 Amazon 区域。例如,如果您指示 CodeBuild 在美国东部(俄亥俄州)区域运行构建,则这些存储桶也必须位于美国东部(俄亥俄州)区域。

有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的创建存储桶

注意

尽管 CodeBuild 还支持存储在 CodeCommit GitHub、和 Bitbucket 存储库中的构建输入,但本教程并未向您展示如何使用它们。有关更多信息,请参阅 计划构建

步骤 4:上传源代码和 buildspec 文件

(上一步:步骤 3:创建两个 S3 存储桶

在此步骤中,您将源代码和 buildspec 文件添加到输入存储桶中。

使用操作系统的 ZIP 实用工具,创建一个名为 MessageUtil.zip 的文件,其中包含 MessageUtil.javaTestMessageUtil.javapom.xmlbuildspec.yml

MessageUtil.zip 文件的目录结构必须如下所示。

MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
重要

请不要包含 (root directory name) 目录,而只包含 (root directory name) 目录中的目录和文件。

MessageUtil.zip 文件上传至名为 codebuild-region-ID-account-ID-input-bucket 的输入存储桶中。

重要

对于 CodeCommit GitHub、和 Bitbucket 存储库,按照惯例,您必须在每个存储库的根目录(顶层)buildspec.yml中存储一个名为的构建规范文件,或者将构建规范声明作为构建项目定义的一部分。请勿创建包含存储库源代码和 buildspec 文件的 ZIP 文件。

仅对于存储在 S3 存储桶中的构建输入,您必须创建一个包含源代码的 ZIP 文件和一个(按照惯例)位于根(顶级)位置的名为 buildspec.yml 的 buildspec 文件,或者将 buildspec 声明作为构建项目定义的一部分包含。

如果您要为 buildspec 文件使用其他名称,或者要在根位置之外的位置引用 buildspec,则可指定 buildspec 覆盖作为构建项目定义的一部分。有关更多信息,请参阅 buildspec 文件名称和存储位置

步骤 5:创建构建项目

(上一步:步骤 4:上传源代码和 buildspec 文件

在此步骤中,您将创建一个 Amazon CodeBuild 用于运行构建的生成项目。构建项目包含有关如何运行构建的信息,包括从何处获取源代码、要使用的构建环境、要运行的构建命令以及将构建输出存储在何处。构建环境代表操作系统、编程语言运行时和用于运行构建的 CodeBuild 工具的组合。构建环境以 Docker 映像的形式表示。有关更多信息,请参阅 Docker 文档网站上的 Docker 概述

对于这个构建环境,你需要使用包含 Java 开发套件 (JDK) 和 Apache Maven 版本的 Docker 镜像。 CodeBuild

创建构建项目
  1. 登录 Amazon Web Services Management Console 并在 https://console.aws.amazon.com/codesuite/codebuild /hom Amazon CodeBuild e 中打开控制台。

  2. 使用 Amazon 区域选择器选择支持 CodeBuild 的地 Amazon 区。有关更多信息,请参阅 Amazon Web Services 一般参考 中的 Amazon CodeBuild 端点和配额

  3. 如果显示 CodeBuild 信息页面,请选择 “创建构建项目”。否则,请在导航窗格中,展开构建,选择构建项目,然后选择创建构建项目

  4. 创建构建项目页面上的项目配置中,对于项目名称,输入此构建项目的名称(在此示例中为 codebuild-demo-project)。每个 Amazon 账户中的构建项目名称必须是唯一的。如果您使用其他名称,请确保在本教程中通篇使用它。

    注意

    创建构建项目页面上,您可能会看到类似于以下内容的错误消息:您没有权限执行此操作。这很可能是因为您以 Amazon Web Services Management Console 无权创建构建项目的用户身份登录。要解决此问题,请退出 Amazon Web Services Management Console,然后使用属于以下 IAM 实体之一的证书重新登录:

    • 您 Amazon 账户中的管理员用户。有关更多信息,请参阅用户指南中的创建您的第一个 Amazon Web Services 账户 root 用户和群组

    • 您 Amazon 账户中的用户 AWSCodeBuildAdminAccessAmazonS3ReadOnlyAccess,且该用户或该用户所属的 IAM 群组附加了、和IAMFullAccess托管策略。如果您的 Amazon 账户中没有具有这些权限的用户或群组,并且您无法将这些权限添加到您的用户或群组,请联系您的 Amazon 账户管理员寻求帮助。有关更多信息,请参阅 Amazon 的托管(预定义)策略 Amazon CodeBuild

    这两个选项都可让您获得创建构建项目所需的管理员权限,以便您能够完成本教程。建议您始终使用完成任务所需的最低权限。有关更多信息,请参阅 Amazon CodeBuild 权限参考

  5. 中,对于源提供商,选择 Amazon S3

  6. 对于 Bucket,选择 codebuild-region-ID-account-ID-input- buck

  7. 对于 S3 对象键,输入 MessageUtil.zip

  8. 环境中,对于环境映像,让托管映像处于选中状态。

  9. 对于操作系统,选择 Amazon Linux

  10. 对于运行时,选择标准

  11. 对于图片,选择 aws/codebuild/amazonlinux-x 86_64-standard: corretto11。

  12. 服务角色中,将新建服务角色保持选中状态,并将角色名称保持不变。

  13. 对于 buildspec,将使用 buildspec 文件保留为选中状态。

  14. 构件中,对于类型,选择 Amazon S3

  15. 对于存储桶名称,选择 codebuild-region-ID-account-ID-output- bucket。

  16. 名称路径留空。

  17. 选择创建构建项目

步骤 6:运行构建

(上一步:步骤 5:创建构建项目

在此步骤中,您将指示 Amazon CodeBuild 使用构建项目中的设置运行构建。

运行构建
  1. https://console.aws.amazon.com/codesuite/codebuild /home 中打开 Amazon CodeBuild 控制台。

  2. 在导航窗格中,选择构建项目

  3. 在生成项目列表中,选择 codebuild-demo-project,然后选择开始构建。构建会立即开始。

步骤 7:查看汇总的构建信息

(上一步:步骤 6:运行构建

在此步骤中,您将查看有关构建状态的汇总信息。

查看汇总的构建信息

  1. 如果未显示codebuild-demo-project:<build-ID>页面,请在导航栏中选择 “生成历史记录”。接下来,在生成项目列表中,对于 P ro ject,选择 B uild 运行链接codebuild-demo-project。应该只有一个匹配的链接。(如果您之前已完成本教程,请在已完成列中选择具有最新值的链接。)

  2. 构建状态页面上,在阶段详细信息中,应显示以下构建阶段,并且状态列中为已成功

    • SUBMITTED

    • QUEUED

    • PROVISIONING

    • DOWNLOAD_SOURCE

    • INSTALL

    • PRE_BUILD

    • BUILD

    • POST_BUILD

    • UPLOAD_ARTIFACTS

    • FINALIZING

    • COMPLETED

    构建状态中,应显示已成功

    如果您看到的是正在进行,请选择刷新按钮。

  3. 在每个构建阶段的旁边,持续时间值表示构建阶段持续的时间。结束时间值表示构建阶段的结束时间。

步骤 8:查看详细的构建信息

(上一步:步骤 7:查看汇总的构建信息

在此步骤中,您将在 Logs 中查看有关构建版本的 CloudWatch 详细信息。

注意

为了保护敏感信息, CodeBuild 日志中隐藏了以下内容:

查看详细的构建信息
  1. 上一步完成后,构建详细页面继续显示,Build logs 中显示了构建日志的最后 10000 行内容。要在 “日志” 中查看整个构建 CloudWatch 日志,请选择 “查看整个日志” 链接。

  2. 在 CloudWatch 日志日志流中,您可以浏览日志事件。默认情况下,只显示最近的一组日志事件。要查看以前的日志事件,请滚动到列表开头。

  3. 在本教程中,大多数日志事件包含的是关于 CodeBuild 下载构建相关文件并将其安装到构建环境中的详细信息,您可能并不关心这些信息。您可以使用筛选事件框来减少显示的信息。例如,如果您在筛选事件中输入 "[INFO]",则仅显示那些包含 [INFO] 的事件。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的筛选条件和模式语法

步骤 9:获取构建输出构件

(上一步:步骤 8:查看详细的构建信息

在此步骤中,您将获得 CodeBuild 生成并上传到输出存储桶的messageUtil-1.0.jar文件。

您可以使用 CodeBuild 控制台或 Amazon S3 控制台来完成此步骤。

获取构建输出工件(Amazon CodeBuild 控制台)
  1. 在 CodeBuild 控制台仍处于打开状态且仍显示上一步中的构建详细信息页面的情况下,选择构建详细信息选项卡,然后向下滚动到 Artifac t s 部分。

    注意

    如果未显示构建详细信息页面,请在导航栏中选择构建历史记录,然后选择构建运行链接。

  2. 指向 Amazon S3 文件夹的链接位于构件上传位置下方。该链接会打开 Amazon S3 文件夹,您可以在这里找到 messageUtil-1.0.jar 构建输出构件文件。

获取构建输出构件(Amazon S3 控制台)
  1. 打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/

  2. 打开 codebuild-region-ID-account-ID-output-bucket

  3. 打开 codebuild-demo-project 文件夹。

  4. 打开 target 文件夹,您可以在此处找到 messageUtil-1.0.jar 构建输出构件文件。

步骤 10:删除 S3 存储桶

(上一步:步骤 9:获取构建输出构件

为防止持续向您的 Amazon 账户收费,您可以删除本教程中使用的输入和输出存储桶。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的删除或清空存储桶

如果您使用 IAM 用户或管理员 IAM 用户删除这些存储桶,则该用户必须具有更多访问权限。在标记(### BEGIN ADDING STATEMENT HERE ###### END ADDING STATEMENTS HERE ###)之间添加以下语句到用户的现有访问策略。

此语句中的省略号 (...) 旨在力求简洁。请勿删除现有访问策略中的任何语句。请勿在策略中输入这些省略号。

{ "Version": "2012-10-17", "Id": "...", "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" } ### END ADDING STATEMENT HERE ### ] }

总结

在本教程中,您曾经 Amazon CodeBuild 将一组 Java 类文件生成到 JAR 文件中。然后查看了构建的结果。

现在,您可以尝试 CodeBuild 在自己的场景中使用。按照计划构建中的说明进行操作。如果您觉得自己还没准备好,可以尝试构建一些示例。有关更多信息,请参阅 使用基于案例的示例 CodeBuild

开始 Amazon CodeBuild 使用 Amazon CLI

在本教程中,您将使用 Amazon CodeBuild 将一组示例源代码输入文件(称为构建输入工件构建输入)构建为源代码的可部署版本(称为构建输出构件构建输出)。具体而言,您将指示 CodeBuild 使用常见的构建工具 Apache Maven 将一组 Java 类文件生成到 Java 存档 (JAR) 文件中。您无需熟悉 Apache Maven 或 Java 即可完成本教程。

您可以 CodeBuild 通过 CodeBuild 控制台 Amazon CodePipeline、 Amazon CLI、或 Amazon SDKs。本教程演示了如何 CodeBuild 与 Amazon CLI. 有关使用的信息 CodePipeline,请参见 CodeBuild 搭配使用 CodePipeline

重要

本教程中的步骤要求您创建可能会对您的 Amazon 账户产生费用的资源(例如 S3 存储桶)。其中包括与 Amazon S3 和 CloudWatch 日志相关的 Amazon 资源和操作可能产生的费用。 CodeBuild Amazon KMS有关更多信息,请参阅CodeBuild定价Amazon S3 定价Amazon Key Management Service 定价亚马逊 CloudWatch 定价

步骤 1:创建源代码

(一部分:开始 Amazon CodeBuild 使用 Amazon CLI

在此步骤中,您将创建要生成 CodeBuild 到输出存储桶的源代码。此源代码包含两个 Java 类文件和一个 Apache Maven 项目对象模型 (POM) 文件。

  1. 在您的本地计算机或实例上的空目录中,创建此目录结构。

    (root directory name) `-- src |-- main | `-- java `-- test `-- java
  2. 使用您选择的文本编辑器创建此文件,将其命名为 MessageUtil.java,然后保存在 src/main/java 目录中。

    public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }

    创建此类文件是用来输出传入的字符串。MessageUtil 构造函数用于设置字符串。printMessage 方法用于创建输出。salutationMessage 方法用于输出 Hi! 后跟字符串。

  3. 创建此文件,将其命名为 TestMessageUtil.java,然后将它保存在 /src/test/java 目录中。

    import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }

    此类文件用于将 MessageUtil 类中的 message 变量设置为 Robert。然后,通过检查输出中是否出现字符串 RobertHi!Robert 来测试是否成功设置 message 变量。

  4. 创建此文件,将其命名为 pom.xml,然后保存在根(顶级)目录中。

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>

    Apache Maven 使用此文件中的指令将 MessageUtil.javaTestMessageUtil.java 文件转换为名为 messageUtil-1.0.jar 的文件,然后运行指定测试。

此时,您的目录结构应如下所示。

(root directory name) |-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

步骤 2:创建 buildspec 文件

(上一步:步骤 1:创建源代码

在此步骤中,您将创建一个构建规范 (build spec) 文件。buildspec 是一组生成命令和相关设置,采 CodeBuild 用 YAML 格式,用于运行构建。如果没有构建规范, CodeBuild 则无法成功地将您的构建输入转换为构建输出,也无法在构建环境中找到要上传到输出存储桶的构建输出项目。

创建此文件,将其命名为 buildspec.yml,然后保存在根(顶级)目录中。

version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
重要

因为 buildspec 声明必须为有效的 YAML,所以 buildspec 声明中的空格至关重要。如果 buildspec 声明中的空格数与此不匹配,则构建可能会立即失败。您可以使用 YAML 验证程序测试 buildspec 声明是否为有效的 YAML。

注意

您可以在创建构建项目时单独声明构建命令,而不是将 buildspec 文件包含在源代码中。如果您需要使用其他构建命令来构建源代码,而不是每次更新源代码存储库,这个方法很有用。有关更多信息,请参阅 buildspec 语法

在此 buildspec 声明中:

  • version 表示正在使用的 buildspec 标准的版本。此 buildspec 声明使用最新版本 0.2

  • phases 表示您可以指示 CodeBuild 运行命令的生成阶段。这些构建阶段包括 installpre_buildbuildpost_build。您无法更改这些构建阶段名称的拼写,也无法创建更多构建阶段名称。

    在本示例中,在该build阶段 CodeBuild 运行mvn install命令。此命令指示 Apache Maven 编译和测试 Java 类文件,然后将编译完的文件打包为构建输出构件。出于完整性考虑,本示例的每个构建阶段中都放了几条 echo 命令。您稍后查看本教程中详细的构建信息时,这些 echo 命令的输出可以帮助您更好地理解 CodeBuild 运行命令的方式以及顺序。(尽管本示例中包含了所有构建阶段,但如果您不打算在某个构建阶段运行任何命令,则无需包含该构建阶段。) 对于每个构建阶段,按所列顺序从头到尾 CodeBuild 运行每个指定的命令,一次运行一个命令。

  • artifacts表示 CodeBuild上传到输出存储桶的一组构建输出项目。 files表示要包含在生成输出中的文件。 CodeBuild 上传在构建环境的target相对目录中找到的单个messageUtil-1.0.jar文件。文件 messageUtil-1.0.jar 和目录 target 只是根据本示例中 Apache Maven 创建和存储构建输出构件的方式来命名的。在您自己的构建项目中,这些文件和目录名称会有所不同。

有关更多信息,请参阅Buildspec 参考

此时,您的目录结构应如下所示。

(root directory name) |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

步骤 3:创建两个 S3 存储桶

(上一步:步骤 2:创建 buildspec 文件

尽管您可以为本教程使用单个存储桶,但使用两个存储桶使您可以更容易地查看构建输入的来源以及构建输出的去向。

  • 其中一个存储桶(输入存储桶)用于存储构建输入。在本教程中,此输入存储桶的名称是codebuild-region-ID-account-ID-input-bucket,其中region-ID是存储桶的 Amazon 区域,account-ID是您的 Amazon 账户 ID。

  • 另一个存储桶(输出存储桶)用于存储构建输出。在本教程中,此输出存储桶的名称为 codebuild-region-ID-account-ID-output-bucket

如果您为这些存储桶选择了不同的名称,请务必在本教程中使用它们。

这两个存储桶必须与您的版本位于同一个 Amazon 区域。例如,如果您指示 CodeBuild 在美国东部(俄亥俄州)区域运行构建,则这些存储桶也必须位于美国东部(俄亥俄州)区域。

有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的创建存储桶

注意

尽管 CodeBuild 还支持存储在 CodeCommit GitHub、和 Bitbucket 存储库中的构建输入,但本教程并未向您展示如何使用它们。有关更多信息,请参阅 计划构建

步骤 4:上传源代码和 buildspec 文件

(上一步:步骤 3:创建两个 S3 存储桶

在此步骤中,您将源代码和 buildspec 文件添加到输入存储桶中。

使用操作系统的 ZIP 实用工具,创建一个名为 MessageUtil.zip 的文件,其中包含 MessageUtil.javaTestMessageUtil.javapom.xmlbuildspec.yml

MessageUtil.zip 文件的目录结构必须如下所示。

MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
重要

请不要包含 (root directory name) 目录,而只包含 (root directory name) 目录中的目录和文件。

MessageUtil.zip 文件上传至名为 codebuild-region-ID-account-ID-input-bucket 的输入存储桶中。

重要

对于 CodeCommit GitHub、和 Bitbucket 存储库,按照惯例,您必须在每个存储库的根目录(顶层)buildspec.yml中存储一个名为的构建规范文件,或者将构建规范声明作为构建项目定义的一部分。请勿创建包含存储库源代码和 buildspec 文件的 ZIP 文件。

仅对于存储在 S3 存储桶中的构建输入,您必须创建一个包含源代码的 ZIP 文件和一个(按照惯例)位于根(顶级)位置的名为 buildspec.yml 的 buildspec 文件,或者将 buildspec 声明作为构建项目定义的一部分包含。

如果您要为 buildspec 文件使用其他名称,或者要在根位置之外的位置引用 buildspec,则可指定 buildspec 覆盖作为构建项目定义的一部分。有关更多信息,请参阅 buildspec 文件名称和存储位置

步骤 5:创建构建项目

(上一步:步骤 4:上传源代码和 buildspec 文件

在此步骤中,您将创建一个 Amazon CodeBuild 用于运行构建的生成项目。构建项目包含有关如何运行构建的信息,包括从何处获取源代码、要使用的构建环境、要运行的构建命令以及将构建输出存储在何处。构建环境代表操作系统、编程语言运行时和用于运行构建的 CodeBuild 工具的组合。构建环境以 Docker 映像的形式表示。有关更多信息,请参阅 Docker 文档网站上的 Docker 概述

对于这个构建环境,你需要使用包含 Java 开发套件 (JDK) 和 Apache Maven 版本的 Docker 镜像。 CodeBuild

创建构建项目
  1. Amazon CLI 使用运行create-project命令:

    aws codebuild create-project --generate-cli-skeleton

    输出中将显示 JSON 格式的数据。将数据复制到本地计算机或安装实例上名create-project.json Amazon CLI 为的文件。如果您选择使用其他文件名,请务必在本教程中使用该名称。

    按照以下格式修改所复制的数据,然后保存结果:

    { "name": "codebuild-demo-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "serviceIAMRole" }

    serviceIAMRole替换为 CodeBuild 服务角色的 Amazon 资源名称 (ARN)(例如)。arn:aws:iam::account-ID:role/role-name要创建该文件,请参阅 CodeBuild 允许与其他 Amazon 服务进行交互

    在此数据中:

    • name 表示此构建项目的必需标识符(在本示例中为 codebuild-demo-project)。构建项目名称在您账户的所有构建项目中必须是唯一的。

    • 对于 sourcetype 是一个必需值,表示源代码的存储库类型(在本示例中,S3 表示 Amazon S3 存储桶)。

    • 对于 sourcelocation 表示源代码的路径(在本示例中,为输入存储桶名称后跟 ZIP 文件名称)。

    • 对于 artifactstype 是一个必需值,表示构建输出构件的存储库类型(在本示例中,S3 表示 Amazon S3 存储桶)。

    • 对于 artifactslocation 表示您先前创建或识别的输出存储桶的名称(在本示例中为 codebuild-region-ID-account-ID-output-bucket)。

    • 对于 environmenttype 是表示构建环境类型的必填值(在本例中为 LINUX_CONTAINER)。

    • f image o environment r,是必填值,它表示此构建项目使用的 Docker 映像名称和标签组合,由 Docker 镜像存储库类型指定(在本示例中,aws/codebuild/standard:5.0对于 Docker 镜像存储库中的 Docker 镜像)。 CodeBuild aws/codebuild/standard是 Docker 镜像的名称。 5.0是 Docker 镜像的标签。

      要查找您可以在自己方案中使用的更多 Docker 映像,请参阅构建环境参考

    • F computeType orenvironment,是一个必填值,它表示 CodeBuild 使用的计算资源(在本例中为BUILD_GENERAL1_SMALL)。

    注意

    原始 JSON 格式数据中的其他可用值,如 descriptionbuildspecauth (包括 typeresource)、pathnamespaceTypename (对于 artifacts)、packagingenvironmentVariables (包括 namevalue)、timeoutInMinutesencryptionKeytags (包括 keyvalue) 为可选的值。本教程中未使用这些值,因此它们没有在这里显示。有关更多信息,请参阅 创建构建项目 (Amazon CLI)

  2. 切换到您刚才保存的文件所在的目录,然后再次运行 create-project 命令。

    aws codebuild create-project --cli-input-json file://create-project.json

    如果成功,输出中将显示与此类似的数据。

    { "project": { "name": "codebuild-demo-project", "serviceRole": "serviceIAMRole", "tags": [], "artifacts": { "packaging": "NONE", "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket", "name": "message-util.zip" }, "lastModified": 1472661575.244, "timeoutInMinutes": 60, "created": 1472661575.244, "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "encryptionKey": "arn:aws:kms:region-ID:account-ID:alias/aws/s3", "arn": "arn:aws:codebuild:region-ID:account-ID:project/codebuild-demo-project" } }
    • project 表示有关此构建项目的信息。

      • tags 表示已经声明的所有标签。

      • packaging 表示构建输出构件将如何存储在输出存储桶中。NONE 表示在输出存储桶中创建文件夹。构建输出构件存储在该文件夹中。

      • lastModified 表示构建项目最后一次更改的时间,采用 Unix 时间格式。

      • timeoutInMinutes表示如果构建尚未完成,则在该分钟后 CodeBuild 停止构建。(默认为 60 分钟。)

      • created 表示构建项目的创建时间,采用 Unix 时间格式。

      • environmentVariables表示已声明且可在构建期间使用的任何环境变量。 CodeBuild

      • encryptionKey表示 CodeBuild 用于加密生成输出工件的客户托管密钥的 ARN。

      • arn 表示构建项目的 ARN。

注意

运行该create-project命令后,可能会输出类似于以下内容的错误消息:用户:无权执行:user-ARNcodebuild: CreateProject。这很可能是因为您使用了没有足够权限的用户凭据 CodeBuild 来创建构建项目。 Amazon CLI 要修复此问题,请使用属于以下任一 IAM 实体的凭证配置 Amazon CLI :

  • 您 Amazon 账户中的管理员用户。有关更多信息,请参阅用户指南中的创建您的第一个 Amazon Web Services 账户 root 用户和群组

  • 您 Amazon 账户中的用户 AWSCodeBuildAdminAccessAmazonS3ReadOnlyAccess,且该用户或该用户所属的 IAM 群组附加了、和IAMFullAccess托管策略。如果您的 Amazon 账户中没有具有这些权限的用户或群组,并且您无法将这些权限添加到您的用户或群组,请联系您的 Amazon 账户管理员寻求帮助。有关更多信息,请参阅 Amazon 的托管(预定义)策略 Amazon CodeBuild

步骤 6:运行构建

(上一步:步骤 5:创建构建项目

在此步骤中,您将指示 Amazon CodeBuild 使用构建项目中的设置运行构建。

运行构建
  1. Amazon CLI 使用运行start-build命令:

    aws codebuild start-build --project-name project-name

    project-name替换为上一步中的构建项目名称(例如,codebuild-demo-project)。

  2. 如果成功,输出中将显示与以下内容类似的数据:

    { "build": { "buildComplete": false, "initiator": "user-name", "artifacts": { "location": "arn:aws:s3:::codebuild-region-ID-account-ID-output-bucket/message-util.zip" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "buildStatus": "IN_PROGRESS", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "currentPhase": "SUBMITTED", "startTime": 1472848787.882, "id": "codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE", "arn": "arn:aws:codebuild:region-ID:account-ID:build/codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE" } }
    • build 表示有关此构建的信息。

      • buildComplete 表示构建是否完成 (true)。否则为 false

      • initiator 表示启动构建的实体。

      • artifacts 表示有关构建输出的信息,包括其位置。

      • projectName 表示构建项目的名称。

      • buildStatus 表示运行 start-build 命令时当前构建的状态。

      • currentPhase 表示运行 start-build 命令时的当前构建阶段。

      • startTime 表示构建过程开始的时间,采用 Unix 时间格式。

      • id 表示构建的 ID。

      • arn 表示构建的 ARN。

    记下此 id 值。您在下一个步骤中需要用到它。

步骤 7:查看汇总的构建信息

(上一步:步骤 6:运行构建

在此步骤中,您将查看有关构建状态的汇总信息。

查看汇总的构建信息
  • Amazon CLI 使用运行batch-get-builds命令。

    aws codebuild batch-get-builds --ids id

    id替换为上一步输出中显示的id值。

    如果成功,输出中将显示与此类似的数据。

    { "buildsNotFound": [], "builds": [ { "buildComplete": true, "phases": [ { "phaseStatus": "SUCCEEDED", "endTime": 1472848788.525, "phaseType": "SUBMITTED", "durationInSeconds": 0, "startTime": 1472848787.882 }, ... The full list of build phases has been omitted for brevity ... { "phaseType": "COMPLETED", "startTime": 1472848878.079 } ], "logs": { "groupName": "/aws/codebuild/codebuild-demo-project", "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=region-ID#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "streamName": "38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" }, "artifacts": { "md5sum": "MD5-hash", "location": "arn:aws:s3:::codebuild-region-ID-account-ID-output-bucket/message-util.zip", "sha256sum": "SHA-256-hash" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "initiator": "user-name", "buildStatus": "SUCCEEDED", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "currentPhase": "COMPLETED", "startTime": 1472848787.882, "endTime": 1472848878.079, "id": "codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "arn": "arn:aws:codebuild:region-ID:account-ID:build/codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" } ] }
    • buildsNotFound表示任何没有可用信息的版本的构建 IDs 。在本示例中,其应该为空。

    • builds 表示有关每个具备信息的构建项目的信息。在本示例中,输出中只显示了有关一个构建项目的信息。

      • phases 表示 CodeBuild 在生成过程中运行的一组生成阶段。有关每个构建阶段的信息将分别列出,其中包含:startTimeendTimedurationInSeconds (采用 Unix 时间格式的构建阶段开始时间和结束时间,以及构建阶段的持续时间,以秒为单位),以及 phaseType (如 SUBMITTEDPROVISIONINGDOWNLOAD_SOURCEINSTALLPRE_BUILDBUILDPOST_BUILDUPLOAD_ARTIFACTSFINALIZINGCOMPLETED),还有 phaseStatus (如 SUCCEEDEDFAILEDFAULTTIMED_OUTIN_PROGRESSSTOPPED)。首次运行 batch-get-builds 命令时,可能不会有很多(或没有)阶段。使用相同构建 ID 再次运行 batch-get-builds 命令后,输出中应当会出现更多构建阶段。

      • logs表示 Amazon CloudWatch 日志中有关构建日志的信息。

      • md5sum MD5 并sha256sum表示版本输出工件的 SHA-256 哈希值。只有在构建项目的 packaging 值设置为 ZIP 时,这些内容才会显示在输出中。(在本教程中您未设置此值。) 您可以将这些哈希值和校验和工具一起使用,确认文件的完整性和真实性。

        注意

        您还可以使用 Amazon S3 控制台查看这些哈希值。选中构建输出构件旁边的框,然后依次选择操作属性在 “属性” 窗格中,展开 “元数据”,然后查看-content-x-amz-meta-codebuildmd5 和-content-sha256 的值。x-amz-meta-codebuild(在 Amazon S3 控制台中,不应将构建输出项目的ETag值解释为 MD5 或 SHA-256 哈希。)

        如果您使用 Amazon SDKs 来获取这些哈希,则这些值将命名为 and codebuild-content-md5codebuild-content-sha256

      • endTime 表示构建过程结束的时间,采用 Unix 时间格式。

    注意

    Amazon S3 元数据有一个名为buildArn的 CodeBuild 标头,x-amz-meta-codebuild-buildarn其中包含将 CodeBuild 构件发布到 Amazon S3 的版本。添加 buildArn 是为了允许对通知进行源跟踪并引用生成构件的构建。

步骤 8:查看详细的构建信息

(上一步:步骤 7:查看汇总的构建信息

在此步骤中,您将在 Logs 中查看有关构建版本的 CloudWatch 详细信息。

注意

为了保护敏感信息, CodeBuild 日志中隐藏了以下内容:

查看详细的构建信息
  1. 使用您的 Web 浏览器,转到上一步的输出中显示的 deepLink 位置(如 https://console.aws.amazon.com/cloudwatch/home?region=region-ID#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE)。

  2. 在 CloudWatch 日志日志流中,您可以浏览日志事件。默认情况下,只显示最近的一组日志事件。要查看以前的日志事件,请滚动到列表开头。

  3. 在本教程中,大多数日志事件包含的是关于 CodeBuild 下载构建相关文件并将其安装到构建环境中的详细信息,您可能并不关心这些信息。您可以使用筛选事件框来减少显示的信息。例如,如果您在筛选事件中输入 "[INFO]",则仅显示那些包含 [INFO] 的事件。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的筛选条件和模式语法

CloudWatch 日志流的这些部分与本教程有关。

... [Container] 2016/04/15 17:49:42 Entering phase PRE_BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering pre_build phase... [Container] 2016/04/15 17:49:42 Entering pre_build phase... [Container] 2016/04/15 17:49:42 Phase complete: PRE_BUILD Success: true [Container] 2016/04/15 17:49:42 Entering phase BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering build phase... [Container] 2016/04/15 17:49:42 Entering build phase... [Container] 2016/04/15 17:49:42 Running command mvn install [Container] 2016/04/15 17:49:44 [INFO] Scanning for projects... [Container] 2016/04/15 17:49:44 [INFO] [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:44 [INFO] Building Message Utility Java Sample App 1.0 [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ ... [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 T E S T S [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 Running TestMessageUtil [Container] 2016/04/15 17:49:55 Inside testSalutationMessage() [Container] 2016/04/15 17:49:55 Hi!Robert [Container] 2016/04/15 17:49:55 Inside testPrintMessage() [Container] 2016/04/15 17:49:55 Robert [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Results : [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 ... [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] BUILD SUCCESS [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] Total time: 11.845 s [Container] 2016/04/15 17:49:56 [INFO] Finished at: 2016-04-15T17:49:56+00:00 [Container] 2016/04/15 17:49:56 [INFO] Final Memory: 18M/216M [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 Phase complete: BUILD Success: true [Container] 2016/04/15 17:49:56 Entering phase POST_BUILD [Container] 2016/04/15 17:49:56 Running command echo Entering post_build phase... [Container] 2016/04/15 17:49:56 Entering post_build phase... [Container] 2016/04/15 17:49:56 Phase complete: POST_BUILD Success: true [Container] 2016/04/15 17:49:57 Preparing to copy artifacts [Container] 2016/04/15 17:49:57 Assembling file list [Container] 2016/04/15 17:49:57 Expanding target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Found target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Creating zip artifact

在此示例中, CodeBuild 成功完成了预构建、生成和生成后的构建阶段。它运行单元测试并成功构建 messageUtil-1.0.jar 文件。

步骤 9:获取构建输出构件

(上一步:步骤 8:查看详细的构建信息

在此步骤中,您将获得 CodeBuild 生成并上传到输出存储桶的messageUtil-1.0.jar文件。

您可以使用 CodeBuild 控制台或 Amazon S3 控制台来完成此步骤。

获取构建输出工件(Amazon CodeBuild 控制台)
  1. 在 CodeBuild 控制台仍处于打开状态且仍显示上一步中的构建详细信息页面的情况下,选择构建详细信息选项卡,然后向下滚动到 Artifac t s 部分。

    注意

    如果未显示构建详细信息页面,请在导航栏中选择构建历史记录,然后选择构建运行链接。

  2. 指向 Amazon S3 文件夹的链接位于构件上传位置下方。该链接会打开 Amazon S3 文件夹,您可以在这里找到 messageUtil-1.0.jar 构建输出构件文件。

获取构建输出构件(Amazon S3 控制台)
  1. 打开 Amazon S3 控制台,网址为 https://console.aws.amazon.com/s3/

  2. 打开 codebuild-region-ID-account-ID-output-bucket

  3. 打开 codebuild-demo-project 文件夹。

  4. 打开 target 文件夹,您可以在此处找到 messageUtil-1.0.jar 构建输出构件文件。

步骤 10:删除 S3 存储桶

(上一步:步骤 9:获取构建输出构件

为防止持续向您的 Amazon 账户收费,您可以删除本教程中使用的输入和输出存储桶。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的删除或清空存储桶

如果您使用 IAM 用户或管理员 IAM 用户删除这些存储桶,则该用户必须具有更多访问权限。在标记(### BEGIN ADDING STATEMENT HERE ###### END ADDING STATEMENTS HERE ###)之间添加以下语句到用户的现有访问策略。

此语句中的省略号 (...) 旨在力求简洁。请勿删除现有访问策略中的任何语句。请勿在策略中输入这些省略号。

{ "Version": "2012-10-17", "Id": "...", "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" } ### END ADDING STATEMENT HERE ### ] }

总结

在本教程中,您曾经 Amazon CodeBuild 将一组 Java 类文件生成到 JAR 文件中。然后查看了构建的结果。

现在,您可以尝试 CodeBuild 在自己的场景中使用。按照计划构建中的说明进行操作。如果您觉得自己还没准备好,可以尝试构建一些示例。有关更多信息,请参阅 使用基于案例的示例 CodeBuild