CodeBuild - สิ่งประดิษฐ์อินพุตหลายรายการใน AWS Pipeline


12

ฉันกำลังสร้าง AWS CodePipeline ซึ่งขึ้นอยู่กับแหล่งเก็บข้อมูลสองแห่ง หากขั้นตอน 'CodeBuild' .. declares 2 input artifacts which is more than the maximum countถูกระบุด้วยสิ่งประดิษฐ์การป้อนข้อมูลต่างๆจากนั้นคุณจะได้รับข้อผิดพลาด: เอกสารมีข้อกำหนดที่เข้มงวดสำหรับ CodeBuild ที่จะมีสิ่งประดิษฐ์อินพุตเดียวเท่านั้น

ในอีกทางหนึ่งแลมบ์ดาไม่มีข้อ จำกัด นี้ ฉันได้มองหาวิธีที่แลมบ์ดาสามารถ "ผสาน" สองสิ่งประดิษฐ์เข้าด้วยกันเป็นสิ่งเดียวซึ่งฉันสามารถผ่านไปยัง CodeBuild ได้ น่าเสียดายที่ข้อมูลในหัวข้อนี้ค่อนข้าง จำกัด

ไม่มีใครมี CodePipeline แลมบ์ดาที่ทำงานซึ่งจะรวมสองสิ่งประดิษฐ์เข้าด้วยกัน?

ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ : เอกสารเกี่ยวกับวิธีการเข้าถึงสิ่งประดิษฐ์

คำตอบ:


6

เรามีปัญหาเดียวกัน - ขั้นตอนการสร้างของเราจำเป็นต้องใช้ข้อมูลจากสถานที่สองแห่งแยกกัน

เพื่อแก้ปัญหานี้ในลักษณะทั่วไปฉันได้สร้าง Lambdas เพื่อวัตถุประสงค์ทั่วไปสองข้อ - หนึ่งซึ่งจะรวมสิ่งประดิษฐ์และหนึ่งที่จะแยกไฟล์เฉพาะจากสิ่งประดิษฐ์ ในทั้งสองกรณีมีการสร้างสิ่งประดิษฐ์ใหม่ที่สามารถส่งต่อไปยังสเตจ CodePipeline ที่ตามมา

ดูhttps://github.com/tooltwist/codepipeline-artifact-munge

ถ้ามันไม่เป็นไปตามความต้องการที่แท้จริงของคุณคุณควรปรับแต่งสิ่งที่คุณต้องการอย่างง่ายดาย


ผลงานยอดเยี่ยมฟิลิปขอบคุณสำหรับการแบ่งปันแลมบ์ดานี้
romaninsh

4

ฉันได้แก้ไขปัญหาโดยการโคลนพื้นที่เก็บข้อมูลโดยตรงใน codebuild:

ผ่านโทเค็น 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 และถึงแม้ว่าจะทำการดึงสองครั้งทำงานได้อย่างน่าเชื่อถือ


คุณใส่ - {ชื่อ ... } ที่ไหน?
Alex R

ฉันสร้าง CodeBuild ผ่านคลาวด์ แต่นั่นเป็นตัวแปรสภาพแวดล้อมที่คุณสามารถระบุผ่านคอนโซลได้เช่นกัน
romaninsh

2

ตั้งแต่วันที่ 4 ก.ย. 2561 อเมซอนได้เพิ่มการสนับสนุนแหล่งอินพุตหลายแหล่ง:

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.