本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
步骤 5:创建构建项目
(上一步:步骤 4:上传源代码和 buildspec 文件)
在此步骤中,您将创建一个构建项目,Amazon CodeBuild 将使用它来运行构建项目。构建项目包含有关如何运行构建的信息,包括从何处获取源代码、要使用的构建环境、要运行的构建命令以及将构建输出存储在何处。构建环境代表操作系统、编程语言运行时和用于运行构建的 CodeBuild 工具的组合。构建环境以 Docker 映像的形式表示。有关更多信息,请参阅 Docker 文档网站上的 Docker 概述
对于这个构建环境,你需要使用包含 Java 开发套件 (JDK) 和 Apache Maven 版本的 Docker 镜像。 CodeBuild
创建构建项目
-
使用 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::
要创建该文件,请参阅 创建 CodeBuild 服务角色。account-ID
:role/role-name
在此数据中:
-
name
表示此构建项目的必需标识符(在本示例中为codebuild-demo-project
)。构建项目名称在您账户的所有构建项目中必须是唯一的。 -
对于
source
,type
是一个必需值,表示源代码的存储库类型(在本示例中,S3
表示 Amazon S3 存储桶)。 -
对于
source
,location
表示源代码的路径(在本示例中,为输入存储桶名称后跟 ZIP 文件名称)。 -
对于
artifacts
,type
是一个必需值,表示构建输出构件的存储库类型(在本示例中,S3
表示 Amazon S3 存储桶)。 -
对于
artifacts
,location
表示您先前创建或识别的输出存储桶的名称(在本示例中为codebuild-
)。region-ID
-account-ID
-output-bucket -
对于
environment
,type
是表示构建环境类型的必填值(在本例中为LINUX_CONTAINER
)。 -
f
image
oenvironment
r,是必填值,它表示此构建项目使用的 Docker 映像名称和标签组合,由 Docker 镜像存储库类型指定(在本示例中,aws/codebuild/standard:5.0
对于 Docker 镜像存储库中的 Docker 镜像)。 CodeBuildaws/codebuild/standard
是 Docker 镜像的名称。5.0
是 Docker 镜像的标签。要查找您可以在自己方案中使用的更多 Docker 映像,请参阅构建环境参考。
-
F
computeType
orenvironment
,是一个必填值,它表示 CodeBuild 使用的计算资源(在本例中为BUILD_GENERAL1_SMALL
)。
注意
原始 JSON 格式数据中的其他可用值,如
description
、buildspec
、auth
(包括type
和resource
)、path
、namespaceType
、name
(对于artifacts
)、packaging
、environmentVariables
(包括name
和value
)、timeoutInMinutes
、encryptionKey
和tags
(包括key
和value
) 为可选的值。本教程中未使用这些值,因此它们没有在这里显示。有关更多信息,请参阅创建构建项目 (Amazon CLI)。 -
-
切换到您刚才保存的文件所在的目录,然后再次运行 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:
-
Amazon 账户中的管理员用户。有关更多信息,请参阅用户指南中的创建您的第一个 Amazon Web Services 账户 根用户和组。
-
您的 Amazon 账户中的用户,该用户所在的 IAM 组挂载了
AWSCodeBuildAdminAccess
、AmazonS3ReadOnlyAccess
和IAMFullAccess
托管策略。如果您的 账户中没有 Amazon 用户或组具有这些权限,并且您无法将这些权限添加到您的 用户或组,请与 Amazon 账户管理员联系以寻求帮助。有关更多信息,请参阅Amazon 的托管(预定义)策略 Amazon CodeBuild。