多输入源和输出构件示例 - 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 中,辅助工件artifactIdentifier上的是CreateProject和中的必需属性UpdateProject。必须使用它引用辅助构件。

使用前面的 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 和输出构件的集成示例