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 主控台中的來源。如需詳細資訊,請參閱 參考 ProjectSourceAWS CodeBuild API中的

動作類型

  • 類別:BuildTest

  • 擁有者:AWS

  • 提供者:CodeBuild

  • 版本:1

組態參數

ProjectName

必要:是

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

PrimarySource

必要:有條件

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

如果為 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 個字元限制。如果超過此限制,系統就會傳回驗證錯誤。

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

Input artifacts (輸入成品)

  • 成品數量: 1 to 5

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

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

    注意

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

輸出成品

  • 成品數量: 0 to 5

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

    注意

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

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

輸出變數

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

如需在 中使用 CodeBuild 環境變數的詳細資訊 CodePipeline,請參閱 中的範例CodeBuild 動作輸出變數。如需您可以在 中使用的環境變數清單 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" } ] } ] }

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