本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
第 2 步:创建 buildspec 文件
(上一步:第 1 步:创建源代码)
在此步骤中,您将创建一个构建规范文件。一个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
因为生成规范声明必须为有效的 YAML,所以生成规范声明中的间隔至关重要。如果生成规范声明中的空格数与此不匹配,则构建可能会立即失败。您可以使用 YAML 验证程序测试生成规范声明是否为效的 YAML。
您可以在创建构建项目时单独声明构建命令,而不是将构建规范文件包含在源代码中。如果您需要使用其他构建命令来构建源代码,而不是每次更新源代码存储库,这个方法很有用。有关更多信息,请参阅构建规范语法。
在此生成规范声明中:
-
version
表示正在使用的生成规范标准的版本。此生成规范声明使用最新版本0.2
。 -
phases
表示您可以指示 CodeBuild 运行命令的构建阶段。这些构建阶段包括install
、pre_build
、build
和post_build
。您无法更改这些生成阶段名称的拼写,也无法创建更多生成阶段名称。在此示例中,在
build
阶段,CodeBuild 运行mvn install
命令。此命令指示 Apache Maven 编译和测试 Java 类文件,然后将编译完的文件打包为构建输出项目。出于完整性考虑,本示例的每个构建阶段中都放了几条echo
命令。您稍后查看本教程中详细的构建信息时,这些信息的输出。echo
命令可以帮助您更好地理解 CodeBuild 如何运行命令以及顺序。(尽管本示例中包含了所有构建阶段,但如果您不打算在某个构建阶段运行任何命令,则无需包含该构建阶段。) 对于每个构建阶段,CodeBuild 将按照列出的顺序,从头到尾运行每个指定命令(一次运行一个命令)。 -
artifacts
表示 CodeBuild 上传到输出存储桶的一组构建输出项目。files
表示要包含在构建输出中的文件。CodeBuild 上传单个messageUtil-1.0.jar
在中找到文件target
构建环境中的相对目录。文件messageUtil-1.0.jar
和目录target
只是根据本示例中 Apache Maven 创建和存储构建输出项目的方式来命名的。在您自己的生成项目中,这些文件和目录名称会有所不同。
有关更多信息,请参见 构建规范参考。
此时,您的目录结构应如下所示。
(root directory name)
|-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java