本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建构建项目 (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 控制台创建构建项目。
-
在GitHub 授权应用程序页面,在组织访问权限部分,选择申请访问权限在你想要的每个存储库旁边CodeBuild以便能够在. 中访问。
-
选择 Authorize application。(在你连接到你的GitHub帐户,您无需完成构建项目的创建。 你可以关闭CodeBuild控制台。)
-
-
对于GitHub企业服务器,指向包含源代码和 buildspec 文件的存储库的 HTTP 或 HTTPS 克隆 URL。您还必须连接您的Amazon账户到你的GitHub企业服务器帐户。为此,请使用 CodeBuild 控制台创建构建项目。
-
在中创建个人访问令牌GitHub企业服务器。
-
将此令牌复制到您的剪贴板,以便在创建 CodeBuild 项目时使用。有关更多信息,请参阅为命令行创建个人访问令牌
在GitHub帮助网站。 -
当你使用控制台创建你的CodeBuild项目,在来源,对于来源提供商,选择GitHub企业。
-
对于 Personal Access Token,请粘贴已复制到剪贴板中的令牌。选择 Save Token。你的CodeBuild账户现已关联到您的GitHub企业服务器帐户。
-
-
对于 Bitbucket,则为指向包含源代码和构建规范文件的存储库的 HTTPS 克隆 URL。该 URL 必须包含 bitbucket.org。您还必须将您的 Amazon 账户连接到您的 Bitbucket 账户。为此,请使用 CodeBuild 控制台创建构建项目。
-
当您使用控制台与 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 生成项目如何向源提供程序报告生成状态的信息。此选项仅在源类型为时使用
GITHUB
,GITHUB_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提交状态。例如,你可以设置
targetUrl
到https://aws.amazon.com/codebuild/
提交状态将链接到此 URL。<path to build>
你也可以包含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
为了path
和MyArtifact.zip
为了name
,路径和名称将是MyPath/MyArtifact.zip
。 - 文物/命名空间类型
-
仅与
S3
工件类型。不用于其他工件类型。生成输出 ZIP 文件或文件夹的命名空间。有效值包括
BUILD_ID
和NONE
。使用BUILD_ID
将构建 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
为了path
和MyArtifact.zip
为了name
,路径和名称将是MyPath/MyArtifact.zip
。 - 文物/overrideArtifactName
-
仅与 S3 对象类型一起使用。不用于其他工件类型。
可选。如果设置为
true
,中指定的名称artifacts
buildspec 文件块会被覆盖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 中,
。有关更多信息,请参阅CodeBuild 提供的 Docker 映像:account-id
.dkr.ecr.region-id
.amazonaws.com/your-Amazon-ECR-repo-name
:tag
- 环境/计算类型
-
必需。指定此构建环境使用的计算资源。有关更多信息,请参阅计算类型在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包含要为此构建环境指定的环境变量的对象。每个环境变量都表示为一个对象,其中包含
name
,value
,以及type
的name
,value
,以及type
。控制台和Amazon CLI用户可以看到所有环境变量。如果您不担心环境变量的可见性,请设置
name
和value
,然后设置type
到PLAINTEXT
。我们建议您存储具有敏感值的环境变量,例如Amazon访问密钥 ID,一个Amazon秘密访问密钥或密码,作为 Amazon EC2 Systems Manager 参数存储中的参数或Amazon Secrets Manager。对于
name
,为存储的参数设置标识符CodeBuild供参考。如果您使用亚马逊 EC2 系统管理器参数存储,则
value
,将参数的名称设置为存储在参数存储库中。将type
设置为PARAMETER_STORE
。使用名为的参数/CodeBuild/dockerLoginPassword
举个例子,设置name
到LOGIN_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
举个例子,设置name
到LOGIN_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_OUT
的 phaseStatus
值关联的 endTime
值。
queuedTimeoutIn分钟
可选。分钟数,介于 5 到 480(8 小时)之间,之后CodeBuild如果编译仍在排队中,则停止构建。如果未指定,则使用默认值 60。
加密密钥
可选。的别名或 ARNAmazon KMS key由CodeBuild对构建输出进行加密。如果您指定别名,请使用格式 arn:aws:kms:
,或者,如果存在别名,请使用格式 region-ID
:account-ID
:key/key-ID
alias/
。如果未指定,Amazon使用亚马逊 S3 的托管 KMS 密钥。key-alias
标签
可选。一系列的标签提供您要与此构建项目关联的标签的对象。您最多可指定 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)。