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

创建构建项目 (AWS CLI)

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

要使用 创建CodeBuild构建项目AWS CLI,您需要创建 JSON 格式的 Project 结构,填写 结构,然后调用 create-project 命令以创建项目。

创建 JSON 文件

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

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> }, "concurrentBuildLimit": <concurrent-build-limit> }

替换以下内容:

name

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

description

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

source

必填项。一个 ProjectSource 对象,其中包含有关此构建项目的源代码设置的信息。添加 source 对象后,可以使用 secondarySources.添加最多 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,为构建输入存储桶名称,后跟包含源代码和构建规范的 ZIP 文件的路径和名称。例如:

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

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

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

    1. 在 GitHub Authorize application (授权应用程序) 页面上的 Organization access (组织访问权限) 部分中,选择您希望能够在 中访问的每个存储库旁边的 Request accessCodeBuild (请求访问权限)。

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

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

    1. 在 GitHub Enterprise Server 中创建个人访问令牌。

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

    3. 当您使用控制台创建CodeBuild项目时,请在 Source (源) 中为 Source provider 源提供商) 选择 Enterprise (GitHub企业)。

    4. 对于 Personal Access Token (个人访问令牌),粘贴已复制到剪贴板的令牌。选择 Save Token. CodeBuild 您的账户现已连接到您的GitHub企业服务器账户。

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

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

  • 对于 AWS CodePipeline,请不要为 location 指定 source 值。CodePipeline 会忽略此值,因为当您在 CodePipeline 中创建管道时,您会在管道的源阶段指定源代码位置。

源/gitCloneDepth

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

源/构建规范

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

源/身份验证

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

源/reportBuildStatus

指定是否向源提供商发送构建的开始和完成状态。如果您使用 GitHub、GitHub企业服务器或 Bitbucket 以外的源提供商设置此项invalidInputException,则会引发 。

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

源/buildStatusConfig

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

源/buildStatusConfig/上下文

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

例如,您可以使用context环境变量让 CodeBuild 包含构建编号和 Webhook 触发器:

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

这会导致 Webhook 拉取请求事件触发的构建 #24 的上下文如下所示:

AWS CodeBuild sample-project Build #24 - pr/8
source/buildStatusConfig/targetUrl

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

例如,您可以将 设置为 targetUrl https://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-west-2,则这将展开到:

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

可选。有关 Git 子模块配置的信息。仅用于 CodeCommit、、GitHubGitHubEnterprise Server 和 Bitbucket。

source/gitSubmodulesConfig/fetchSubmodules

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

源/InsecureSsl

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

源/sourceIdentifier

项目源的用户定义的标识符。对于主源是可选的。对于辅助源是必需的。

secondarySources

可选。包含有关构建项目的辅助源的信息ProjectSource的对象数组。您最多可以添加 12 个辅助源。这些secondarySources对象使用由 source 对象使用的相同属性。在辅助源对象中, sourceIdentifier 是必需的。

secondarySourceVersions

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

sourceVersion

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

  • 对于 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(在对象级别)。有关更多信息,请参阅使用 AWS CodeBuild 的源版本示例.

artifacts

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

项目/类型

必填项。生成输出项目的类型。有效值为:

  • CODEPIPELINE

  • NO_ARTIFACTS

  • S3

构件/位置

仅与 S3 构件类型一起使用。不用于其他构件类型。

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

构件/路径

仅与 S3 构件类型一起使用。不用于其他构件类型。

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

项目/namespaceType

仅与 S3 构件类型一起使用。不用于其他构件类型。

构建输出 ZIP 文件或文件夹的命名空间。有效值包括 BUILD_IDNONE。 使用 将构建 ID BUILD_ID 插入到构建输出 ZIP 文件或文件夹的路径中。否则,请使用 NONE。 如果您没有为 指定值namespaceType,CodeBuild则 使用 path (如果指定) 和 name 确定构建输出 ZIP 文件或文件夹的路径和名称。例如,如果您MyPath为 、 path BUILD_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,则在构建规范文件的 artifacts 块中指定的名称将覆盖 name。 有关更多信息,请参阅适用于 的构建规范参考CodeBuild

项目/打包

仅与 S3 构件类型一起使用。不用于其他构件类型。

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

NONE

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

ZIP

创建一个包含构建构件的 ZIP 文件。

secondaryArtifacts

可选。一个 ProjectArtifacts 对象数组,其中包含有关构建项目的辅助构件设置的信息。最多可以添加 12 个辅助构件。secondaryArtifacts 使用的许多设置与 artifacts 对象相同。

