建立建置專案 (AWS CLI) - AWS CodeBuild

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立建置專案 (AWS CLI)

如需搭配使用 AWS CLI 與 CodeBuild 的詳細資訊,請參閱命令列參考

建立CodeBuild建立專案,使用AWS CLI,您可以建立 JSON 格式化專案結構,填寫結構,然後調用create-project命令來建立專案。

建立 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> }

取代下列項目:

name

必要。此建置專案的名稱。此名稱在您 AWS 帳戶的所有建置專案中必須是唯一的。

description

選用。此建置專案的描述。

source

必要。一個ProjectSource包含有關此建置專案來源碼設定資訊的物件。在您新增 source 物件之後,即可使用 secondarySources新增最多 12 個以上的來源。這些設定包含下列項目:

來源/類型

必要。包含要建置之來源碼的儲存庫類型。有效值包含:

  • CODECOMMIT

  • CODEPIPELINE

  • GITHUB

  • GITHUB_ENTERPRISE

  • BITBUCKET

  • S3

  • NO_SOURCE

若您使用 NO_SOURCE,則 Buildspec 不能是檔案,因為專案沒有任何來源。反之,您必須使用 buildspec 屬性來為您的 buildspec 指定 YAML 格式字串。如需詳細資訊,請參閱 無來源的專案範例

來源/地點

