多输入源和输出构件示例 - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

多输入源和输出构件示例

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

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

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

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

  1. 将您的源上传到一个或多个 S3 存储桶、、 CodeCommit GitHub、 GitHub 企业服务器或 Bitbucket 存储库。

  2. 选择一个源作为主要源。这是在其中 CodeBuild 查找和运行您的 buildspec 文件的源代码。

  3. 创建构建项目。有关更多信息,请参阅在 Amazon CodeBuild 中创建构建项目

  4. 创建您的构建项目,运行构建,并获取有关构建的信息。

  5. 如果您使用创建构建项目,则create-project命令的 JSON 格式输入可能类似于以下内容: Amazon CLI

    { "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": [ss { "type": "S3", "location": "<output-bucket>", "artifactIdentifier": "artifact1" }, { "type": "S3", "location": "<other-output-bucket>", "artifactIdentifier": "artifact2" } ], "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.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: files: - '**.*' secondary-artifacts: artifact1: base-directory: $CODEBUILD_SRC_DIR_source1 files: - file1 artifact2: base-directory: $CODEBUILD_SRC_DIR_source2 files: - file2

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

start-build命令的 JSON 格式输入 Amazon CLI 可能如下所示:

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

无源项目示例

在配置源代码时,您可以通过选择NO_SOURCE源类型来配置 CodeBuild 项目。当您的源类型为 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:5.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" }

有关更多信息,请参阅创建构建项目 (Amazon CLI)

要了解如何创建使用多个源输入 CodeBuild 来创建多个输出工件的管道,请参阅Amazon CodePipeline 与多个输入源 CodeBuild 和输出构件的集成示例