CodeBuild - nhiều tạo phẩm đầu vào trong Đường ống AWS


12

Tôi đang xây dựng một CodePipeline AWS phụ thuộc vào hai kho lưu trữ nguồn. Nếu bước 'CodeBuild' được chỉ định với nhiều tạo phẩm Nhập liệu, thì bạn sẽ gặp lỗi : .. declares 2 input artifacts which is more than the maximum count. Tài liệu có một yêu cầu nghiêm ngặt đối với CodeBuild chỉ có một tạo phẩm đầu vào duy nhất.

Lambdas, mặt khác, không có giới hạn này. Tôi đã tìm cách làm thế nào một Lambda có thể "hợp nhất" hai cổ vật thành một thứ duy nhất mà tôi có thể chuyển đến CodeBuild sau đó. Thật không may, thông tin về chủ đề này là khá hạn chế.

Có ai có CodePipeline Lambda hoạt động để hợp nhất hai Cổ vật thành một không?

nhập mô tả hình ảnh ở đây

Lưu ý : Tài liệu về Cách truy cập các cổ vật .

Câu trả lời:


6

Chúng tôi đã có cùng một vấn đề - giai đoạn xây dựng của chúng tôi cần sử dụng thông tin từ hai địa điểm riêng biệt.

Để giải quyết vấn đề này một cách chung chung, tôi đã tạo ra hai Lambdas có mục đích chung - một sẽ hợp nhất các tạo tác và một sẽ trích xuất các tệp cụ thể từ một vật phẩm. Trong cả hai trường hợp, một tạo phẩm mới được tạo ra có thể được chuyển sang giai đoạn CodePipeline tiếp theo.

Xem https://github.com/tooltwist/codepipeline-artifact-munge

Nếu nó không đáp ứng yêu cầu chính xác của bạn, nó sẽ đủ dễ dàng để điều chỉnh để làm những gì bạn cần.


Công việc tuyệt vời, Philip, cảm ơn vì đã chia sẻ Lambda này.
romaninsh

4

Tôi thực sự đã giải quyết vấn đề bằng cách nhân bản kho lưu trữ trực tiếp trong codebuild:

Truyền mã thông báo GitHub:

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

# Thực thi git clone trong bước cài đặt:

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

Tôi thấy rằng giải pháp này dễ thực hiện hơn, không dựa vào Lambdas và mặc dù thực hiện hai lần kéo, hoạt động khá đáng tin cậy.


Chính xác thì bạn đặt - {Tên ...} ở đâu?
Alex R

Tôi tạo CodeBuild thông qua điện toán đám mây, nhưng đó là một biến môi trường mà bạn có thể chỉ định thông qua bảng điều khiển.
romaninsh

2

Kể từ ngày 4 tháng 9 năm 2018, Amazon đã thêm hỗ trợ cho nhiều nguồn đầu vào:

https://aws.amazon.com/about-aws/whats-new/2018/08/aws-codebuild-adds-ability-to-create-build-projects-with-multipl-input-source-and-output- hiện vật /

Từ tài liệu :

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

Bạn có thể xem lại CodeBuild. Tệp BuildScpec có thể được đặt trong dự án CodeBuild.Dự án CodeBuild


3
Tôi không thấy làm thế nào điều này trả lời câu hỏi.
Tensibai
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.