CodeBuild - артефакти з декількома входами в трубопровід AWS


12

Я будую AWS CodePipeline, який залежить від двох сховищ джерела. Якщо крок «CodeBuild» задається безліччю вхідних артефактів, то ви отримаєте повідомлення про помилку: .. declares 2 input artifacts which is more than the maximum count. Документація суворо вимагає, щоб CodeBuild мав лише один артефакт введення.

З іншого боку, лямбдаси не мають цього обмеження. Я шукав спосіб, як Лямбда зможе "об'єднати" два артефакти в один, який потім можу передати до CodeBuild. На жаль, інформація з цього приводу досить обмежена.

Хтось має працюючу CodePipeline Lambda, яка б об'єднала два артефакти в один?

введіть тут опис зображення

Примітка : Документація про доступ до артефактів .

Відповіді:


6

У нас була точно така ж проблема - наш етап збирання повинен використовувати інформацію з двох окремих місць.

Щоб вирішити це загальним способом, я створив два лямбда загального призначення - той, який об'єднує артефакти, і той, який витягує конкретні файли з артефакту. В обох випадках створюється новий артефакт, який може бути переданий наступній стадії CodePipeline.

Дивіться https://github.com/tooltwist/codepipeline-artifact-munge

Якщо вона не відповідає вашій точній вимозі, налаштувати її потрібно досить просто, щоб зробити те, що вам потрібно.


Дивовижна робота, Філіп, дякую за те, що поділився цим Лямбда.
romaninsh

4

Я фактично вирішив цю проблему, клонувавши сховище безпосередньо в збірці кодів:

Передати маркер GitHub:

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

# Виконати клон git у кроці встановлення:

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

Я виявив, що це рішення легше здійснити, не покладається на Lambdas і, хоча виконує два тяги, працює досить надійно.


Куди саме ви ставите - {Ім'я ...}?
Алекс R

Я створюю CodeBuild за допомогою хмарної інформації, але це змінна середовище, яку ви також можете вказати через консоль.
romaninsh

2

Станом на 4 вересня 2018 року 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.Проект CodeBuild


3
Я не бачу, як це відповідає на питання.
Тенсібай
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.