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

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

步骤 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 格式的数据。将数据复制到已安装 Amazon 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/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "serviceIAMRole" }

    将 s er viceiamRole 替换为服务角色的亚马逊资源名称 (ARN)( CodeBuild 例如)。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)。

    • 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命令后,可能会输出类似于以下内容的错误消息:用户:Us er-ARN 无权执行:codebuild:。CreateProject这很可能是因为您使用了没有足够权限的用户凭据 CodeBuild 来创建构建项目。Amazon CLI要修复此问题,请使用属于以下任一 IAM 实体的凭证配置 Amazon CLI:

后续步骤

步骤 6:运行构建