Amazon Web Services für Entwickler, Teil 5

Build-Projekt mit AWS CodeBuild umsetzen

| Autor / Redakteur: Thomas Drilling / Stephan Augsten

AWS CodeBuild bietet vorgefertigte Build-Umgebungen für die gängigsten Programmiersprachen und Werkzeuge.
AWS CodeBuild bietet vorgefertigte Build-Umgebungen für die gängigsten Programmiersprachen und Werkzeuge. (Bild: AWS Germany GmbH)

Mit CodeBuild steht ein voll verwalteter Build-Service in der Cloud zur Verfügung, ähnlich dem Open Build Service von SUSE, aber vollständig integriert mit AWS. Damit können Entwickler ihren auf CodeCommit gehosteten Quellcode kompilieren, Komponententests ausführen und Artefakte erzeugen, die sich dann mit AWS CodeDeploy bereitstellen lassen.

Allgemein ist AWS CodeCommit ein vollständig verwalteter Service zur Quellcode-Kontrolle. Der Dienst integriert sich zwar nahtlos mit anderen AWS-Diensten wie AWS CodePipeline, funktioniert aber wie jeder andere AWS-Service auch für sich alleine.

Mit AWS CodeBuild müssen Entwickler keinen eigenen Entwicklungsserver mehr bereitstellen, verwalten und gegebenenfalls skalieren. Stattdessen bietet AWS CodeBuild vorgefertigte Build-Umgebungen für die gängigsten Programmiersprachen und Build-Tools. Nutzer können diese Umgebungen zudem jederzeit anpassen, um etwa eigene Build-Werkzeuge zu erstellen.

Ausführen von AWS CodeBuild

CodeBuild lässt sich sowohl zum Erstellen als auch zur Testphase einer bestehenden Pipeline in AWS CodePipeline integrieren.
CodeBuild lässt sich sowohl zum Erstellen als auch zur Testphase einer bestehenden Pipeline in AWS CodePipeline integrieren. (Bild: Drilling / AWS)

Entwickler können AWS CodeBuild wahlweise mit der CodeBuild- oder CodePipeline-Konsole nutzen. Darüber hinaus lässt sich das Ausführen über den CLI-Service oder das AWS-SDKs automatisieren. CodeBuild lässt sich sowohl zum Erstellen oder zur Testphase einer bestehenden Pipeline in AWS CodePipeline hinzufügen.

Die Integration mit AWS CodePipeline bietet sich an, dies ist ein kontinuierlicher Bereitstellungsservice, mit dessen Hilfe Entwickler alle für die Freigabe Ihres Codes notwendigen Schritte entwickeln, visualisieren und automatisieren können, einschließlich Code-Build. Dabei versteht AWS unter einer Pipeline einen Workflow, der beschreibt, wie Code-Änderungen das Freigabeverfahren durchlaufen sollen.

Allgemein gestaltet sich das Arbeiten mit AWS CodeBuild etwa so, wie es das folgende Schaubild aus der AWS-Dienste-Beschreibung illustriert:

