AWS CodeBuild
用户指南 (API 版本 2016-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

适用于 CodeBuild 的 Amazon Elastic File System 示例

您可能还希望在 Amazon EFS 上创建自己的 AWS CodeBuild 构建。Amazon EFS 是一项用于 Amazon EC2 实例的可扩展的共享文件服务。Amazon EFS 中的存储容量是弹性的,因此会随着文件的添加和删除而增长或收缩。它具有简单的 Web 服务界面,可用于创建和配置文件系统。它还为您管理所有文件存储基础设施,因此您无需担心部署、修补或维护文件系统配置。有关更多信息,请参阅什么是 Amazon Elastic File System

本示例显示了如何配置 CodeBuild 项目,使该项目可挂载 Java 应用程序,然后在 Amazon EFS 文件系统中构建 Java 应用程序。在开始之前,您必须准备好要构建的 Java 应用程序,该应用程序应上传至 Amazon S3 输入存储桶或 AWS CodeCommit、GitHub、GitHub Enterprise 或 Bitbucket 存储库。

Amazon Elastic File System 和 AWS CodeBuild 示例概括步骤

本示例介绍了将 Amazon EFS 与 AWS CodeBuild 一起使用所需的三个概括步骤:

  1. 创建 Amazon VPC。

  2. 创建一个使用此 Amazon VPC 的 Amazon EFS。

  3. 创建并构建使用 Amazon VPC 的 CodeBuild 项目。在构建项目时,包含如何挂载 Amazon Elastic File System 文件系统的说明将输入到构建规范编辑器中。

使用 AWS CloudFormation 创建 Amazon VPC

使用 AWS CloudFormation 模板创建您的 Amazon VPC。

  1. 按照AWS CloudFormation VPC 模板中的说明,使用 AWS CloudFormation 创建一个 Amazon VPC。如果您已熟悉 AWS CloudFormation,可以直接转到 AWS CloudFormation 控制台,以便使用可从 https://s3.amazonaws.com/codebuild-cloudformation-templates-public/vpc_cloudformation_template.yml 下载的模板创建堆栈。有关更多信息,请参阅 AWS CloudFormation 用户指南

    注意

    通过此 AWS CloudFormation 模板创建的 Amazon VPC 具有两个私有子网和两个公有子网。在使用 AWS CodeBuild 挂载 Amazon EFS 时,您只能使用私有子网。如果您使用其中一个公有子网,则构建会失败。

  2. Sign in to the AWS Management Console and open the Amazon VPC console at https://console.amazonaws.cn/vpc/.

  3. 选择您使用 AWS CloudFormation 创建的 Amazon VPC。

  4. 记下在 Summary (摘要) 选项卡上显示的 VPC ID。在本示例的后面部分中创建您的 AWS CodeBuild 项目时,需要此 ID。

使用您的 Amazon VPC 创建 Amazon Elastic File System 文件系统

使用您之前创建的 Amazon VPC 为本示例创建简单的 Amazon EFS 文件系统。

  1. Sign in to the AWS Management Console and open the Amazon EFS console at https://console.amazonaws.cn/efs/.

  2. 选择 Create file system (创建文件系统)

  3. VPC,选择您之前在本示例中记录的 VPC ID。

  4. 让可用区保持与您选定的子网关联。

  5. 选择 Next Step (下一步)

  6. Add tags (添加标签) 中,对于默认的 Name (名称) 键,在 Value (值) 中,输入 Amazon EFS 文件系统的名称。

  7. 保留 General Purpose (通用型)Bursting (突增) 选定为您的默认性能和吞吐量模式,然后选择 Next Step (下一步)

  8. 选择 Create file system (创建文件系统)

  9. 从列表中选择您创建的文件系统的名称。记录 DNS 名称。您可以在用于构建您的 AWS CodeBuild 项目的构建规范文件中输入此名称。

创建 CodeBuild 项目以便与 Amazon EFS 一起使用

创建一个 AWS CodeBuild 项目,该项目使用您之前在本示例中创建的 Amazon VPC。此 CodeBuild 项目不使用源,并且不创建构件。当构建过程运行时,会挂载之前在本示例中创建的 Amazon EFS 文件系统并将 Maven 依赖项缓存到该文件系统。

  1. Open the AWS CodeBuild console at https://console.amazonaws.cn/codesuite/codebuild/home.

  2. 从导航窗格中选择 Build projects (构建项目),然后选择 Create build project (创建构建项目)

  3. Project name (项目名称) 中,输入您的项目的名称。

  4. Source provider (源提供商) 中,选择包含要构建的 Java 应用程序的存储库。

  5. 输入 CodeBuild 用于找到您的应用程序的信息,例如存储库 URL。每个源提供商的选项有所不同。有关更多信息,请参阅选择源提供商

  6. 对于 Environment image (环境映像),选择 Managed image (托管映像)

  7. Operating system (操作系统) 中,选择 Amazon Linux 2

  8. Runtime(s) (运行时) 中,选择 Standard (标准)

  9. Runtime version (运行时版本) 中,选择 aws/codebuild/amazonlinux2-x86_64-standard:1.0

  10. 选择 Privileged (特权)

  11. Service role (服务角色) 下,选择 New service role (新建服务角色)。在 Role name (角色名称) 中,输入 CodeBuild 为您创建的角色的名称。

  12. 对于 Build specification (生成规范),选择 Insert build commands (插入构建命令),然后选择 Switch to editor (切换到编辑器)

  13. 在编辑器中输入以下生成规范命令。对于 EFS_DNS,输入您的文件系统的 DNS 名称。

    version: 0.2 env: variables: EFS_DIR: "/efs" M3_HOME: ".m2" EFS_DNS: "fs-11223344.efs.us-east-1.amazonaws.com" phases: install: runtime-versions: java: openjdk11 commands: - mkdir -p $EFS_DIR - apt-get update && apt-get install -y nfs-common pre_build: commands: - mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 $EFS_DNS:/ $EFS_DIR - df -h - mkdir -p $EFS_DIR/$M3_HOME/ build: commands: - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$EFS_DIR/$M3_HOME/
  14. 展开 Additional configuration (其他配置)

  15. VPC,选择 VPC ID。

  16. Subnets (子网),选择一个或多个与您的 Amazon VPC 关联的私有子网。您必须在挂载 Amazon EFS 文件系统的构建项目中使用私有子网。如果您使用公有子网,则构建会失败。

  17. Security Groups (安全组),选择用于您的 Amazon VPC 的安全组。

  18. 对所有其他设置使用默认值,然后选择 Create build project (创建构建项目)。当您的构建完成后,会向您显示项目的控制台页面。

  19. 选择 Start build

CodeBuild 和 Amazon EFS 示例摘要

在构建您的 AWS CodeBuild 项目后,Java 应用程序会创建一个 .jar 文件。该 .jar 文件会在您的 Amazon EFS 文件系统的名为 /efs/.m2 的目录中生成。CodeBuild 使用 mount 命令 mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 来挂载 Amazon EFS 文件系统。有关更多信息,请参阅挂载文件系统