CodeBuild-AWS Pipeline中的多个输入工件


12

我正在构建一个AWS CodePipeline,它依赖于两个源存储库。如果在“ CodeBuild”步骤中指定了多个Input工件,则会出现错误:.. declares 2 input artifacts which is more than the maximum count。文档严格要求CodeBuild仅具有单个输入工件。

另一方面,Lambda没有此限制。我一直在寻找一种方法,使Lambda可以将两个工件“合并”为一个工件,然后将其传递给CodeBuild。不幸的是,关于这个主题的信息非常有限。

是否有人能正常工作的CodePipeline Lambda会将两个工件合并为一个?

在此处输入图片说明

注意:有关如何访问工件的文档。

Answers:


6

我们遇到了完全相同的问题-我们的构建阶段需要使用来自两个不同位置的信息。

为了以一种通用的方式解决这个问题,我创建了两个通用的Lambda:一个将合并工件,另一个将从工件中提取特定文件。在这两种情况下,都会创建一个新的工件,该工件可以传递到后续的CodePipeline阶段。

参见https://github.com/tooltwist/codepipeline-artifact-munge

如果它不满足您的确切要求,则应该很容易进行调整以执行所需的操作。


菲利普(Philip)非常棒,感谢您分享此Lambda。
romaninsh

4

我实际上通过直接在代码构建中克隆存储库解决了该问题:

传递GitHub令牌:

      - { Name: GITHUB_TOKEN, Value: {Ref: GitHubToken } }
      - { Name: GITHUB_BRANCH, Value: {Ref: GitHubBranch } }

#在安装步骤中执行git clone:

      - git clone --single-branch --depth=1 -b $GITHUB_BRANCH https://gitorgname:$GITHUB_TOKEN@github.com/gitorgname/reponame.git  src/reponame

我发现此解决方案更易于实现,不依赖Lambda,即使执行两次请求,也可以可靠地工作。


您将-{Name ...}放在哪里?
亚历克斯R

我通过cloudformation创建CodeBuild,但这是一个环境变量,您也可以通过控制台指定它。
romaninsh

2

自2018年9月4日起,亚马逊增加了对多种输入源的支持:

https://aws.amazon.com/about-aws/whats-new/2018/08/aws-codebuild-adds-ability-to-create-build-projects-with-multiple-input-sources-and-output-文物/

文档

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

-1

您可以查看CodeBuild。BuildScpec文件可以放在CodeBuild项目中。CodeBuild项目


3
我看不到如何回答这个问题。
Tensibai
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.