cache

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

environment

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

环境/类型

必填项。构建环境的类型。有关更多信息,请参阅 https://docs.amazonaws.cn/codebuild/latest/APIReference/API_ProjectEnvironment.html#CodeBuild-Type-ProjectEnvironment-type API 参考中的CodeBuild类型

环境/映像

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

环境/computeType

必填项。指定此构建环境使用的计算资源。有关更多信息,请参阅 computeType API 参考CodeBuild中的 。

环境/证书

可选。包含 PEM 编码证书的Amazon S3存储桶的 ARN、路径前缀和对象键。对象键可以仅为 .pem 文件,也可以为包含 PEM 编码的证书的 .zip 文件。例如,如果您的Amazon S3存储桶名称为 my-bucket,路径前缀为 cert,对象键名称为 certificate.pem,则 的可接受格式certificatemy-bucket/cert/certificate.pemarn:aws:s3:::my-bucket/cert/certificate.pem

环境/environmentVariables

可选。包含要为此构建环境指定的环境变量EnvironmentVariable的对象数组。每个环境变量均表示为一个 对象name,其中包含 value、 和 typenamevaluetype

控制台和AWS CLI用户可以查看所有环境变量。如果您不担心环境变量的可见性,请设置 namevalue并将 type 设置为 PLAINTEXT

我们建议您将具有敏感值(如AWS访问密钥 ID、 AWS 秘密访问密钥或密码)的环境变量作为参数存储在 Amazon EC2 Systems Manager Parameter Store 或 中AWS Secrets Manager。对于 name,对于该存储参数,请设置 标识符CodeBuild以供 引用。

如果您使用 Amazon EC2 Systems Manager Parameter Store,对于 value,请设置 Parameter Store 中存储的参数的名称。将 type 设置为 PARAMETER_STORE。 使用名为 的参数/CodeBuild/dockerLoginPassword作为示例,将 name 设置为 LOGIN_PASSWORD。 将 value 设置为 /CodeBuild/dockerLoginPassword。 将 type 设置为 PARAMETER_STORE

重要

