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

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

创建构建项目 (Amazon CLI)

有关将 Amazon CLI 与 CodeBuild 结合使用的更多信息,请参阅命令行参考

要创建CodeBuild使用构建项目Amazon CLI,你创建一个 JSON 格式的项目结构,填写结构,然后调用create-project命令来创建项目。

创建 JSON 文件

使用创建骨架 JSON 文件create-project命令,使用--generate-cli-skeleton选项:

aws codebuild create-project --generate-cli-skeleton > <json-file>

这将创建一个 JSON 文件,其路径和文件名由指定<json-file>

填写 JSON 文件

按如下方式修改 JSON 数据并保存结果。

{ "name": "<project-name>", "description": "<description>", "source": { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "buildStatusConfig": { "context": "<context>", "targetUrl": "<target-url>" }, "gitSubmodulesConfig": { "fetchSubmodules": "<fetch-submodules>" }, "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" }, "secondarySources": [ { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" } ], "secondarySourceVersions": [ { "sourceIdentifier": "<secondary-source-identifier>", "sourceVersion": "<secondary-source-version>" } ], "sourceVersion": "<source-version>", "artifacts": { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<artifacts-location>", "path": "<artifacts-path>", "namespaceType": "<artifacts-namespacetype>", "name": "<artifacts-name>", "overrideArtifactName": "<override-artifact-name>", "packaging": "<artifacts-packaging>" }, "secondaryArtifacts": [ { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<secondary-artifact-location>", "path": "<secondary-artifact-path>", "namespaceType": "<secondary-artifact-namespaceType>", "name": "<secondary-artifact-name>", "packaging": "<secondary-artifact-packaging>", "artifactIdentifier": "<secondary-artifact-identifier>" } ], "cache": { "type": "<cache-type>", "location": "<cache-location>", "mode": [ "<cache-mode>" ] }, "environment": { "type": "LINUX_CONTAINER" | "LINUX_GPU_CONTAINER" | "ARM_CONTAINER" | "WINDOWS_SERVER_2019_CONTAINER", "image": "<image>", "computeType": "BUILD_GENERAL1_SMALL" | "BUILD_GENERAL1_MEDIUM" | "BUILD_GENERAL1_LARGE" | "BUILD_GENERAL1_2XLARGE", "certificate": "<certificate>", "environmentVariables": [ { "name": "<environmentVariable-name>", "value": "<environmentVariable-value>", "type": "<environmentVariable-type>" } ], "registryCredential": [ { "credential": "<credential-arn-or-name>", "credentialProvider": "<credential-provider>" } ], "imagePullCredentialsType": "CODEBUILD" | "SERVICE_ROLE", "privilegedMode": "<privileged-mode>" }, "serviceRole": "<service-role>", "timeoutInMinutes": <timeout>, "queuedTimeoutInMinutes": <queued-timeout>, "encryptionKey": "<encryption-key>", "tags": [ { "key": "<tag-key>", "value": "<tag-value>" } ], "vpcConfig": { "securityGroupIds": [ "<security-group-id>" ], "subnets": [ "<subnet-id>" ], "vpcId": "<vpc-id>" }, "badgeEnabled": "<badge-enabled>", "logsConfig": { "cloudWatchLogs": { "status": "<cloudwatch-logs-status>", "groupName": "<group-name>", "streamName": "<stream-name>" }, "s3Logs": { "status": "<s3-logs-status>", "location": "<s3-logs-location>", "encryptionDisabled": "<s3-logs-encryption-disabled>" } }, "fileSystemLocations": [ { "type": "EFS", "location": "<EFS-DNS-name-1>:/<directory-path>", "mountPoint": "<mount-point>", "identifier": "<efs-identifier>", "mountOptions": "<efs-mount-options>" } ], "buildBatchConfig": { "serviceRole": "<batch-service-role>", "combineArtifacts": <combine-artifacts>, "restrictions": { "maximumBuildsAllowed": <max-builds>, "computeTypesAllowed": [ "<compute-type>" ] }, "timeoutInMins": <batch-timeout>, "batchReportMode": "REPORT_AGGREGATED_BATCH" | "REPORT_INDIVIDUAL_BUILDS" }, "concurrentBuildLimit": <concurrent-build-limit> }

替换以下内容:

名称

必需。此构建项目的名称。此名称在您的 Amazon 账户的所有构建项目中必须是唯一的。

description

可选。此构建项目的描述。

source

必需。一个ProjectSource对象,其中包含有关此构建项目的源代码设置的信息。添加 source 对象后,可以使用 次要来源添加最多 12 个源。这些设置包括:

来源/类型

必需。包含要构建的源代码的存储库的类型。有效值包括:

  • CODECOMMIT

  • CODEPIPELINE

  • GITHUB

  • GITHUB_ENTERPRISE

  • BITBUCKET

  • S3

  • NO_SOURCE

如果您使用 NO_SOURCE,则构建规范不能是一个文件,因为项目没有源。相反,您必须使用 buildspec 属性为 buildspec 指定 YAML 格式的字符串。有关更多信息,请参阅无源项目示例

来源/位置

除非您设置,否则为必填项<source-type>CODEPIPELINE。指定存储库类型的源代码的位置。

  • 对于 CodeCommit,则为指向包含源代码和构建规范文件的存储库的 HTTPS 克隆 URL(例如,https://git-codecommit.<region-id>.amazonaws.com/v1/repos/<repo-name>)。

  • 对于 Amazon S3,是构建输入存储桶的名称,后面是包含源代码和 buildspec 的 ZIP 文件的路径和名称。例如:

    • 对于位于输入存储桶根目录的 ZIP 文件:<bucket-name>/<object-name>.zip

    • 对于位于输入存储桶子文件夹中的 ZIP 文件:<bucket-name>/<subfoler-path>/<object-name>.zip

  • 对于GitHub,包含源代码和 buildspec 文件的存储库的 HTTPS 克隆 URL。该 URL 必须包含 github.com。你必须连接你的Amazon账户到你的GitHub账户。为此,请使用 CodeBuild 控制台创建构建项目。

    1. 在GitHub 授权应用程序页面,在组织访问权限部分,选择申请访问权限在你想要的每个存储库旁边CodeBuild以便能够在. 中访问。

    2. 选择 Authorize application。(在你连接到你的GitHub帐户,您无需完成构建项目的创建。 你可以关闭CodeBuild控制台。)

  • 对于GitHub企业服务器,指向包含源代码和 buildspec 文件的存储库的 HTTP 或 HTTPS 克隆 URL。您还必须连接您的Amazon账户到你的GitHub企业服务器帐户。为此,请使用 CodeBuild 控制台创建构建项目。

    1. 在中创建个人访问令牌GitHub企业服务器。

    2. 将此令牌复制到您的剪贴板,以便在创建 CodeBuild 项目时使用。有关更多信息,请参阅为命令行创建个人访问令牌在GitHub帮助网站。

    3. 当你使用控制台创建你的CodeBuild项目,在来源,对于来源提供商,选择GitHub企业

    4. 对于 Personal Access Token,请粘贴已复制到剪贴板中的令牌。选择 Save Token。你的CodeBuild账户现已关联到您的GitHub企业服务器帐户。

  • 对于 Bitbucket,则为指向包含源代码和构建规范文件的存储库的 HTTPS 克隆 URL。该 URL 必须包含 bitbucket.org。您还必须将您的 Amazon 账户连接到您的 Bitbucket 账户。为此,请使用 CodeBuild 控制台创建构建项目。

    1. 当您使用控制台与 Bitbucket 连接 (或重新连接) 时,在 Bitbucket Confirm access to your account (确认对账户的访问) 页面上,选择 Grant access (授予访问权限)。(连接到 Bitbucket 账户后,无需完成构建项目的创建。 你可以关闭CodeBuild控制台。)

  • 对于 Amazon CodePipeline,请勿为 source 指定 location 值。CodePipeline忽略此值,因为当您在中创建管道时CodePipeline,则可以在管道的 “源代码” 阶段指定源代码位置。

来源/gitCloneDepth

可选。要下载的历史记录深度。最小值为 0。如果此值为 0、大于 25 或未提供,则会下载每个构建项目的完整历史记录。如果您的源类型是 Amazon S3,则不支持此值。

来源/构建规范

可选。要使用的构建规范定义或文件。如果此值未提供或设置为空字符串,源代码必须在其根目录中包含 buildspec.yml 文件。如果设置了此值,则它可以是内联 buildspec 定义、相对于主源根目录的备用 buildspec 文件的路径或 S3 存储桶的路径。存储桶必须与构建项目位于同一 Amazon 区域中。使用其 ARN 指定构建规范文件(例如,arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml)。有关更多信息,请参阅构建规范文件名称和存储位置

来源/身份验证

不使用。此对象由CodeBuild仅限控制台。

来源/reportBuildStatus

指定是否向源提供商发送构建的开始和完成状态。如果您使用源提供商以外的源提供商进行此设置GitHub,GitHub企业服务器或 Bitbucket,invalidInputException被扔掉了。

为了能够向源提供者报告构建状态,与源提供者关联的用户必须拥有对存储库的写入权限。如果用户没有写入权限,则无法更新构建状态。有关更多信息,请参阅来源提供商访问权限

来源/buildStatusConfig

包含定义 CodeBuild 生成项目如何向源提供程序报告生成状态的信息。此选项仅在源类型为时使用GITHUBGITHUB_ENTERPRISE,或BITBUCKET

来源/buildStatusConfig/上下文

对于 Bitbucket 来源,此参数用于name参数处于 Bitbucket 提交状态。对于GitHub来源,此参数用于context中的参数GitHub提交状态。

例如,你可以有context包含内部版本号和 webhook 触发器,使用CodeBuild环境变量:

Amazon CodeBuild sample-project Build #$CODEBUILD_BUILD_NUMBER - $CODEBUILD_WEBHOOK_TRIGGER

这会导致由 webhook 拉取请求事件触发的 build #24 的上下文如下所示:

Amazon CodeBuild sample-project Build #24 - pr/8
来源/buildStatusConfig/targetURL

对于 Bitbucket 来源,此参数用于url参数处于 Bitbucket 提交状态。对于GitHub来源,此参数用于target_url中的参数GitHub提交状态。

例如,你可以设置targetUrlhttps://aws.amazon.com/codebuild/<path to build>提交状态将链接到此 URL。

你也可以包含CodeBuild中的环境变量targetUrl向 URL 添加其他信息。例如,要在 URL 中添加构建区域,请设置targetUrl到:

"targetUrl": "https://aws.amazon.com/codebuild/<path to build>?region=$AWS_REGION"

如果构建区域是us-east-2,这将扩展到:

https://aws.amazon.com/codebuild/<path to build>?region=us-east-2
来源/gitSubmodulesConfig

可选。有关 Git 子模块配置的信息。搭配使用CodeCommit,GitHub,GitHub企业服务器,仅限 Bitbucket。

来源/gitSubmodulesConfig/获取子模块

如果您希望在存储库中包含 Git 子模块,请将 fetchSubmodules 设置为 true。包含的 Git 子模块必须配置为 HTTPS。

来源/InsecureSsl

可选。搭配使用GitHub仅限企业服务器。将此值设置为true在连接到您的服务器时忽略 TLS 警告GitHub企业服务器项目存储库。默认值为 false。只应将 InsecureSsl 用于测试目的。它不应在生产环境中使用。

来源/源标识符

项目源的用户定义标识符。对于主源来说是可选的。次要来源是必需的。

次要来源

可选。一系列的ProjectSource包含有关构建项目辅助源信息的对象。您最多可以添加 12 个辅助来源。的secondarySources对象使用的属性与使用的属性相同source对象。在辅助源对象中,sourceIdentifier是必填的。

secondarySourceVersions

可选。ProjectSourceVersion 对象数组。如果在构建级别指定 secondarySourceVersions,则它们优先于此对象。

源版本

可选。要为此项目构建的编译输入的版本。如果未指定,则使用最新版本。如果已指定,则它必须是下列项之一:

  • 对于CodeCommit,要使用的提交 ID、分支或 Git 标签。

  • 对于GitHub、与您要构建的源代码版本相对应的提交 ID、拉取请求 ID、分支名称或标签名称。如果指定了拉取请求 ID,则它必须使用格式 pr/pull-request-ID(例如,pr/25)。如果指定了分支名称,则将使用分支的 HEAD 提交 ID。如果未指定,则使用默认分支的 HEAD 提交 ID。

  • 对于 Bitbucket,指定提交 ID、分支名称或与您要构建的源代码版本相对应的标签名称。如果指定了分支名称,则将使用分支的 HEAD 提交 ID。如果未指定,则使用默认分支的 HEAD 提交 ID。

  • 对于 Amazon S3,为表示要使用的构建输入 ZIP 文件的对象的版本 ID。

如果在构建级别指定 sourceVersion,则该版本将优先于此 sourceVersion(在对象级别)。有关更多信息,请参阅使用 Amazon CodeBuild 的源版本示例

人工制品

必需。一个ProjectArtifacts对象,其中包含有关此构建项目的输出构件设置的信息。添加 artifacts 对象后,可以使用 次要工件添加最多 12 个构件。这些设置包括:

文物/类型

必需。生成输出构件的类型。有效值为:

  • CODEPIPELINE

  • NO_ARTIFACTS

  • S3

文物/位置

仅与S3工件类型。不用于其他工件类型。

您在先决条件中创建或标识的输出存储桶的名称。

文物/路径

仅与S3工件类型。不用于其他工件类型。

放置 ZIP 文件或文件夹的输出存储桶中的路径。如果您没有为指定值path,CodeBuild使用namespaceType(如果已指定)和name以确定生成输出 ZIP 文件或文件夹的路径和名称。例如,如果您指定MyPath为了pathMyArtifact.zip为了name,路径和名称将是MyPath/MyArtifact.zip

文物/命名空间类型

仅与S3工件类型。不用于其他工件类型。

生成输出 ZIP 文件或文件夹的命名空间。有效值包括 BUILD_IDNONE。使用 BUILD_ID 将构建 ID 插入到构建输出 ZIP 文件或文件夹的路径中。否则,请使用 NONE。如果您没有为指定值namespaceType,CodeBuild使用path(如果已指定)和name以确定生成输出 ZIP 文件或文件夹的路径和名称。例如,如果您指定MyPath为了pathBUILD_ID为了namespaceType,以及MyArtifact.zip为了name,路径和名称将是MyPath/build-ID/MyArtifact.zip

artifacts/name

仅与S3工件类型。不用于其他工件类型。

生成输出 ZIP 文件或其中的文件夹的名称location。例如,如果您指定MyPath为了pathMyArtifact.zip为了name,路径和名称将是MyPath/MyArtifact.zip

文物/overrideArtifactName

仅与 S3 对象类型一起使用。不用于其他工件类型。

可选。如果设置为true,中指定的名称artifactsbuildspec 文件块会被覆盖name。有关更多信息,请参阅适用于 CodeBuild 的构建规范参考

文物/包装材料

仅与S3工件类型。不用于其他工件类型。

可选。指定如何打包工件。允许的值包括:

NONE

创建包含构建工件的文件夹。这是默认值。

ZIP

创建包含构建工件的 ZIP 文件。

次要工件

可选。一系列的ProjectArtifacts包含有关构建项目的次要构件设置信息的对象。最多可以添加 12 个辅助构件。secondaryArtifacts 使用的许多设置与 人工制品 对象相同。

缓存

必需。一个ProjectCache对象,其中包含有关此构建项目的缓存设置的信息。有关更多信息,请参阅构建缓存

环境

必需。一个ProjectEnvironment对象,其中包含有关此项目的构建环境设置的信息。这些设置包括:

环境/类型

必需。构建环境的类型。有关更多信息,请参阅类型CodeBuildAPI 参考

环境/图像

必需。此构建环境使用的 Docker 映像标识符。通常,此标识符以 image-name:tag 的形式表示。例如,在 CodeBuild 用来管理其 Docker 映像的 Docker 存储库中,这可能是 aws/codebuild/standard:5.0。在 Docker Hub 中,为 maven:3.3.9-jdk-8。在亚马逊 ECR 中,account-id.dkr.ecr.region-id.amazonaws.com/your-Amazon-ECR-repo-name:tag。有关更多信息,请参阅CodeBuild 提供的 Docker 映像

环境/计算类型

必需。指定此构建环境使用的计算资源。有关更多信息,请参阅计算类型CodeBuildAPI 参考

环境/证书

可选。包含 PEM 编码证书的 Amazon S3 存储桶的 ARN、路径前缀和对象密钥。对象键可以仅为 .pem 文件,也可以为包含 PEM 编码的证书的 .zip 文件。例如,如果您的 Amazon S3 存储桶名称是<my-bucket>,你的路径前缀是<cert>,而你的对象密钥名称是<certificate.pem>,然后是可接受的格式certificate<my-bucket/cert/certificate.pem>要么arn:aws:s3:::<my-bucket/cert/certificate.pem>

环境/环境变量

可选。一系列的EnvironmentVariable包含要为此构建环境指定的环境变量的对象。每个环境变量都表示为一个对象,其中包含namevalue,以及typenamevalue,以及type

控制台和Amazon CLI用户可以看到所有环境变量。如果您不担心环境变量的可见性,请设置namevalue,然后设置typePLAINTEXT

我们建议您存储具有敏感值的环境变量,例如Amazon访问密钥 ID,一个Amazon秘密访问密钥或密码,作为 Amazon EC2 Systems Manager 参数存储中的参数或Amazon Secrets Manager。对于name,为存储的参数设置标识符CodeBuild供参考。

如果您使用亚马逊 EC2 系统管理器参数存储,则value,将参数的名称设置为存储在参数存储库中。将 type 设置为 PARAMETER_STORE。使用名为的参数/CodeBuild/dockerLoginPassword举个例子,设置nameLOGIN_PASSWORD。将 value 设置为 /CodeBuild/dockerLoginPassword。将 type 设置为 PARAMETER_STORE

重要

如果您使用 Amazon EC2 Systems Manager Parameter Store,我们建议您存储参数名称以开头的参数/CodeBuild/(例如,/CodeBuild/dockerLoginPassword)。你可以使用CodeBuild控制台用于在 Amazon EC2 系统管理器中创建参数。选择 Create parameter (创建参数),然后按照对话框中的说明操作。(在该对话框中,对于KMS 密钥,你可以指定的 ARNAmazon KMS输入您的账户。 Amazon EC2 Systems Manager 使用此密钥在存储期间加密参数的值,并在检索期间对其进行解密。) 如果您使用 CodeBuild 控制台创建了一个参数,控制台将在参数名称被存储时以 /CodeBuild/ 作为它的开头。有关更多信息,请参阅系统管理器参数存储系统管理器参数存储控制台演练亚马逊 EC2 系统管理器用户指南

如果您的构建项目引用存储在 Amazon EC2 Systems Manager Parameter Store 中的参数,则构建项目的服务角色必须允许ssm:GetParameters行动。如果您之前选择了 New service role (新建服务角色),CodeBuild 将在您的构建项目的默认服务角色中包含此操作。但是,如果您选择了 Existing service role (现有服务角色),必须单独将此操作添加到您的服务角色中。

如果您的构建项目引用存储在 Amazon EC2 Systems Manager Parameter Store 中的参数,且参数名称不是以开头的/CodeBuild/,然后你选择了新的服务角色,则必须更新该服务角色才能允许访问不以开头的参数名称/CodeBuild/。这是因为该服务角色仅允许访问以 /CodeBuild/ 开头的参数名称。

如果你选择新的服务角色,服务角色包括解密以下所有参数的权限/CodeBuild/亚马逊 EC2 系统管理器参数存储中的命名空间。

您设置的环境变量将替换现有的环境变量。例如,如果 Docker 映像已经包含一个名为 MY_VAR 的环境变量 (值为 my_value),并且您设置了一个名为 MY_VAR 的环境变量 (值为 other_value),那么 my_value 将被替换为 other_value。同样,如果 Docker 映像已经包含一个名为 PATH 的环境变量 (值为 /usr/local/sbin:/usr/local/bin),并且您设置了一个名为 PATH 的环境变量 (值为 $PATH:/usr/share/ant/bin),那么/usr/local/sbin:/usr/local/bin 将被替换为文本值 $PATH:/usr/share/ant/bin

请勿使用以 CODEBUILD_ 打头的名称设置任何环境变量。此前缀是专为 内部使用预留的。

如果具有相同名称的环境变量在多处都有定义,则应按照如下方式确定其值:

  • 构建操作调用开始时的值优先级最高。

  • 构建项目定义中的值优先级次之。

  • 构建规范声明中的值优先级最低。

如果你使用 Secrets Manager,对于value,将参数的名称设置为存储在 Secrets Manager 中。将 type 设置为 SECRETS_MANAGER。使用名为的密钥/CodeBuild/dockerLoginPassword举个例子,设置nameLOGIN_PASSWORD。将 value 设置为 /CodeBuild/dockerLoginPassword。将 type 设置为 SECRETS_MANAGER

重要

如果您使用 Secrets Manager,我们建议您存储名称以开头的密钥/CodeBuild/(例如,/CodeBuild/dockerLoginPassword)。有关更多信息,请参阅什么是Amazon Secrets Manager?Amazon Secrets Manager用户指南

如果您的构建项目引用存储在 Secrets Manager 中的密钥,则构建项目的服务角色必须允许secretsmanager:GetSecretValue行动。如果您之前选择了 New service role (新建服务角色),CodeBuild 将在您的构建项目的默认服务角色中包含此操作。但是,如果您选择了 Existing service role (现有服务角色),必须单独将此操作添加到您的服务角色中。

如果您的构建项目引用存储在 Secrets Manager 中的密钥,且密钥名称不是以开头的/CodeBuild/,然后你选择了新的服务角色,则必须更新服务角色以允许访问不以开头的机密名称/CodeBuild/。这是因为服务角色仅允许访问以开头的机密名称/CodeBuild/

如果你选择新的服务角色,服务角色包括解密以下所有机密的权限/CodeBuild/密钥管理器中的命名空间。

环境/注册表凭证

可选。一个RegistryCredential对象,它指定提供私有 Docker 注册表访问权限的凭据。

环境/注册表凭证/资格认证

指定使用创建的 ARN 或凭证名称Amazon Managed Services。仅当凭证存在于您当前的区域中时,您才能使用凭证的名称。

环境/注册表凭证/凭证提供商

唯一有效值为 SECRETS_MANAGER

当设置此属性时:

  • imagePullCredentials 必须设置为 SERVICE_ROLE

  • 图片不能是精选图片或亚马逊 ECR 图片。

环境/imagePullCredentials类型

可选。CodeBuild 用于在您的生成中拉取映像的凭证的类型。有两个有效值:

代码构建

CODEBUILD 指定 CodeBuild 使用其自己的凭证。您必须编辑您的 Amazon ECR 存储库策略才能信任CodeBuild服务负责人。

服务角色

指定CodeBuild使用您的构建项目的服务角色。

当您使用跨账户或专用镜像仓库镜像时,必须使用 SERVICE_ROLE 凭证。当您使用 CodeBuild 精选镜像时,必须使用 CODEBUILD 凭证。

环境/特权模式

设置为true前提是你打算使用这个构建项目来构建 Docker 镜像。否则,尝试与 Docker 守护程序交互的所有关联的构建都将失败。您还必须启动 Docker 守护程序,以便您的构建与其交互。执行此操作的一种方法是通过运行以下构建命令在您的构建规范文件的 install 阶段初始化 Docker 守护程序。如果您指定了由具有 Docker 支持的 CodeBuild 提供的构建环境映像,请不要运行这些命令。

注意

默认情况下,Docker 容器不允许访问任何设备。特权模式将授予构建项目的 Docker 容器访问所有设备的权限。有关更多信息,请参阅 Docker 文档网站上的运行时权限和 Linux 功能。此外,Windows 不支持特权模式。

- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"

serviceRole

必需。服务角色的 ARNCodeBuild用于代表用户与服务进行交互(例如,arn:aws:iam::account-id:role/role-name)。

timeoutInMinutes

可选。5 到 480 分钟 (8 个小时) 之间的一个分钟数,在此时间后,如果构建未完成,CodeBuild 会将其停止。如果未指定,则使用默认值 60。要确定 CodeBuild 是否以及何时因超时而停止生成,请运行 batch-get-builds 命令。要确定构建是否已停止,请在输出中查看 buildStatus 的值是否为 FAILED。要确定构建何时超时,请在输出中查看与 TIMED_OUTphaseStatus 值关联的 endTime 值。

queuedTimeoutIn分钟

可选。分钟数,介于 5 到 480(8 小时)之间,之后CodeBuild如果编译仍在排队中,则停止构建。如果未指定,则使用默认值 60。

加密密钥

可选。的别名或 ARNAmazon KMS key由CodeBuild对构建输出进行加密。如果您指定别名,请使用格式 arn:aws:kms:region-ID:account-ID:key/key-ID,或者,如果存在别名,请使用格式 alias/key-alias。如果未指定,Amazon使用亚马逊 S3 的托管 KMS 密钥。

标签

可选。一系列的标签提供您要与此构建项目关联的标签的对象。您最多可指定 50 个标签。这些标签可由支持 CodeBuild生成项目标签的任何 Amazon 服务使用。每个标签都表示为一个带有key还有value

VPCConfig

可选。一个VpcConfig对象,其中包含有关您的项目 VPC 配置的信息。有关更多信息,请参阅使用Amazon CodeBuild使用亚马逊虚拟私有云

这些属性包括:

vpcId

必需。CodeBuild 使用的 VPC ID。运行此命令获取您的区域中的所有 VPC ID 的列表:

aws ec2 describe-vpcs --region <region-ID>
子网

必需。子网 ID 数组,包括使用的资源CodeBuild。运行以下命令获取这些 ID:

aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region <region-ID>
securityGroupIds

必需。使用的一组安全组 IDCodeBuild以允许访问 VPC 中的资源。运行以下命令获取这些 ID:

aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --<region-ID>

已启用徽章

可选。指定是否在你的 build 徽章中包含构建徽章CodeBuild项目。设置为true启用构建徽章,或false否则。有关更多信息,请参阅使用 CodeBuild 构建徽章示例

日志配置

一个LogsConfig对象,其中包含有关此版本日志所在位置的信息。

logsConfig/cloudWatchLogs

一个CloudWatchLogsConfig对象,其中包含有关将日志推送到的信息CloudWatch日志。

logsConfig/s3Logs

一个S3LogsConfig对象,其中包含有关将日志推送到 Amazon S3 的信息。

fileSystemLocations

可选。一系列的ProjectFileSystemsLocation包含有关您的 Amazon EFS 配置信息的对象。

buildBatchConfig

可选。的buildBatchConfig对象是一个ProjectBuildBatchConfig包含项目的批量生成配置信息的结构。

buildBatchConfig/服务角色

批量生成项目的服务角色 ARN。

buildBatchConfig/组合神器

一个布尔值,用于指定是否将批量构建的生成工件合并到单个构件位置。

buildBatchConfig/限制/maximumBuildsAllowed

允许的最大生成次数。

buildBatchConfig/限制/computeTypesAllowed

指定批量构建允许的计算类型的字符串数组。见构建环境计算类型对于这些值。

buildBatchConfig/timeoutInMinutes

必须完成批处理生成的最长时间(以分钟为单位)。

buildBatchConfig/batchReportMode

指定如何将构建状态报告发送到源提供程序以进行批量生成。有效值包括:

REPORT_AGGREGATED_BATCH

(默认)将所有构建状态聚合到单个状态报告中。

REPORT_INDIVIDUAL_BUILDS

为每个单独的构建发送单独的状态报告。

concurrentBuildLimit

此项目允许的并发构建的最大数量。

仅当当前构建数量小于或等于此限值时,才会启动新构建。如果当前构建计数达到此限值,则新构建将受到限制且不会运行。

创建项目

要创建项目,请运行create-project再次使用命令,传递你的 JSON 文件:

aws codebuild create-project --cli-input-json file://<json-file>

如果成功,则使用的 JSON 表示形式项目对象出现在控制台输出中。请参阅CreateProject响应语法以查看此数据的示例。

您稍后可以更改构建项目的任何设置,但构建项目名称除外。有关更多信息,请参阅更改构建项目的设置 (Amazon CLI)

要开始运行构建,请参阅 运行构建 (Amazon CLI)

如果您的源代码存储在GitHub存储库,你想要CodeBuild要在每次将代码更改推送到存储库时重新生成源代码,请参阅开始自动运行构建 (Amazon CLI)