AWS CodeBuild 組建和測試動作參考 - AWS CodePipeline

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

AWS CodeBuild 組建和測試動作參考

可讓您執行建置和測試做為您管道的一部分。當您執行 CodeBuild 組建或測試動作時,組建規格中指定的命令會在 CodeBuild 容器內執行。指定為 CodeBuild 動作輸入成品的所有成品,都可在執行命令的容器內使用。CodeBuild 可以提供建置或測試動作。如需詳細資訊,請參閱《AWS CodeBuild 使用者指南》https://docs.aws.amazon.com/codebuild/latest/userguide/

當您在主控台中使用 CodePipeline 精靈來建立建置專案時,CodeBuild 組建專案會顯示來源提供者為 CodePipeline。當您在 CodeBuild 主控台中建立組建專案時,您無法指定 CodePipeline 做為來源提供者,但將組建動作新增至管道會調整 CodeBuild 主控台中的來源。如需詳細資訊,請參閱 AWS CodeBuild API 參考中的 ProjectSource

動作類型

  • 類別:BuildTest

  • 擁有者:AWS

  • 提供者:CodeBuild

  • 版本:1

組態參數

ProjectName

必要:是

ProjectName 是 CodeBuild 中建置專案的名稱。

PrimarySource

必要:有條件

PrimarySource 參數的值必須是動作的其中一個輸入成品的名稱。CodeBuild 會尋找組建規格檔案,並在包含此成品解壓縮版本的目錄中執行組建規格命令。

如果針對 CodeBuild 動作指定多個輸入成品,則需要此參數。動作只有一個來源成品時,則 PrimarySource 成品會預設為該成品。

BatchEnabled

必要:否

BatchEnabled 參數的布林值允許動作在相同的建置執行中執行多個建置。

啟用此選項時,即可使用CombineArtifacts此選項。

如需已啟用批次建置的管道範例,請參閱CodePipeline 與 CodeBuild 和批次建置整合

CombineArtifacts

必要:否

CombineArtifacts 參數的布林值會將批次組建的所有組建成品合併為組建動作的單一成品檔案。

若要使用此選項,必須啟用 BatchEnabled 參數。

EnvironmentVariables

必要:否

此參數的值用於設定管道中 CodeBuild 動作的環境變數。EnvironmentVariables 參數的值採用環境變數物件的 JSON 陣列格式。請參閱 動作宣告 (CodeBuild 範例) 中的範例參數。

每個物件都有三個部分,而且全都是字串:

  • name:環境變數的名稱或索引鍵。

  • value:環境變數的值。使用 PARAMETER_STORESECRETS_MANAGER類型時,此值必須是您已存放在 AWS Systems Manager 參數存放區中的參數名稱,或是您已存放在 Secrets Manager 中的 AWS 秘密。

    注意

    我們強烈建議不使用環境變數來存放敏感值,尤其是 AWS 登入資料。當您使用 CodeBuild 主控台或 AWS CLI 時,環境變數會以純文字顯示。對於敏感值,建議您改用 SECRETS_MANAGER 類型。

  • type:(選擇性) 環境變數的類型。有效值為 PARAMETER_STORESECRETS_MANAGERPLAINTEXT。未指定時,則將預設為 PLAINTEXT

注意

當您type為環境變數組態輸入 namevalue和 時,特別是在環境變數包含 CodePipeline 輸出變數語法時,請勿超過組態值欄位的 1000 個字元限制。如果超過此限制,系統就會傳回驗證錯誤。

如需詳細資訊,請參閱 AWS CodeBuild API 參考中的 EnvironmentVariable。如需具有解析為 GitHub 分支名稱的環境變數的 CodeBuild 動作範例,請參閱 範例:將 BranchName變數與 CodeBuild 環境變數搭配使用

Input artifacts (輸入成品)

  • 成品數量: 1 to 5

  • 描述:CodeBuild 會尋找建置規格檔案,並從主要來源成品的目錄執行建置規格命令。指定單一輸入來源時,或針對 CodeBuild 動作指定多個輸入來源時,必須使用 CodePipeline 中的PrimarySource動作組態參數來設定單一成品或多個輸入來源的主要成品。

    每個輸入成品都會擷取到自己的目錄,其位置會存放在環境變數中。主要來源成品的目錄可透過 $CODEBUILD_SRC_DIR 使用。所有其他輸入成品的目錄可透過 $CODEBUILD_SRC_DIR_yourInputArtifactName 使用。

    注意

    CodeBuild 專案中設定的成品會成為管道中 CodeBuild 動作所使用的輸入成品。

輸出成品

  • 成品數量: 0 to 5

  • 描述:這些可用於讓 CodeBuild 建置規格檔案中定義的成品可供管道中的後續動作使用。僅定義一個輸出成品時,可以直接在建置規格檔案的 artifacts 區段下定義此成品。指定多個輸出成品時,所有參照的成品都必須在建置規格檔案中定義為次要成品。CodePipeline 中的輸出成品名稱必須符合組建規格檔案中的成品識別符。

    注意

    CodeBuild 專案中設定的成品會成為管道動作中的 CodePipeline 輸入成品。

    如果針對批次組建選取 CombineArtifacts 參數,則輸出成品位置會包含相同執行中執行的多個組建的合併成品。

輸出變數

此動作將建置過程中匯出的所有環境變數產生為變數。如需如何匯出環境變數的詳細資訊,請參閱 AWS CodeBuild API 指南中的 EnvironmentVariable

如需在 CodePipeline 中使用 CodeBuild 環境變數的詳細資訊,請參閱 中的範例CodeBuild 動作輸出變數。 CodePipeline 如需可在 CodeBuild 中使用的環境變數清單,請參閱AWS CodeBuild 《 使用者指南中的建置環境中的環境變數

動作宣告 (CodeBuild 範例)

YAML
Name: Build Actions: - Name: PackageExport ActionTypeId: Category: Build Owner: AWS Provider: CodeBuild Version: '1' RunOrder: 1 Configuration: BatchEnabled: 'true' CombineArtifacts: 'true' ProjectName: my-build-project PrimarySource: MyApplicationSource1 EnvironmentVariables: '[{"name":"TEST_VARIABLE","value":"TEST_VALUE","type":"PLAINTEXT"},{"name":"ParamStoreTest","value":"PARAMETER_NAME","type":"PARAMETER_STORE"}]' OutputArtifacts: - Name: MyPipeline-BuildArtifact InputArtifacts: - Name: MyApplicationSource1 - Name: MyApplicationSource2
JSON
{ "Name": "Build", "Actions": [ { "Name": "PackageExport", "ActionTypeId": { "Category": "Build", "Owner": "AWS", "Provider": "CodeBuild", "Version": "1" }, "RunOrder": 1, "Configuration": { "BatchEnabled": "true", "CombineArtifacts": "true", "ProjectName": "my-build-project", "PrimarySource": "MyApplicationSource1", "EnvironmentVariables": "[{\"name\":\"TEST_VARIABLE\",\"value\":\"TEST_VALUE\",\"type\":\"PLAINTEXT\"},{\"name\":\"ParamStoreTest\",\"value\":\"PARAMETER_NAME\",\"type\":\"PARAMETER_STORE\"}]" }, "OutputArtifacts": [ { "Name": "MyPipeline-BuildArtifact" } ], "InputArtifacts": [ { "Name": "MyApplicationSource1" }, { "Name": "MyApplicationSource2" } ] } ] }

以下相關資源可協助您使用此動作。