CodeBuild - wiele artefaktów wejściowych w potoku AWS


12

Buduję AWS CodePipeline, który zależy od dwóch repozytoriów źródłowych. Jeśli kroku „CodeBuild” jest określona z wieloma artefaktami wejściowe, a następnie pojawia się błąd: .. declares 2 input artifacts which is more than the maximum count. Dokumentacja ma ścisły wymóg, aby CodeBuild miał tylko jeden artefakt wejściowy.

Z drugiej strony Lambdas nie mają tego ograniczenia. Szukałem sposobu, w jaki Lambda może „scalić” dwa artefakty w jeden, który mogę przekazać do CodeBuild. Niestety informacje na ten temat są dość ograniczone.

Czy ktoś ma działającą CodePipeline Lambda, która połączyłaby dwa Artefakty w jeden?

wprowadź opis zdjęcia tutaj

Uwaga : Dokumentacja dotycząca uzyskiwania dostępu do artefaktów .

Odpowiedzi:


6

Mieliśmy dokładnie ten sam problem - nasz etap budowy musi wykorzystywać informacje z dwóch oddzielnych lokalizacji.

Aby rozwiązać to w ogólny sposób, stworzyłem dwa Lambdy ogólnego przeznaczenia - jeden, który scali artefakty, i drugi, który wydobywa określone pliki z artefaktu. W obu przypadkach tworzony jest nowy artefakt, który można przekazać do kolejnego etapu CodePipeline.

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

Jeśli nie spełnia dokładnie twoich wymagań, powinno być łatwo dostroić się, aby zrobić to, czego potrzebujesz.


Świetna robota, Filipie, dziękuję za udostępnienie tej Lambdy.
romaninsh

4

Naprawdę rozwiązałem problem, klonując repozytorium bezpośrednio w programie budującym:

Przekaż token GitHub:

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

# Uruchom git clone w kroku instalacji:

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

Odkryłem, że to rozwiązanie jest łatwiejsze do wdrożenia, nie opiera się na Lambdas i chociaż wykonuje dwa ściągnięcia, działa całkiem niezawodnie.


Gdzie dokładnie umieszczasz - {Name ...}?
Alex R

CodeBuild tworzę za pomocą chmury, ale jest to zmienna środowiskowa, którą możesz określić również za pomocą konsoli.
romaninsh

2

Od 4 września 2018 r. Amazon dodał obsługę wielu źródeł wejściowych:

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

Z dokumentacji :

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

Możesz przejrzeć CodeBuild. Plik BuildScpec można umieścić w projekcie CodeBuild.Projekt CodeBuild


3
Nie widzę odpowiedzi na to pytanie.
Tensibai
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.