按照以下过程来创建包含多个输入和输出的构建项目。
创建包含多个输入和输出的构建项目
-
将源上传到一个或多个 S3 存储桶、CodeCommit、GitHub、GitHub Enterprise Server 或 Bitbucket 存储库。
-
选择一个源作为主要源。此源供 CodeBuild 查找和运行 buildspec 文件。
-
创建构建项目。有关更多信息,请参阅 在 AWS CodeBuild 中创建构建项目。
-
创建构建项目、运行构建和获取有关构建的信息。
-
如果使用 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": [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
属性。
AWS CLI 中 start-build
命令的 JSON 格式输入可能类似于以下内容:
{
"projectName": "sample-project",
"secondarySourcesVersionOverride": [
{
"sourceIdentifier": "source1",
"sourceVersion": "codecommit-branch"
},
{
"sourceIdentifier": "source2",
"sourceVersion": "github-branch"
},
]
}