本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
多输入源和输出构件示例
您可以创建一个包含多个输入源和多组输出工件的 Amazon CodeBuild 构建项目。此示例演示如何设置具有以下特点的构建项目:
-
使用多个不同类型的源和存储库。
-
将构建构件发布到单个构建中的多个 S3 存储桶。
在此示例中,将创建一个构建项目并使用它运行构建任务。示例使用构建项目的 buildspec 文件演示如何合并多个源和创建多个构件集。
-
将您的源上传到一个或多个 S3 存储桶、、 CodeCommit GitHub、 GitHub 企业服务器或 Bitbucket 存储库。
-
选择一个源作为主要源。这是在其中 CodeBuild 查找和运行您的 buildspec 文件的源代码。
-
创建构建项目。有关更多信息,请参阅在 Amazon CodeBuild 中创建构建项目。
-
创建您的构建项目,运行构建,并获取有关构建的信息。
-
如果您使用创建构建项目,则
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 和输出构件的集成示例 。