ASP.NET-Apps auf AWS Elastic Beanstalk migrieren, Teil 3

Buildspec.yml für CodeBuild erstellen

| Autor / Redakteur: Thomas Drilling / Stephan Augsten

Die YAML-Datei mit den Build-Spezifikationen für AWS CodeBuild.
Die YAML-Datei mit den Build-Spezifikationen für AWS CodeBuild. (Bild: Drilling / AWS)

Wer seine ASP.NET-Anwendungen auf AWS migrieren möchte, muss zunächst ein Quellcode-Repository auf CodeCommit einrichten. Die Vorbereitung der Build-Umgebung ist der nächste Schritt, den wir heute in Angriff nehmen.

Für die Code-Kompilierung kommt bei einer AWS-DevOps-Pipeline der Service CodeBuild zum Einsatz, der für die eigentliche Übersetzung zuständig ist. CodeBuild startet im Wesentlichen einen Container mit einem vom Nutzer angegebenen Docker-Image, das die passende Build-Umgebung bereitstellt.

Anschließend führt CodeBuild eine Reihe von Befehlen aus, um die erforderliche Software zu installieren und den gewünschten Build oder die gewünschten (Unit-)Tests durchzuführen. Schließlich werden die vom Nutzer angegebenen Ausgabedateien - Artefakte - erstellt und in Form einer ZIP-Datei für die nächste Stufe der CodePipeline z. B. für AWS Code Deploy oder Beanstalk auf Amazon S3 hochgeladen.

Die Befehle, die CodeBuild im Container ausführt, werden in einer buildspec.yml-Datei spezifiziert, die Teil des Projekt-Quellcodes ist. Man kann auch eine fertige buildspec-Datei direkt zur CodeBuild-Konfiguration hinzufügen – es ist aber in der Regel komfortabler, die buildspec in der Quellcodeverwaltung zu erstellen und zu verfolgen.

Yaml-Datei für CodeBuild erstellen

Sofern man CodeBuild mit Windows-Containern ausführt, kommt PowerShell als Standard-Kommandozeile für die folgenden Befehle zum Einsatz. Die Datei muss auf den Namen „buildspec.yml“ lauten. Sie wird im Stammverzeichnis des neuen ASP.NET-Projekts zunächst leer angelegt, kann aber auch in Visual Studio dem Projekt hinzugefügt werden.

Für weitere Details zur Struktur und zum Inhalt von buildspec.yml-Dateien müssen wir auf die CodeBuild-Dokumentation verweisen. Das folgende Beispiel ist einen Blog-Eintrag aus dem AWS-Developer-Blog angelehnt. Man muss nur die Werte für PROJECT und DOTNET_FRAMEWORK durch den Namen und die .NET Framework-Zielversion des eigenen Projekts ersetzen.

version: 0.2

env:
   variables:
      PROJECT: WebApplication
      DOTNET_FRAMEWORK: 4.6.1

phases:
   build:
      commands:
         - nuget restore
         - msbuild $env:PROJECT.csproj /p:TargetFrameworkVersion=v$env:DOTNET_FRAMEWORK /p:Configuration=Release /p:DeployIisAppPath="Default Web Site" /p:PackageAsSingleFile=false /p:OutDir=C:\codebuild\artifacts\ /t:Package

artifacts:
   files:
      - '**/*'
   base-directory: 'C:\codebuild\artifacts\_PublishedWebsites\${env:PROJECT}_Package\Archive\'

Phasenweise

An der obigen Datei buildspec.yml lässt sich z. B. erkennen, dass die einzige für diese Beispielanwendung definierte „Phase“ die Erstellung („build“) ist. Wer vor oder nach dem Build weitere Aktionen ausführen muss, kann zusätzlich die Phasen „pre_build“ und „post_build“ hinzufügen. Der jeweils erste Befehl, der in der Build-Phase ausgeführt wird, ist die NuGet-Wiederherstellung, um alle NuGet-Pakete herunterzuladen, auf die das Projekt verweist.

Dann startet MS Build den Build selbst. Mit dem Parameter "/t:Package" wird die Ordnerstruktur für die Web-Bereitstellung generiert, die Elastic Beanstalk für ASP.NET Framework-Anwendungen erwartet. Dabei werden die Dateien „archive.xml“, „parameters.xml“ und „systemInfo.xml“eingeschlossen.

Standardmäßig ist die Ausgabe dieses Build-Typs eine ZIP-Datei. In Verbindung mit AWS CodePipeline komprimiert CodeBuild jedoch immer die „angegebenen“ Artefakt-Dateien, auch wenn diese bereits komprimiert sind.

Um dieses doppelte Komprimieren zu vermeiden, kann man den Parameter „/p:PackageAsSingleFile=false“ verwenden, der die Ordnerstruktur stattdessen in einem Ordner mit dem Namen „Archive“ ausgibt. Der Parameter „/p:OutDir“ gibt an, wo MSBuild die Dateien schreiben soll. In diesem Beispiel wird „C:\codebuild\artifacts\“ verwendet.

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? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46354090 / Web Apps)