If you use Amazon EC2 Systems Manager Parameter Store, we recommend that you store parameters with parameter names that start with /CodeBuild/ (for example, /CodeBuild/dockerLoginPassword). You can use the CodeBuild console to create a parameter in Amazon EC2 Systems Manager. Choose Create parameter, and then follow the instructions in the dialog box. (In that dialog box, for KMS key, you can specify the ARN of an AWS KMS key in your account. Amazon EC2 Systems Manager uses this key to encrypt the parameter's value during storage and decrypt it during retrieval.) If you use the CodeBuild console to create a parameter, the console starts the parameter name with /CodeBuild/ as it is being stored. For more information, see Systems Manager Parameter Store and Systems Manager Parameter Store Console Walkthrough in the Amazon EC2 Systems Manager User Guide.

If your build project refers to parameters stored in Amazon EC2 Systems Manager Parameter Store, the build project's service role must allow the ssm:GetParameters action. If you chose New service role earlier, CodeBuild includes this action in the default service role for your build project. However, if you chose Existing service role, you must include this action to your service role separately.

If your build project refers to parameters stored in Amazon EC2 Systems Manager Parameter Store with parameter names that do not start with /CodeBuild/, and you chose New service role, you must update that service role to allow access to parameter names that do not start with /CodeBuild/. This is because that service role allows access only to parameter names that start with /CodeBuild/.

If you choose New service role, the service role includes permission to decrypt all parameters under the /CodeBuild/ namespace in the Amazon EC2 Systems Manager Parameter Store.

Environment variables you set replace existing environment variables. For example, if the Docker image already contains an environment variable named MY_VAR with a value of my_value, and you set an environment variable named MY_VAR with a value of other_value, then my_value is replaced by other_value. Similarly, if the Docker image already contains an environment variable named PATH with a value of /usr/local/sbin:/usr/local/bin, and you set an environment variable named PATH with a value of $PATH:/usr/share/ant/bin, then /usr/local/sbin:/usr/local/bin is replaced by the literal value $PATH:/usr/share/ant/bin.

Do not set any environment variable with a name that begins with CODEBUILD_. This prefix is reserved for internal use.

If an environment variable with the same name is defined in multiple places, the value is determined as follows:

  • The value in the start build operation call takes highest precedence.

  • The value in the build project definition takes next precedence.

  • The value in the buildspec declaration takes lowest precedence.

如果您使用 Secrets Manager,则对于 value,请设置存储在 中的参数名称Secrets Manager。将 type 设置为 SECRETS_MANAGER。 使用名为 的密钥/CodeBuild/dockerLoginPassword作为示例,将 name 设置为 LOGIN_PASSWORD。 将 value 设置为 /CodeBuild/dockerLoginPassword。 将 type 设置为 SECRETS_MANAGER

重要

If you use Secrets Manager, we recommend that you store secrets with names that start with /CodeBuild/ (for example, /CodeBuild/dockerLoginPassword). For more information, see What Is AWS Secrets Manager? in the AWS Secrets Manager User Guide.

If your build project refers to secrets stored in Secrets Manager, the build project's service role must allow the secretsmanager:GetSecretValue action. If you chose New service role earlier, CodeBuild includes this action in the default service role for your build project. However, if you chose Existing service role, you must include this action to your service role separately.

If your build project refers to secrets stored in Secrets Manager with secret names that do not start with /CodeBuild/, and you chose New service role, you must update the service role to allow access to secret names that do not start with /CodeBuild/. This is because the service role allows access only to secret names that start with /CodeBuild/.

If you choose New service role, the service role includes permission to decrypt all secrets under the /CodeBuild/ namespace in the Secrets Manager.

环境/registryCredential

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

environment/registryCredential/credential

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

environment/registryCredential/credentialProvider

唯一有效值为 SECRETS_MANAGER.

当设置此属性时:

  • imagePullCredentials 必须设置为 SERVICE_ROLE

  • 映像不能是辅助映像或Amazon ECR映像。

环境/imagePullCredentialsType

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

CODEBUILD

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

SERVICE_ROLE

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

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

环境/privilegedMode

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

注意

By default, Docker containers do not allow access to any devices. Privileged mode grants a build project's Docker container access to all devices. For more information, see Runtime Privilege and Linux Capabilities on the Docker Docs website.

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

serviceRole

必填项。CodeBuild 代表 IAM 用户用来与服务进行交互的服务角色 ARN(例如,arn:aws:iam::account-id:role/role-name).

timeoutInMinutes

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

queuedTimeoutInMinutes

可选。5 到 480 分钟 (8 个小时) 之间的分钟数,在此时间后,如果生成仍在排队,则 CodeBuild 会停止生成。如果未指定,则使用默认值 60。

encryptionKey

可选。AWS KMS 用来加密构建输出的 CodeBuild 客户托管密钥 (CMK) 的别名或 ARN。如果指定别名,请使用 格式arn:aws:kms:region-ID:account-ID:key/key-ID;如果存在别名,请使用 格式alias/key-alias。 如果未指定AWS,则使用适用于 的 Amazon S3托管 CMK。

tags

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

vpcConfig

可选。一个 VpcConfig 对象,其中包含有关 rproject 的 VPC 配置的信息。这些属性包括:

vpcId

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

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

必填项。包含 使用IDs的资源的子网数组CodeBuild。运行此命令以获取这些 IDs:

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

必填项。一组由 IDs 用于CodeBuild允许访问 VPC 中的资源的安全组。运行此命令以获取这些 IDs:

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

badgeEnabled

可选。指定何时在您的CodeBuild项目中包含构建徽章。设置为 true 可启用构建不良,设置为 false otehrwise。有关更多信息,请参阅使用 构建徽章示例CodeBuild.

logsConfig

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

logsConfig/cloudWatchLogs

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

logsConfig/s3Logs

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

fileSystemLocations

可选。包含配置相关信息ProjectFileSystemsLocation的对象数组Amazon EFS。

buildBatchConfig

可选。buildBatchConfig 对象是一个ProjectBuildBatchConfig结构,其中包含项目的批处理构建配置信息。

buildBatchConfig/serviceRole

批量构建项目的服务角色 ARN。

buildBatchConfig/combineArtifacts

一个布尔值,指定是否将批处理构建的构建构件合并到单个构件位置。

buildBatchConfig/限制/maximumBuildsAllowed

允许的最大构建数。

buildBatchConfig/限制/computeTypesAllowed

一个字符串数组,指定批处理构建允许的计算类型。有关这些值,请参阅构建环境计算类型

buildBatchConfig/timeoutInMinutes

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

concurrentBuildLimit

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

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

创建项目

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

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

如果成功,Project 对象的 JSON 表示形式将显示在控制台输出中。有关此数据的示例,请参阅CreateProject响应语法

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

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

如果您的源代码存储在 GitHub 存储库中,并且您希望 在每次代码更改被推送到存储库时CodeBuild重建源代码,请参阅开始自动运行构建 (AWS CLI)