必填項,除非您設置<source-type>CODEPIPELINE。所指定儲存庫類型的來源碼位置。

  • 針對 CodeCommit,HTTPS 會將 URL 複製到包含來源碼和 buildspec 檔案的儲存庫 (例如,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針對,HTTPS 會將 URL 複製到包含來源碼和 Buildspec 檔案的儲存庫。URL 必須包含 github.com。您必須連接AWS帳户添加至您的GitHub帳户。若要執行此作業,請使用 CodeBuild 主控台來建立建置專案。

    1. 在GitHub 授權申請頁面的組織訪問部分中,選擇請求存取在您想要的每個存儲庫旁邊CodeBuild,以便能夠在中訪問。

    2. 選擇 Authorize application (授權應用程式)。(在您連接到GitHub帳户,則無需完成建置專案的建立。 您可以關閉CodeBuild主控台。)

  • 適用於GitHub企業級服務器,HTTP 或 HTTPS 會將 URL 複製到包含來源碼和 Buildspec 檔案的儲存庫。您也必須連線AWS帳户添加至您的GitHubEnterprise Server 帳户。若要執行此作業,請使用 CodeBuild 主控台來建立建置專案。

    1. 建立個人存取字符GitHubEnterprise Server。

    2. 將此字符複製至剪貼簿,以在建立 CodeBuild 專案時使用它。如需詳細資訊,請參閱「」建立命令行的個人存取字符在GitHub幫助網站。

    3. 如果您使用控制台來建立您的CodeBuild專案來源, 用於來源供應商,選擇GitHub企業

    4. 針對 Personal Access Token (個人存取字符),貼上已複製至剪貼簿的字符。選擇 Save Token (儲存字符)。您的CodeBuild帳户現在已連線至GitHubEnterprise Server 帳户。

  • 針對 Bitbucket,HTTPS 會將 URL 複製到包含來源碼和 buildspec 檔案的儲存庫。URL 必須包含 bitbucket.org。您也必須將 AWS 帳戶連線至 Bitbucket 帳戶。若要執行此作業,請使用 CodeBuild 主控台來建立建置專案。

    1. 當您使用主控台連線 (或重新連線) Bitbucket 時,請在 Bitbucket 的 Confirm access to your account (確認帳戶存取) 頁面上,選擇 Grant access (授予存取權)。(在您已連線至 Bitbucket 帳戶之後,就不需要完成建置專案的建立。 您可以關閉CodeBuild主控台。)

  • 針對 AWS CodePipeline,請不要指定 sourcelocation 值。CodePipeline會忽略此值,因為當您在CodePipeline,可以在管道的 Source 階段中指定來源碼位置。

來源/gitCloneDepth

選用。要下載的歷史記錄深度。最小值為 0。如果此值為 0、大於 25 或未提供,則會下載每個建置專案的完整歷史記錄。如果您的來源類型是 Amazon S3,則不支援此值。

來源/BuildSpec

選用。要使用的組建規格定義或檔案。如果此值未提供,或設定為空字串,則來源碼必須包含其根目錄中的 buildspec.yml 檔案。如果已設定此值,它可以是內嵌 buildspec 定義,或相對於您主要來源根目錄的替代 buildspec 檔案路徑,或 S3 儲存貯體的路徑。儲存貯體必須位於與建置專案相同的 AWS 區域。使用其 ARN 指定 buildspec 檔案 (例如,arn:aws:s3:::my-codebuild-sample2/buildspec.yml)。如需詳細資訊,請參閱 Buildspec 檔案名稱和儲存位置

來源/auth

請勿使用。此對象由CodeBuild僅限主控台。

來源/reportBuildStatus

指定是否將建置的啟動和完成狀態傳送給來源提供者。如果您搭配來源供應商設定此項,而不是GitHub、GitHub企業服務器或位存儲桶,invalidInputException被拋出。

為了能夠向源提供程序報告構建狀態,與源提供程序關聯的用户必須具有對該回購的寫入訪問權限。如果用户沒有寫入訪問權限,則無法更新構建狀態。如需詳細資訊,請參閱 來源供應商存取

來源/buildStatusConfig

包含定義CodeBuild建置專案會向來源供應商報告建置狀態。只有在來源類型為GITHUBGITHUB_ENTERPRISE, 或BITBUCKET

來源/buildStatusConfig/上下文

針對 Bitbucket 來源,此參數用於name參數放在 Bitbucket 認可狀態中。適用於GitHub源,則此參數用於context參數GitHub遞交狀態。

例如,您可以將context包含內部版本號和 webhook 觸發器,使用CodeBuild環境變數:

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

這會導致針對 Webhook 提取請求事件觸發的建置 #24,上下文如下所示:

AWS CodeBuild sample-project Build #24 - pr/8
來源/buildStatusConfig/TargetUl

針對 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/Fetch子模塊

如果您想要將 Git 子模組包含在您的儲存庫中,請將 fetchSubmodules 設定為 true。包含的 Git 子模組必須設定為 HTTPS。

來源/InsecureSsl

選用。與使用GitHub僅限於 Enterprise Server。將此值設定為true忽略 TLS 警告,同時連線至GitHub企業服務器項目存儲庫。預設值為 falseInsecureSsl 應僅用於測試目的。不應用於生產環境。

來源/來源標識符

專案來源的用户定義識別符;主要來源可選。輔助來源是必需的。

secondarySources

選用。陣列ProjectSource包含有關建置專案輔助資料資訊的物件。您可以新增最多 12 個輔助來源。所以此secondarySources物件使用的屬性與source物件。在輔助源對象中,sourceIdentifier是必要的。

secondarySourceVersions

選用。陣列ProjectSource版本物件。如果在組建層級指定 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:物件的版本 ID,代表要使用的建置輸入 ZIP 檔案。

如果在組建層級指定 sourceVersion,則該版本的優先順序會高於此 sourceVersion (在專案層級)。如需詳細資訊,請參閱 AWS CodeBuild 的來源版本範例

工藝品

必要。一個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。使用 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中指定的名稱,該名稱在artifacts建置規範檔案塊覆蓋name。如需詳細資訊,請參閱 CodeBuild 的建置規格參考

藝品/打包

僅與S3成品類型。不用於其他對象類型。

選用。指定如何打包對象。允許的值為:

NONE

建立包含建置成品的資料夾。這是預設值。

ZIP

建立包含建置成品的 ZIP 檔案。

secondaryArtifacts

選用。陣列ProjectArtifacts對象,其中包含有關構建項目的輔助工件設置的信息。您可以新增最多 12 個次要成品。secondaryArtifacts 使用 工藝品 物件所使用的許多相同設定。

快取

必要。一個ProjectCache包含有關此建置專案緩存設定資訊的物件。如需詳細資訊,請參閱 建立快取

environment

必要。一個ProjectEnvironment包含有關此專案建置環境設定資訊的物件。這些設定包括:

環境/類型

必要。建置環境類型。如需詳細資訊,請參閱「」類型中的CodeBuildAPI 參考

環境/影像

必要。此建置環境所使用的 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。如需詳細資訊,請參閱 CodeBuild 提供的 Docker 映像

環境/computeType

必要。指定此構建環境使用的計算資源。如需詳細資訊,請參閱「」computeType中的CodeBuildAPI 參考

環境/證書

選用。Amazon S3 儲存貯體的 ARN、路徑前綴和包含 PEM 編碼憑證的物件金鑰。物件金鑰可以是包含 PEM 編碼憑證的 .pem 檔案或 .zip 檔案。例如,如果您的 Amazon S3 儲存貯體名稱為my-bucket,您的路徑前綴是cert,並且您的對象鍵名稱為certificate.pem,則可接受的格式certificatemy-bucket/cert/certificate.pem或者arn:aws:s3:::my-bucket/cert/certificate.pem

環境/環境變數

選用。陣列EnvironmentVariable物件,其中包含您想要為此建置環境指定的環境變數。每個環境變數都表示為包含namevalue,和typenamevalue,和type

主控台和AWS CLI用户可查看所有環境變數。如果您不在意環境變數的可見性,請設定namevalue,並設置typePLAINTEXT

我們建議您存儲具有敏感值的環境變量,例如AWS存取金鑰 ID,AWS私有訪問密鑰或密碼,作為 Amazon EC2 Systems Manager 參數存放區或AWS Secrets Manager。適用於name針對該存放參數,設定CodeBuild的參考。

如果您使用 Amazon EC2 Systems Manager 參數存放區,針對value,設定參數存放區中所存放的參數名稱。將 type 設為 PARAMETER_STORE。使用名為/CodeBuild/dockerLoginPassword作為例子,設定nameLOGIN_PASSWORD。將 value 設為 /CodeBuild/dockerLoginPassword。將 type 設為 PARAMETER_STORE

重要

如果您使用 Amazon EC2 Systems Manager 參數存放區,我們建議您儲存參數名稱開頭為/CodeBuild/(例如,/CodeBuild/dockerLoginPassword。您可以使用CodeBuild控制台,在 Amazon EC2 Systems Manager 中建立參數。選擇 Create parameter (建立參數),然後遵循對話方塊中的說明。(在該對話框中,對於KMS 金鑰,您可 ARN 指定AWS KMS鍵在您的帳户中。 Amazon EC2 Systems Manager 使用此金鑰,以在存放期間的儲存和解密期間加密參數值)。如果您使用 CodeBuild 主控台建立參數,則主控台會使用存放的 /CodeBuild/ 來啟動參數名稱。如需詳細資訊,請參閱「」Systems Manager 參數存放區Systems Manager 參數存放區控制台演練中的Amazon EC2 Systems Manager 用户指南

如果您的建置專案是指 Amazon EC2 Systems Manager 參數存放區中所存放的參數,則建置專案的服務角色必須允許ssm:GetParameters動作。如果您稍早選擇 New service role (新服務角色),則 CodeBuild 會將此動作包含在您建置專案的預設服務角色中。不過,如果您選擇 Existing service role (現有服務角色),則您必須個別將此動作包含在服務角色中。

如果您的建置專案是指 Amazon EC2 Systems Manager 參數存放區中所存放且參數名稱開頭不是的參數/CodeBuild/,並且您選擇了新服務角色,則必須更新該服務角色以允許訪問不以/CodeBuild/。這是因為該服務角色僅允許存取開頭為 /CodeBuild/ 的參數名稱。

如果選擇新服務角色,則服務角色會包含權限,讓您解密/CodeBuild/命名空間中的 Amazon EC2 Systems Manager 參數存放區。

您設定的環境變數會取代現有環境變數。例如,如果 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_ 的任何環境變數。此字首保留供 內部使用。

如果有多個位置定義同名的環境變數,則會決定值,如下所示:

  • 開始建置操作呼叫中的值會採用最高優先順序。

  • 組建專案定義中的值會採用下一個優先順序。

  • buildspec 宣告中的值會採用最低優先順序。

如果您使用 Secrets Manager,則為value下,將參數名稱設定為存放在 Secrets Manager 中。將 type 設為 SECRETS_MANAGER。使用名為/CodeBuild/dockerLoginPassword作為例子,設定nameLOGIN_PASSWORD。將 value 設為 /CodeBuild/dockerLoginPassword。將 type 設為 SECRETS_MANAGER

重要

如果您使用 SSecrets Manager,我們建議您儲存名稱開頭為的機密/CodeBuild/(例如,/CodeBuild/dockerLoginPassword。如需詳細資訊,請參閱「」是什麼AWS Secrets Manager?中的AWS Secrets Manager使用者指南

如果您的建置專案是指 Secret Manager 中所存放的機密,則建置專案的服務角色必須允許secretsmanager:GetSecretValue動作。如果您稍早選擇 New service role (新服務角色),則 CodeBuild 會將此動作包含在您建置專案的預設服務角色中。不過,如果您選擇 Existing service role (現有服務角色),則您必須個別將此動作包含在服務角色中。

如果您的構建項目引用了 Secrets Manager 中存儲的祕密名稱,並且密鑰名稱不以/CodeBuild/,並且您選擇了新服務角色,則必須更新服務角色以允許訪問不以/CodeBuild/。這是因為服務角色僅允許存取開頭為的機密名稱。/CodeBuild/

如果選擇新服務角色,則服務角色會包含權限,讓您解密/CodeBuild/命名空間。

環境/註冊機構憑證

選用。一個RegistryCredential物件,該物件指定登入資料的登入資料,該物件會提供私有 Docker 登錄檔

環境/註冊機構證書/憑據

指定 ARN 或使用AWS Managed Services。您只能在登入資料存在於您目前區域時才能使用其名稱

環境/註冊機構證書/憑證提供者

唯一有效的值為 SECRETS_MANAGER

當此值設為:

  • imagePullCredentials 必須設定為 SERVICE_ROLE

  • 此圖片不能是精選的影像或 Amazon ECR 影像。

環境/imagePullCredentials類型

選用。CodeBuild 在建置中用來提取映像的登入資料類型。兩種有效值如下:

CODEBUILD

CODEBUILD 指定 CodeBuild 使用自己的登入資料。您必須編輯 Amazon ECR 儲存庫政策,才能信任CodeBuild服務委託人。

服務角色

指定CodeBuild使用您的建置專案的服務角色。

當您使用跨帳戶或私有登錄影像,您必須使用 SERVICE_ROLE 登入資料。當您使用 CodeBuild 彙整的映像時,您必須使用 CODEBUILD 登入資料。

環境/privilegedMode

設定為true僅當您想要使用此建置專案建置 Docker 影像,而且您指定的建置環境影像不是由CodeBuild與碼頭支持。否則,所有嘗試與 Docker 協助程式互動的相關建置都會失敗。您也必須啟動 Docker 協助程式,以讓您的建置與其互動。執行這項操作的一種方式是執行下列建置命令,以在 buildspec 檔案的 install 階段中初始化 Docker 協助程式。如果您已指定具備 Docker 支援並由 CodeBuild 提供的建置環境映像,則請不要執行下列命令。

注意

根據預設,Docker 容器不允許存取任何裝置。「Privileged」(特殊權限) 模式會授予建置專案之 Docker 容器對所有裝置的存取權。如需詳細資訊,請參閱 Docker Docs 網站上的 Runtime Privilege and Linux Capabilities

- 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使用來代表 IAM 用户與服務互動(例如,arn:aws:iam::account-id:role/role-name

timeoutInMinutes

選用。介於 5 與 480 (8 小時) 之間的分鐘數目,在此時間之後,CodeBuild 會停止未完成的建置。如果未指定,則會使用預設值 60。若要判斷 CodeBuild 是否以及何時因逾時而停止建置,請執行 batch-get-builds 命令。若要判斷是否已停止建置,請查看 buildStatusFAILED 的輸出。若要判斷組建何時逾時,請查看與 phaseStatusTIMED_OUT 建立關聯之 endTime 值的輸出。

queuedTimeoutInMinutes

選用。分鐘數目,介於 5 至 480 個(8 小時)之間,然後CodeBuild如果構建仍處於排隊狀態,則會停止構建。如果未指定,則會使用預設值 60。

encryptionKey

選用。的別名或 ARNAWS KMS key使用CodeBuild來加密構建輸出。如果您指定別名,則請使用 arn:aws:kms:region-ID:account-ID:key/key-ID 格式,或者,如果別名已存在,則請使用 alias/key-alias 格式。如果未指定,則AWS使用 Amazon S3 的託管 KMS 密鑰。

tags

選用。陣列標籤物件,以提供您想要與此建置專案建立關聯的標籤。您可以指定最多 50 個標籤。任何支援 CodeBuild 建置專案標籤的 AWS 服務都可以使用這些標籤。每個標籤都表示為具有keyvalue

VPCConfig

選用。一個VpcConfig物件,其中包含您項目 VPC 配置相關資訊的資訊。如需詳細資訊,請參閱 使用AWS CodeBuildAmazon Virtual Private Cloud

這些屬性包括:

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

必要。使用的安全組 ID 陣列,CodeBuild以允許存取 VPC 中的資源。執行此命令,以取得這些 ID:

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

badgeEnabled

選用。指定是否將建置徽章包含在CodeBuild專案。設定為true以啟用構建徽章,或false否則為。如需詳細資訊,請參閱 使用 CodeBuild 建置徽章範例

LogsConfig

一個LogsConfig物件,其中包含有關此建置日誌所在位置的資訊。

LogsConfigcloudWatchLogs

一個CloudWatchLogsConfig物件,其中包含有關將日誌推送至CloudWatch日誌。

LogsConfigS3Logs

同時S3LogsConfig物件,其中包含有關將日誌推送至 Amazon S3 的資訊。

fileSystemLocations

選用。陣列ProjectFileSystemsLocation對象,其中包含有關您的 Amazon EFS 配置的信息。

buildBatchConfig

選用。所以此buildBatchConfig物件是ProjectBuildBatchConfig結構,其中包含專案的批次建置配置資訊。

buildBatchConfig/serviceRole

批次建置專案的服務角色 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>

如果成功,則專案對象會顯示於主控台輸出。請參CreateProject回應語法查看此數據的示例。

除了建置專案名稱之外,您稍後可以變更任何建置專案設定。如需詳細資訊,請參閱 變更建置專案的設定 (AWS CLI)

若要開始執行建置,請參閱執行建置 (AWS CLI)

若您的來源碼存放於GitHub存儲庫,並且您希望CodeBuild每次程式碼變更被推送至儲存庫時,請參閲自動開始執行建置 (AWS CLI)