CodeBuild - AWS Pipeline'da birden çok girdi artefaktı


12

İki kaynak havuzuna bağlı bir AWS CodePipeline oluşturuyorum. 'CodeBuild' adım birden Girdi eserler ile belirtilirse, o zaman hatayı alıyorum: .. declares 2 input artifacts which is more than the maximum count. Dokümantasyonun CodeBuild'in yalnızca tek bir giriş yapısına sahip olması için katı bir gereksinimi vardır.

Lambdas, diğer taraftan, bu sınırlamaya sahip değildir. Ben bir Lambda nasıl sonra iki CodeBuild geçebilir tek bir içine iki eser "birleştirmek" bir yol arıyordum. Ne yazık ki, bu konudaki bilgiler oldukça sınırlıdır.

Herkes iki eser bir bir birleştirecek çalışan bir CodePipeline Lambda var mı?

resim açıklamasını buraya girin

Not : Artefaktlara erişim ile ilgili belgeler .

Yanıtlar:


6

Aynı sorunu yaşadık - yapım aşamamızın iki ayrı konumdan bilgi kullanması gerekiyor.

Bunu genel bir şekilde çözmek için, iki genel amaçlı Lambdas oluşturdum - biri eserleri birleştirecek ve diğeri bir esere göre belirli dosyaları çıkaracak. Her iki durumda da bir sonraki CodePipeline aşamasına geçirilebilen yeni bir yapı oluşturulur.

Bkz. Https://github.com/tooltwist/codepipeline-artifact-munge

Tam gereksiniminizi karşılamıyorsa, ihtiyacınız olanı yapmak için ince ayar yapmak yeterince kolay olmalıdır.


Harika iş, Philip, bu Lambda'yı paylaştığın için teşekkürler.
romaninsh

4

Aslında depo doğrudan kod inşa klonlama sorunu çözdüm:

GitHub belirtecini geç:

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

# Yükleme adımında git clone komutunu çalıştırın:

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

Bu çözümün uygulanmasının daha kolay olduğunu, Lambdas'a güvenmediğini ve iki çekme gerçekleştirmesine rağmen oldukça güvenilir bir şekilde çalıştığını buldum.


- {İsim ...} tam olarak nereye koydunuz?
Alex R

CodeBuild'i bulut oluşturma yoluyla oluşturuyorum, ancak bu konsol aracılığıyla da belirleyebileceğiniz bir ortam değişkeni.
romaninsh

2

4 Eylül 2018'den itibaren Amazon, çoklu giriş kaynakları için destek ekledi:

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

Gönderen belgeler :

{
"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'i inceleyebilirsiniz. BuildScpec dosyası CodeBuild projesine yerleştirilebilir.CodeBuild Projesi


3
Bunun soruya nasıl cevap verdiğini göremiyorum.
Tensibai
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.