多個輸入來源和輸出成品範例 - AWS CodeBuild

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

多個輸入來源和輸出成品範例

您可以建立具有不只一個輸入來源和不只一組輸出成品的 AWS CodeBuild 組建專案。這個範例示範如何設定如下的組建專案:

  • 使用不同類型的多個來源和儲存庫。

  • 在單一建置中將建置成品發佈至多個 S3 儲存貯體。

在此範例中,您會建立組建專案並用來執行組建。此範例使用組建專案的 buildspec 檔案,示範如何納入多個來源並建立多組成品。

  1. 將您的來源上傳至一個或多個 S3 儲存桶、CodeCommit、GitHub、 GitHub 企業服務器或 Bitbucket 存儲庫。

  2. 選擇哪個來源是主要來源。這是其中的原始程式 CodeBuild 會尋找並執行您的 Buildspec 檔案。

  3. 建立建置專案。如需詳細資訊,請參閱 在 AWS CodeBuild 中建立建置專案

  4. 遵循執行執行 AWS CodeBuild中的指示,建立組建專案、執行組建和取得組建的相關資訊。

  5. 如果您使用 AWS CLI 來建立組建專案,則 create-project 命令的 JSON 格式輸入可能類似如下:

    { "name": "sample-project", "source": { "type": "S3", "location": "bucket/sample.zip" }, "secondarySources": [ { "type": "CODECOMMIT", "location": "https://git-codecommit.us-west-2.amazonaws.com/v1/repos/repo" "sourceIdentifier": "source1" }, { "type": "GITHUB", "location": "https://github.com/awslabs/aws-codebuild-jenkins-plugin" "sourceIdentifier": "source2" } ], "secondaryArtifacts": [ { "type": "S3", "location": "output-bucket", "artifactIdentifier": "artifact1" }, { "type": "S3", "location": "other-output-bucket", "artifactIdentifier": "artifact2" } ], "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:4.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }

您的主要來源是在 source 屬性下方定義。其他所有來源稱為次要來源,出現在 secondarySources 下方。所有次要來源安裝在其自己的目錄中。此目錄存放在內建環境變數 CODEBUILD_SRC_DIR_sourceIdentifer 中。如需詳細資訊,請參閱 建置環境中的環境變數

secondaryArtifacts 屬性包含成品定義清單。這些成品使用 buildspec 檔案的 secondary-artifacts 區塊 (巢狀於 artifacts 區塊內)。

buildspec 檔案中的次要成品具有與成品相同的結構,且依成品識別符區隔。

注意

在 中CodeBuild APIartifactIdentifierCreateProjectUpdateProject。必須用來參考次要成品。

使用前述的 JSON 格式輸入時,專案的 buildspec 檔案可能如下所示:

version: 0.2 phases: install: runtime-versions: java: openjdk11 build: commands: - cd $CODEBUILD_SRC_DIR_source1 - touch file1 - cd $CODEBUILD_SRC_DIR_source2 - touch file2 artifacts: files: - '**.*' secondary-artifacts: artifact1: base-directory: $CODEBUILD_SRC_DIR_source1 files: - file1 artifact2: base-directory: $CODEBUILD_SRC_DIR_source2 files: - file2

您可以使用 API 搭配 StartBuild 中的 sourceVersion 屬性,以覆寫主要來源的版本。若要覆寫一個或多個次要來源版本,請使用 secondarySourceVersionOverride 屬性。

在 AWS CLI 中,start-build 命令的 JSON 格式輸入可能如下所示:

{ "projectName": "sample-project", "secondarySourcesVersionOverride": [ { "sourceIdentifier": "source1", "sourceVersion": "codecommit-branch" }, { "sourceIdentifier": "source2", "sourceVersion": "github-branch" }, ] }

無來源的專案範例

您可以設定 CodeBuild 項目,方法是選擇NO_SOURCE來源類型。當來源類型為 NO_SOURCE 時,您將無法指定 buildspec 檔案,因為專案並無任何來源。相反地,您必須在 create-project CLI 命令的 JSON 格式輸入的 buildspec 屬性中指定 YAML 格式 buildspec 字串。這看起來類似下述:

{ "name": "project-name", "source": { "type": "NO_SOURCE", "buildspec": "version: 0.2\n\nphases:\n build:\n commands:\n - command" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:4.0", "computeType": "BUILD_GENERAL1_SMALL", }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }

如需詳細資訊,請參閱 建立建置專案 (AWS CLI)

若要了解如何建立管道,而對使用多個來源輸入以 CodeBuild 創建多個輸出工件,請參閲AWS CodePipeline與 的整合 CodeBuild 和多個輸入來源和輸出成品範例