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

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

多输入源和输出构件示例

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

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

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

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

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

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

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

  4. 按照直接运行 Amazon CodeBuild 中的说明创建构建项目、运行构建和获取有关构建的信息。

  5. 如果使用 Amazon 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 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

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

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

{ "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: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" }

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

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