執行建置 (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-token選項,則會隨附唯一區分大小寫識別符或字符。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 檔案版本對應的版本 ID。如果未指定 sourceVersion,則會使用最新版本。

      • 針對 CodeCommit (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。

    • 下列是 artifactsOveride 的預留位置。

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

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

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

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

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

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

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

    • 下列是 cacheOveride 的預留位置。

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

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

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

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

    • 下列是 environmentVariablesOveride 的預留位置。

      • 環境變數列索弗裏斯名稱:選用。您想要針對此建置覆寫其值之組建專案中的環境變數名稱。

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

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

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

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

    • idempotencyToken:選用。字串,可做為指定建置請求為等冪的字符。您可以選擇長度為 64 個或更少字元的任何字串。此字符在啟動建置請求之後的 5 分鐘內有效。如果您使用相同的字符來重複啟動建置請求,但變更參數,則 CodeBuild 會傳回參數不符錯誤。

    • insecureSslOverride:指定是否覆寫建置專案中所指定的不安全 TLS 設定的選用布林值。不安全 TLS 設定決定是否忽略連線至專案來源碼時的 TLS 警告。只有在建置的來源是 GitHub Enterprise Server 時,才會套用此覆寫。

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

    • queuedTimeoutInMinutesOverride:(選用整數),指定建置在超時前允許排入隊列的分鐘數。其最小值為五分鐘,其最大值為 480 分鐘 (八小時)。

    • reportBuildStatusOverride:(選用布林值),指定是否要將建置的啟動和完成狀態傳送給您的來源供應商。如果您搭配 GitHub、GitHub Enterprise Server 或 Bitbucket 以外的來源供應商設定此項,則會擲出 invalidInputException。

    • sourceAuthOverride:(選用字串)。此建置的授權類型,可覆寫組建專案中所定義的授權類型。只有在建置專案的來源是 Bitbucket 或 GitHub 時,才會套用此覆寫。

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

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

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

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

    建議您存放具有敏感值的環境變數,例如AWS存取金鑰 ID,AWS私密存取金鑰,或將密碼作為 Amazon EC2 Systems Manager 參數存放區中的參數。只有在 Amazon EC2 Systems Manager 參數存放區中存放的參數,則 CodeBuild 只有在參數名稱以/CodeBuild/(例如,/CodeBuild/dockerLoginPassword。您可以使用 CodeBuild 主控台,在 Amazon EC2 Systems Manager 中建立參數。選擇 Create a parameter (建立參數),然後遵循指示進行。(在該對話框中,KMS 金鑰,則您可以選擇 ARN 指定AWS KMS鍵在您的帳户中。 Amazon EC2 Systems Manager 使用此金鑰,以在檢索期間的儲存和解密期間加密參數值) 如果您使用 CodeBuild 主控台來建立參數,則主控台會使用/CodeBuild/,因為它正在被存儲。不過,如果您使用 Amazon EC2 Systems Manager 參數存放區主控台來建立參數,則參數名稱的開頭必須為/CodeBuild/,並且您必須設置類型安全字串。如需詳細資訊,請參閱「」AWS Systems Manager參數存放區演練:建立和測試 String 參數 (主控台)中的Amazon EC2 Systems Manager 用户指南

    如果您的建置專案是指 Amazon EC2 Systems Manager 參數存放區中存放的參數,則建置專案的服務角色必須允許ssm:GetParameters動作。如果您選擇在您的帳户中建立新服務角色,則 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)