步骤 5: 创建构建项目 - AWS CodeBuild
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

步骤 5: 创建构建项目

(上一步:步骤 4: 上传源代码和构建规范文件

在此步骤中,您将创建 AWS CodeBuild 用于运行构建的构建项目。A build project includes information about how to run a build, including where to get the source code, which build environment to use, which build commands to run, and where to store the build output. A build environment represents a combination of operating system, programming language runtime, and tools that CodeBuild uses to run a build.构建环境以 Docker 映像的形式表示。有关更多信息,请参阅 Docker 文档网站上的 Docker 概述

对于此生成环境,您需要指示 CodeBuild 使用包含 Java 开发工具包 (JDK) 和 Apache Maven 的 Docker 映像。

创建构建项目

  1. 使用 AWS CLI 运行 create-project 命令:

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

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

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

    { "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/amazonlinux2-x86_64-standard:3.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "serviceIAMRole" }

    Replace serviceIAMRole 替换为 CodeBuild 服务角色的 Amazon 资源名称 (ARN)(例如,arn:aws:iam::account-ID:role/role-name)。如需创建一个角色,请参阅创建 CodeBuild 服务角色

    在此数据中:

    • 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 是目前唯一允许的值)。

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

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

    • 对于 environmentcomputeType 是一个必需值,表示 CodeBuild 将会使用的计算资源(在本示例中为 BUILD_GENERAL1_SMALL)。

    注意

    原始 JSON 格式的数据中的其他可用值(如 descriptionbuildspecauth(包括 typeresource)、pathnamespaceTypename(对于 artifacts)、packagingenvironmentVariables(包括 namevalue)、timeoutInMinutesencryptionKeytags(包括 keyvalue)是可选的。本教程中未使用这些值,因此它们没有在这里显示。有关更多信息,请参阅创建构建项目 (AWS 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:4.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 用于加密生成输出项目的 AWS KMS 客户主密钥 (CMK) 的 ARN。

      • arn 表示构建项目的 ARN。

注意

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

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

  • 您的 IAM 账户中的 AWS 用户,该 IAM 用户或 IAM 用户所在的 IAM 组挂载了 AWSCodeBuildAdminAccessAmazonS3ReadOnlyAccessIAMFullAccess 托管策略。如果您的 AWS 账户中没有 IAM 用户或组具有这些权限,并且您无法将这些权限添加到您的 IAM 用户或组,请与 AWS 账户管理员联系以寻求帮助。有关更多信息,请参阅适用于 AWS CodeBuild 的 AWS 托管(预定义)策略

下一步

步骤 6: 运行构建