CodeBuild - beberapa artefak input dalam AWS Pipeline

12

Saya sedang membangun AWP CodePipeline yang tergantung pada dua repositori sumber. Jika langkah 'CodeBuild' ditentukan dengan beberapa artefak Input, maka Anda mendapatkan error: .. declares 2 input artifacts which is more than the maximum count. Dokumentasi memiliki persyaratan ketat bagi CodeBuild untuk hanya memiliki satu artefak input tunggal.

Lambdas, di sisi lain, tidak memiliki batasan ini. Saya telah mencari cara bagaimana Lambda dapat "menggabungkan" dua artefak menjadi satu artefak yang dapat saya sampaikan ke CodeBuild saat itu. Sayangnya, informasi tentang hal ini sangat terbatas.

Apakah ada yang punya CodePipeline Lambda yang berfungsi yang akan menggabungkan dua Artefak menjadi satu?

masukkan deskripsi gambar di sini

Catatan : Dokumentasi tentang Cara mengakses artefak .

romaninsh
sumber

Jawaban:

6

Kami memiliki masalah yang persis sama - tahap pembuatan kami perlu menggunakan informasi dari dua lokasi terpisah.

Untuk mengatasi ini secara umum, saya telah membuat dua tujuan umum Lambdas - satu yang akan menggabungkan artefak, dan satu yang akan mengekstrak file tertentu dari artefak. Dalam kedua kasus, artifak baru dibuat yang dapat diteruskan ke tahap CodePipeline berikutnya.

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

Jika tidak memenuhi persyaratan persis Anda, seharusnya cukup mudah untuk melakukan tweak untuk melakukan apa yang Anda butuhkan.

Philip Callender
sumber
Kerja yang luar biasa, Philip, terima kasih telah berbagi Lambda ini.
romaninsh
4

Saya sebenarnya telah memecahkan masalah dengan kloning repositori langsung di codebuild:

Lewati token GitHub:

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

# Jalankan git clone pada langkah install:

      - git clone --single-branch --depth=1 -b $GITHUB_BRANCH https://gitorgname:[email protected]/gitorgname/reponame.git  src/reponame

Saya menemukan bahwa solusi ini lebih mudah diterapkan, tidak bergantung pada Lambdas dan meskipun melakukan dua tarikan, bekerja dengan cukup andal.

romaninsh
sumber
Di mana tepatnya Anda meletakkan - {Nama ...}?
Alex R
Saya membuat CodeBuild melalui cloudformation, tetapi itu adalah variabel lingkungan yang dapat Anda tentukan melalui konsol juga.
romaninsh
2

Pada 4 Sep 2018 Amazon menambahkan dukungan untuk beberapa sumber input:

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

Dari dokumentasi :

{
"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
romaninsh
sumber
-1

Anda dapat meninjau CodeBuild. File BuildScpec dapat dimasukkan ke dalam proyek CodeBuild.Proyek CodeBuild

darangom
sumber
3
Saya gagal melihat bagaimana ini menjawab pertanyaan.
Tensibai