Kann AWS CodePipeline mehrere Feature-Zweige verfolgen und für jeden Tests durchführen?

Lesezeit: 4 Minuten

Mit Bitbucket und Bamboo konnte Bamboo jeden Feature-Branch verfolgen und Tests für jeden durchführen, sodass ich zum Zeitpunkt der Pull-Anfrage sehen konnte, ob der Branch seine Unit-Tests bestanden hat.

Mit AWS CodePipelinekann ich nicht sagen, ob ich in der Lage bin, jeden Feature-Zweig zu verfolgen und vor dem Zusammenführen Tests darauf laufen zu lassen.

Ist das möglich? Wenn ja, verweisen Sie mich bitte auf die Dokumentation.

Benutzer-Avatar
Markus R

CodePipeline ist nicht das richtige Tool für Sie. Erstellen Sie ein separates, eigenständiges CodeBuild-Projekt. Es funktioniert ähnlich wie andere CI-Dienste von Drittanbietern wie Travis.

Es gibt eine Reihe von Möglichkeiten, wie Sie diese „CI-Phase“ mit einer Continuous Delivery-Pipeline verbinden können, wofür CodePipeline gedacht ist:

  1. Am einfachsten ist es, CodeBuild einfach als Gate zu verwenden, um Änderungen an den Source-Branch der Pipeline, normalerweise Master, zu pushen.
  2. Sie können auch in CodeBuild erstellte Artefakte an ECR oder S3 übertragen und eine Pipeline von diesen Ereignissen auslösen.
  3. Wenn Sie ausgefallener werden möchten, verwenden Sie andere Jiggery-Pokery, z. Ereignisse, SQS und Lambda.

Ich hatte die gleiche Verwirrung, da CodeBuild und CodePipeline eng miteinander verbunden, aber auch separate Tools sind. CodePipeline verwendet CodeBuild, aber jeder hat seinen eigenen Git-Connector, der anders funktioniert.

  • Ist es noch gültig? Ich kann “Jedes Mal neu erstellen, wenn eine Codeänderung in dieses Repository übertragen wird” nirgendwo in Codebuild finden 🙁 Ohne es ist es im Grunde nutzlos.

    – irekm

    27. September 2021 um 19:11 Uhr

  • Danke – die Benutzeroberfläche scheint sich geändert zu haben.

    – Markus R

    11. März um 5:53

Benutzer-Avatar
Brandon

Ich suchte nach einer Lösung für genau dieses Problem. Schließlich entschied ich mich dafür, einen CodeBuild zu haben, der von einer Verzweigungs-Regex ausgelöst werden kann, um die Pipeline zu beginnen, indem ein Archiv auf einen bestimmten S3-Schlüssel verschoben wird. In meinem Fall ließ ich CodeBuild auch meinen vollständigen Build-/Testprozess durchführen, aber Sie könnten CodeBuild auch so konfigurieren, dass es nur den Code abruft und ihn auf die S3-Taste drückt, die Ihre CodePipeline auslöst.

Hier ist ein Teil einer Beispiel-CodeBuild-Konfiguration, die 2 Zweigen entspricht:
NmQcLZweigfilter zeigt, der 2 Zweige abgleicht”>

Dann stelle ich das CodeBuild-Artefakt so ein, dass es zu einem einzelnen Schlüssel in einem einzelnen Bucket geht.

Dann richte ich eine CodePipeline mit einer Amazon S3-Quelle ein, die auf denselben Schlüssel/Bucket verweist.

  • Können Sie mehr Informationen über die Zweig-Regex geben? An einem Beispiel möglich. Ich habe das nicht gesehen. Das könnte perfekt sein.

    – Ignoranz

    22. Oktober 2018 um 0:16 Uhr

  • @aidan.plenert.macdonald ist nur für BitBucket, Github und GitHub Enterprise verfügbar, und wenn Sie Ihr eigenes Repository verwenden, kein öffentliches Repository (docs.aws.amazon.com/codebuild/latest/userguide/…)

    – Nixverstand

    14. November 2018 um 5:27 Uhr

  • Es gibt keine solche Sache Branch filter Option in codeBuild.

    – Anum Sheraz

    12. September 2019 um 15:53 ​​Uhr

Eine weitere Überprüfung zeigt, dass Sie mit Cloudformation den Zweig auswählen können, der das ist CodePipeline-Tracks,

AWS CodeCommit (CodeCommit)

  • PollForSourceChanges¹ (Optional)
  • Repository-Name (erforderlich)
  • Filialname (erforderlich)

Sie können ein Beispiel für eine vollständige Vorlage sehen, aber die CodePipeline-Phase sieht so aus:

Name: CheckoutSourceTemplate
ActionTypeId:
  Category: Source
  Owner: AWS
  Version: 1
  Provider: CodeCommit
Configuration:
  PollForSourceChanges: True
  RepositoryName: !GetAtt [PipelineRepo, Name]
  BranchName: master
OutputArtifacts:
  - Name: TemplateSource
RunOrder: 1

Mit CodeCommit Reposkönnen Sie erstellen Löst aus die diese Trigger verwenden können Starten Sie eine Lambda-Funktion,

Sie können Lambda-Funktionen konfigurieren, indem Sie den Trigger in der Lambda-Konsole als Teil der Funktion erstellen. Dies ist die einfachste Methode, da Trigger, die in der Lambda-Konsole erstellt wurden, automatisch die Berechtigungen enthalten, die für AWS CodeCommit zum Aufrufen der Lambda-Funktion erforderlich sind. Wenn Sie den Auslöser in AWS CodeCommit erstellen, müssen Sie eine Richtlinie einschließen, damit AWS CodeCommit die Funktion aufrufen kann. Weitere Informationen finden Sie unter Erstellen Sie einen Auslöser für eine vorhandene Lambda-Funktion und Beispiel 2: Erstellen Sie eine Richtlinie für die AWS Lambda-Integration.

Was also passieren könnte, ist, eine CloudFormation-Vorlage wie oben einzurichten, um den Master-Branch zu verfolgen. Lassen Sie dann CodeCommit bei Repository-Änderungen auslösen und rufen Sie eine Lambda-Funktion auf, die Boto3 verwendet get_pipeline um die Master-Branch-Pipeline abzurufen.

Dann entweder verwenden update_pipeline oder create_pipeline B. um eine Phase zur bestehenden Master-Branch-Pipeline hinzuzufügen oder eine völlig neue Pipeline zu erstellen, die die gewünschten zusätzlichen Branches verfolgt.

Auf diese Weise kann die CodePipeline die Feature-Branches auf nützliche Weise verfolgen.

Mehrere Codebuild-Projekte, um mehrere Zweige zu erstellen, Ihre Artefakte in s3 abzulegen und von dort mit der Codepipeline aufzunehmen.

Was ich versuche zu erreichen, ist: Einen anderen Zweig unter demselben Codebuild-Projekt auschecken, um eine Diff-Prüfung durchführen und Pakete für Sitecore-Elemente generieren zu können. dh release\branch <=> master => dann nur Paket der neusten Elemente erzeugen, release\branch project, dann zip.

1245220cookie-checkKann AWS CodePipeline mehrere Feature-Zweige verfolgen und für jeden Tests durchführen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy