CodeBuild-AWS Pipeline의 여러 입력 아티팩트


12

두 개의 소스 리포지토리에 의존하는 AWS CodePipeline을 구축 중입니다. 'CodeBuild'단계가 여러 입력 아티팩트로 지정되면 오류가 발생 .. declares 2 input artifacts which is more than the maximum count합니다. 설명서에는 CodeBuild에 단일 입력 아티팩트 만 있어야하는 엄격한 요구 사항이 있습니다.

반면 람다는 이러한 제한이 없습니다. Lambda가 두 개의 아티팩트를 하나의 코드로 "병합"하여 CodeBuild에 전달할 수있는 방법을 찾고있었습니다. 불행히도이 주제에 대한 정보는 매우 제한적입니다.

누구나 두 개의 아티팩트를 하나로 병합하는 CodePipeline Lambda가 있습니까?

여기에 이미지 설명을 입력하십시오

참고 : 아티팩트에 액세스하는 방법에 대한 설명서 .

답변:


6

우리는 똑같은 문제를 겪었습니다. 빌드 단계에서는 두 곳의 정보를 사용해야합니다.

일반적인 방법 으로이 문제를 해결하기 위해 두 가지 범용 Lambdas를 만들었습니다. 하나는 아티팩트를 병합하고 다른 하나는 아티팩트에서 특정 파일을 추출합니다. 두 경우 모두 후속 CodePipeline 스테이지로 전달 될 수있는 새 아티팩트가 작성됩니다.

참조 https://github.com/tooltwist/codepipeline-artifact-munge를

그것이 당신의 정확한 요구 사항을 충족시키지 못하면, 당신이 필요로하는 것을하기 위해 쉽게 조정할 수 있어야합니다.


이 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

나는이 솔루션이 구현하기 쉽고 Lambdas에 의존하지 않으며 두 번의 풀을 수행하더라도 상당히 안정적으로 작동한다는 것을 알았습니다.


정확히 어디에-{Name ...}을 넣습니까?
Alex R

cloudformation을 통해 CodeBuild를 만들지 만 콘솔을 통해 지정할 수있는 환경 변수입니다.
romaninsh

2

2018 년 9 월 4 일부터 Amazon은 여러 입력 소스에 대한 지원을 추가했습니다.

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 프로젝트에 넣을 수 있습니다.코드 빌드 프로젝트


3
이것이 어떻게 질문에 대답하는지 알 수 없습니다.
Tensibai
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.