.. declares 2 input artifacts which is more than the maximum count
。文档严格要求CodeBuild仅具有单个输入工件。另一方面,Lambda不受此限制。我一直在寻找Lambda如何将两个工件“合并”为一个工件的方法,然后我可以将其传递给CodeBuild。不幸的是,有关此主题的信息非常有限。 有没有人能正常工作的CodePipeline Lambda可以将两个工件合并为一个? br />
#1 楼
我们遇到了完全相同的问题-我们的构建阶段需要使用来自两个单独位置的信息。为了以一种通用的方式解决此问题,我创建了两个通用Lambda,一个将合并工件,并且将从工件中提取特定文件的工件。在这两种情况下,都会创建一个新的工件,该工件可以传递到后续的CodePipeline阶段。 >如果它不满足您的确切要求,则应该很容易进行调整以执行所需的操作。
#2 楼
我实际上已经通过直接在代码构建中克隆存储库解决了该问题:传递GitHub令牌:在安装步骤中:
- { Name: GITHUB_TOKEN, Value: {Ref: GitHubToken } }
- { Name: GITHUB_BRANCH, Value: {Ref: GitHubBranch } }
我发现该解决方案更易于实现,不依赖Lambda,即使执行两次拉动,也相当可靠。 >
评论
您将-{Name ...}放在哪里?
– Alex R
18年6月3日在4:20
我通过cloudformation创建CodeBuild,但这是一个环境变量,您也可以通过控制台指定它。
– romaninsh
18年6月22日在14:12
#3 楼
从2018年9月4日起,亚马逊增加了对多种输入源的支持:https://aws.amazon.com/about-aws/whats-new/2018/08/aws-codebuild-adds-ability使用多个输入源和输出工件创建构建项目/
来自文档:
{
"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"
}
],
version: 0.2
phases:
build:
commands:
- cd $CODEBUILD_SRC_DIR_source1
- touch file1
- cd $CODEBUILD_SRC_DIR_source2
- touch file2
artifacts:
secondary-artifacts:
artifact1:
base-directory: $CODEBUILD_SRC_DIR_source1
files:
- file1
artifact2:
base-directory: $CODEBUILD_SRC_DIR_source2
files:
- file2
#4 楼
您可以查看CodeBuild。 BuildScpec文件可以放在CodeBuild项目中。评论
我看不到如何回答这个问题。
–滕西拜
18年6月15日在8:16
评论
菲利普(Philip)非常棒,感谢您分享此Lambda。
– romaninsh
18年1月26日在13:55