Der Workflow von AWS CodeBuild im Überblick.
Der Workflow von AWS CodeBuild im Überblick. (Bild: Drilling / AWS)

  • 1. In der Abbildung fungiert das skizzierte Projekt auf Basis der Build-Environment als Eingabe für AWS CodeBuild, wobei jedes Projekt definiert, wie ein Build ausgeführt wird. Hierbei gibt der Entwickler beispielsweise an, „wo“ der Quellcode zu finden ist, „welche“ Build-Umgebung zu verwenden ist, „welche“ Befehle auszuführen sind oder „wo“ die Ausgabe abzulegen ist. Weitere Details zu dieser Planungsphase finden sich im folgenden Abschnitt. Dabei versteht sich jede Build-Umgebung als eine Kombination aus Betriebssystem, Programmiersprachen-Runtime und Tools, die AWS CodeBuild zum Ausführen eines Builds benutzt.
  • 2. AWS CodeBuild verwendet das Projekt wie oben erläutert zum Erstellen der Build Environment und …
  • 3. … lädt den Source Code in die Umgebung hoch. Danach nutzt es die Spezifikation (Build Spec) exakt so, wie sie der Entwickler sie im Build-Projekt definiert hat oder wie sie alternativ unmittelbar im Quellcode stehen. Unter einer Spezifikation versteht AWS eine Sammlung von Build-Befehlen nebst zugehörigen Einstellungen im YAML-Format, die AWS CodeBuild verwendet.
  • 4. Sobald eine Ausgabe existiert, lädt die Build-Umgebung diese in ein Amazon-S3-Bucket hoch. Optional kann die Umgebung auch Jobs durchführen, die der Entwickler in den Spezifikationen festlegt, etwa eine Build-Benachrichtigung an ein Amazon SNS-Topic zu senden.
  • 5. Im Verlauf der Build-Ausführung werden zudem Nachrichten an AWS CodeBuild versendet und Log-Dateien an Amazon CloudWatch Logs ausgeliefert.
  • 6. Dabei kann der Entwickler eine Zusammenfassung der Build-Informationen in der CodeBuild-Konsole verfolgen oder Details hierzu per AWS CLI oder SDKs abrufen. Die Protokolldateien lassen sich in Amazon CloudWatch Logs analysieren. Verwendet der Entwickler hingegen AWS CodePipeline zur Build-Ausführung, erhält er lediglich eingeschränkte Build-Informationen.

Planen eines Build-Projekts

Vor dem Erstellen eines Build-Projektes steht eine sorgfältige Planung. Hierzu muss sich der Entwickler zunächst Gedanken darüber machen, von „wo“ der der Quellcode kommen soll, wobei AWS CodeBuild unterschiedliche Repository-Anbieter unterstützt, neben AWS CodeCommit auch GitHub oder Amazon S3.

Danach muss er sich überlegen, welche Build-Befehle in welcher Reihenfolge auszuführen sind. Per Default lädt AWS CodeBuild die Build-Eingabe von dem angegebenen Repository-Anbieter herunter und lädt die Ausgabe in das anzugebende S3-Bucket hoch. Build-Spezifikationen sind Anweisungen, wie CodeBuild die heruntergeladene Eingabe in die erwartete Ausgabe umwandeln soll. Details dazu finden sich in der Build Spec Reference.

Danach muss der Entwickler entscheiden, welche Laufzeitumgebungen und Tools er für den Build-Prozess benötigt. So hängt beispielsweise der jeweiligen Sprache und Runtime ab, ob man z. B. Ant, Build Maven oder einen Compiler für Java, Ruby oder Python benötigt oder ob man Git, die AWS CLI oder andere Tools braucht.

Dazu muss man wissen, dass die von AWS CodeBuild verwendeten Build-Umgebungen auf Docker-Abbildern basieren, die in einem Repository-Typ gespeichert sein müssen, den AWS CodeBuild unterstützt. Hierzu zählen beispielsweise Docker Hub, das Docker-Image-Repository oder die Amazon Elastic Container Registry (Amazon ECR). Details zum AWS CodeBuild Docker-Image-Repository finden sich in der sehr guten CodeBuild-Dokumentation.

Außerdem muss der Entwickler überlegen, ob er etwaige Ressourcen innerhalb der Amazon Web Services benötigt, die AWS CodeBuild nicht automatisch bereitstellt. Hierbei gilt es auch zu klären, welche Sicherheitsrichtlinien zum Zugriff auf solche Ressourcen erforderlich sind, wozu unter Umständen die standardmäßig bereitgestellte Service-Rolle anzupassen ist.

Schließlich stellt sich noch die Frage, ob eine Zusammenarbeit von AWS CodeBuild mit einer vorhandenen VPC gewünscht ist. Falls ja, benötigt der Entwickler für seine Konfiguration die VPC-ID, die Subnet-IDs und die zugehörige Security-Group-ID. Weitere Details zur VPC-Integration mit CodeBuild finden sich ebenfalls in der CodeBuild-Dokumentation.

Ist die Planungsphase unter Berücksichtigung der skizzierten Vorüberlegungen abgeschlossen, kann man mit dem Erstellen eines Build-Projektes an der Konsole, CLI oder per AWS SDK beginnen. Wie das z. B. an der Code-Build-Konsole funktioniert, zeigen wir im nächsten Teil unserer Workshop-Reihe.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45271920 / Cloud-Umgebungen & PaaS)