AWS CodeBuild
用户指南 (API 版本 2016-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

多输入源和输出构件示例

您可以创建具有多个输入源和多个输出构件集的 AWS CodeBuild 构建项目。此示例演示如何设置具有以下特点的构建项目:

  • 使用多个不同类型的源和存储库。

  • 将构建构件发布到单个构建的多个 Amazon S3 存储桶。

在此示例中,将创建一个构建项目并使用它运行构建任务。示例使用构建项目的 buildspec 文件演示如何合并多个源和创建多个构件集。

  1. 将源上传到一个或多个 Amazon S3 存储桶、CodeCommit、GitHub、GitHub Enterprise 或 Bitbucket 存储库。

  2. 选择一个源作为主要源。CodeBuild 将在此源中查找和执行 buildspec 文件。

  3. 创建构建项目。有关更多信息,请参阅 在 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:2.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 API 中,辅助项目的 artifactIdentifierCreateProjectUpdateProject 中的必需属性。必须使用它引用辅助构件。

使用前面的 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: secondary-artifacts: artifact1: base-directory: $CODEBUILD_SRC_DIR_source1 files: - file1 artifact2: base-directory: $CODEBUILD_SRC_DIR_source2 files: - file2

可以在 sourceVersion 中使用具有 StartBuild 属性的 API 覆盖主要源的版本。要覆盖一个或多个辅助源版本,请使用 secondarySourceVersionOverride 属性。

AWS CLI 中 start-build 命令的 JSON 格式输入可能类似于以下内容:

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

无源项目示例

配置 AWS CodeBuild 项目时,可以在配置源时选择 NO_SOURCE 源类型。当您的源类型为 NO_SOURCE 时,您不能指定 buildspec 文件,因为您的项目没有源。相反,您必须将 JSON 格式输入的 buildspec 属性中的 YAML 格式 buildspec 字符串指定给 create-project CLI 命令。它可能如下所示:

{ "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:2.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 的源输入创建多个输出构件的管道,请参阅 CodePipeline 与 CodeBuild 和多输入源和输出项目集成示例

本页内容: