執行建置 (AWS CLI) - AWS CodeBuild

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

執行建置 (AWS CLI)

注意

若要使用 CodePipeline 以利用 AWS CodeBuild 執行組建,請跳過這些步驟,並遵循建立使用 CodeBuild 的管道 (AWS CLI)中的說明。

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

  1. 使用下列其中一種方式,執行 start-build 命令:

    aws codebuild start-build --project-name <project-name>

    如果您想要執行的建置使用建置輸入成品和組建專案現有設定的最新版本,則請使用此命令。

    aws codebuild start-build --generate-cli-skeleton

    如果您想要執行的建置使用建置輸入成品的舊版本,或者想要覆寫建置輸出成品、環境變數、buildspec 或預設建置逾時期間的設定,則請使用此命令。

  2. 如果您執行start-build使用指令--project-name選項,取代<project-name>使用建置專案的名稱,然後跳至此程序的步驟 6。若要取得組建專案清單,請參閱檢視建置專案名稱

  3. 如果您執行start-build使用指令--idempotency-tokenoption (區分大小寫的唯一識別碼或權杖) 包含在start-build請求。此字符在 請求之後的 5 分鐘內有效。如果您使用相同的字符來重複 start-build 請求,但變更參數,則 CodeBuild 會傳回參數不符錯誤。

  4. 如果您搭配執行 start-build 命令與 --generate-cli-skeleton 選項,則會在輸出中顯示 JSON 格式化資料。將資料複製至本機電腦或執行個體上 AWS CLI 安裝位置中的檔案 (例如,start-build.json)。修改複製的資料以符合下列格式,並儲存您的結果:

    { "projectName": "projectName", "sourceVersion": "sourceVersion", "artifactsOverride": { "type": "type", "location": "location", "path": "path", "namespaceType": "namespaceType", "name": "artifactsOverride-name", "packaging": "packaging" }, "buildspecOverride": "buildspecOverride", "cacheOverride": { "location": "cacheOverride-location", "type": "cacheOverride-type" }, "certificateOverride": "certificateOverride", "computeTypeOverride": "computeTypeOverride", "environmentTypeOverride": "environmentTypeOverride", "environmentVariablesOverride": { "name": "environmentVariablesOverride-name", "value": "environmentVariablesValue", "type": "environmentVariablesOverride-type" }, "gitCloneDepthOverride": "gitCloneDepthOverride", "imageOverride": "imageOverride", "idempotencyToken": "idempotencyToken", "insecureSslOverride": "insecureSslOverride", "privilegedModeOverride": "privilegedModeOverride", "queuedTimeoutInMinutesOverride": "queuedTimeoutInMinutesOverride", "reportBuildStatusOverride": "reportBuildStatusOverride", "timeoutInMinutesOverride": "timeoutInMinutesOverride", "sourceAuthOverride": "sourceAuthOverride", "sourceLocationOverride": "sourceLocationOverride", "serviceRoleOverride": "serviceRoleOverride", "sourceTypeOverride": "sourceTypeOverride" }

    取代下列預留位置:

    • projectName:必要字串。用於此建置的組建專案名稱。

    • sourceVersion:選用字串。要建置的來源碼版本,如下所示:

      • 對於 Amazon S3,對應於您要建立之輸入 ZIP 檔案版本的版本識別碼。如果未指定 sourceVersion,則會使用最新版本。

      • 針對 CodeCommit,為與您想要建置之來源碼版本對應的遞交 ID。如果未指定 sourceVersion,則會使用預設分支的 HEAD 遞交 ID。(您無法指定 sourceVersion 的標籤名稱,但可以指定標籤的遞交 ID)。

      • 對於GitHub、提交 ID、提取要求 ID、分支名稱或標籤名稱,對應於您要建置的原始程式碼版本。如果指定提取請求 ID,其格式必須為 pr/pull-request-ID (例如,pr/25)。如果指定分支名稱,則會使用分支的 HEAD 遞交 ID。如果未指定 sourceVersion,則會使用預設分支的 HEAD 遞交 ID。

      • 針對 Bitbucket,為遞交 ID、分支名稱,或與您想要建置之來源碼版本對應的標籤名稱。如果指定分支名稱,則會使用分支的 HEAD 遞交 ID。如果未指定 sourceVersion,則會使用預設分支的 HEAD 遞交 ID。

    • 下列是 artifactsOverride 的預留位置。

      • type:選用。此建置的建置輸出成品類型,可覆寫組建專案中所定義的建置輸出成品類型。

      • location:選用。此建置的建置輸出成品位置,可覆寫組建專案中所定義的建置輸出成品位置。

      • 路徑:選用。此建置的建置輸出成品路徑,可覆寫組建專案中所定義的建置輸出成品路徑。

      • namespaceType:選用。此建置的建置輸出成品路徑類型,可覆寫組建專案中所定義的建置輸出成品路徑類型。

      • name:選用。此建置的建置輸出成品名稱,可覆寫組建專案中所定義的建置輸出成品名稱。

      • 封裝:選用。此建置的建置輸出成品封裝類型,可覆寫組建專案中所定義的建置輸出成品封裝類型。

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

    • 下列是 cacheOverride 的預留位置。

      • cacheOverride-location:選用。此建置的 ProjectCache 物件位置,可覆寫組建專案中所指定的 ProjectCache 物件。cacheOverride 是選用項目,並採用 ProjectCache 物件。ProjectCache 物件中需要 location

      • cacheOverride-type:選用。此建置的 ProjectCache 物件類型,可覆寫組建專案中所指定的 ProjectCache 物件。cacheOverride 是選用項目,並採用 ProjectCache 物件。ProjectCache 物件中需要 type

    • certificateOverride:選用。此建置的憑證名稱,可覆寫組建專案中所指定的憑證名稱。

    • environmentTypeOverride:可選。此建置的容器名稱,可覆寫組建專案中所指定的容器名稱。目前有效字串為 LINUX_CONTAINER

    • 下列是 environmentVariablesOverride 的預留位置。

      • environmentVariablesOverride-名稱:可選。您想要針對此建置覆寫其值之組建專案中的環境變數名稱。

      • environmentVariablesOverride類型:可選。您想要針對此建置覆寫其值之組建專案中的環境變數類型。

      • environmentVariablesValue:可選。您想要針對此建置覆寫組建專案中所定義的環境變數值。

    • gitCloneDepth覆寫:可選。您想要針對此建置覆寫其值之組建專案中的 Git clone depth (Git 複製深度) 值。如果您的來源類型是 Amazon S3,則不支援此值。

    • imageOverride:選用。此建置的映像名稱,可覆寫組建專案中所指定的映像名稱。

    • idempotencyToken:選用。字串,可做為指定建置請求為等冪的字符。您可以選擇長度為 64 個或更少字元的任何字串。該令牌在開始構建請求後的 5 分鐘內有效。如果您使用相同的令牌重複啟動構建請求,但更改參數,CodeBuild返回參數不匹配錯誤。

    • insecureSslOverride: 選用的布林值,指定是否覆寫建置專案中指定的不安全 TLS 設定。不安全 TLS 設定決定是否忽略連線至專案來源碼時的 TLS 警告。此覆蓋僅在構建的源代碼為時適用GitHub企業伺服器。

    • privilegedModeOverride: 可選布林值。如果設定為 true,則建置會覆寫建置專案中的特殊權限模式。

    • queuedTimeoutInMinutesOverride: 選擇性整數,指定組建在逾時前允許排入佇列的分鐘數。其最小值為五分鐘,其最大值為 480 分鐘 (八小時)。

    • reportBuildStatus覆寫: 選用的布林值,指定是否要傳送組建開始和完成狀態的來源提供者。如果您使用非來源提供者進行設定GitHub,GitHub企業服務器,或比特桶,invalidInputException被拋出。

    • sourceAuthOverride: 可選字串。此建置的授權類型,可覆寫組建專案中所定義的授權類型。此覆蓋僅適用於構建項目的源代碼是 Bitbucket 或GitHub。

    • sourceLocationOverride: 可選字串。此建置的位置,可覆寫組建專案中所定義位置的來源位置。

    • serviceRoleOverride: 可選字串。此建置的服務角色名稱,可覆寫組建專案中所指定的服務角色名稱。

    • sourceTypeOverride: 可選字串。此建置的來源輸入類型,可覆寫組建專案中所定義的來源輸入。有效字串為 NO_SOURCECODECOMMITCODEPIPELINEGITHUBS3BITBUCKETGITHUB_ENTERPRISE

    • timeoutInMinutes覆寫:可選數字。此建置的建置逾時分鐘數目,可覆寫組建專案中所定義的建置逾時分鐘數目。

    我們建議您儲存具有敏感值的環境變數,例如AWS存取金鑰識別碼,一個AWS秘密存取金鑰或密碼做為 Amazon EC2 系統管理員參數存放區中的參數。CodeBuild只有在參數名稱開頭為時,才能使用存放在 Amazon EC2 系統管理員參數存放區中的參數/CodeBuild/(例如,/CodeBuild/dockerLoginPassword). 您可以使用CodeBuild在亞馬遜 EC2 系統管理器中創建參數的控制台。選擇 Create a parameter (建立參數),然後遵循指示進行。(在該對話方塊中,用於KMS 金鑰,您可以選擇性地指定的 ARNAWS KMS輸入您的帳戶。 Amazon EC2 系統管理員使用此金鑰在儲存期間加密參數的值,並在擷取期間進行解密。) 如果您使用 CodeBuild 主控台建立參數,則主控台會使用存放的 /CodeBuild/ 來啟動參數。但是,如果您使用 Amazon EC2 系統管理員參數存放區主控台建立參數,則必須以/CodeBuild/,且您必須設定类型安全字串。如需詳細資訊,請參閱〈AWS Systems Manager參數存放區逐步解說:建立和測試 String 參數 (主控台)亞馬遜 EC2 系統管理器用戶指南

    如果您的建置專案參考存放在 Amazon EC2 系統管理員參數存放區中的參數,則建置專案的服務角色必須允許ssm:GetParameters動作。如果您稍早選擇 Create a new service role in your account (在帳戶中建立新的服務角色),則 CodeBuild 會將此動作自動包含在您建置專案的預設服務角色中。不過,如果您選擇 Choose an existing service role from your account (從您的帳戶中選擇現有服務角色),則必須將此動作單獨包含在服務角色中。

    您設定的環境變數會取代現有環境變數。例如,如果 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 檔案宣告中的值會採用最低優先順序。

    如需這些預留位置有效值的資訊,請參閱建立建置專案 (AWS CLI)。如需組建專案的最新設定清單,請參閱檢視建置專案詳細資訊

  5. 切換到包含您剛儲存之檔案的目錄,然後再次執行 start-build 命令。

    aws codebuild start-build --cli-input-json file://start-build.json
  6. 如果成功,則會在輸出中顯示執行建置 程序中所述資料類似的資料。

若要使用此建置的詳細資訊,請記下輸出中的 id 值,然後參閱檢視建置的詳細資訊 (AWS CLI)