CI/CD für MicroProfile-Apps mit Azure Pipelines
Dieses Tutorial zeigt Ihnen, wie Sie mithilfe von Azure Pipelines mühelos einen CI/CD-Releasezyklus (Continuous Integration/Continuous Deployment) zum Bereitstellen ihrer MicroProfile Java EE-Anwendung in einer Azure-Web-App für Container-Instanz einrichten können. Die MicroProfile-App in diesem Tutorial verwendet ein Payara Micro-Basis-Image, um eine WAR-Datei zu erstellen.
FROM payara/micro:5.182
COPY target/*.war $DEPLOY_DIR/ROOT.war
EXPOSE 8080
Sie starten den Azure Pipelines-Containerprozess, indem Sie ein Docker-Image erstellen und das Containerimage in eine Azure Container Registry (ACR) pushen. Sie schließen den Prozess ab, indem Sie eine Azure Pipelines-Releasepipeline erstellen und das Containerimage in einer Web-App bereitstellen.
Voraussetzungen
Erstellen Sie im Azure-Portal eine Azure Container Registry.
Erstellen Sie im Azure-Portal eine Azure Web-App für Container. Wählen Sie Linux als Betriebssystem aus, und wählen Sie für Container konfigurieren die Option Schnellstart als Imagequelle aus.
Kopieren und speichern Sie die Klon-URL aus dem GitHub-Repository unter https://github.com/Azure-Samples/microprofile-hello-azure.
Registrieren Sie sich bei Ihrer Azure DevOps-Organisation, oder melden Sie sich dort an, und erstellen Sie ein neues Projekt.
Importieren Sie das GitHub-Beispielrepository in Azure Repos:
- Wählen Sie auf Ihrer Azure DevOps-Projektseite im linken Navigationsbereich Repos aus.
- Wählen Sie unter oder Repository importieren den Befehl Importieren aus.
- Geben Sie unter Klon-URL die von Ihnen gespeicherte Git-Klon-URL ein, und wählen Sie Importieren aus.
Erstellen einer Buildpipeline
Die Continuous Integration-Buildpipeline in Azure Pipelines führt jedes Mal automatisch alle Buildaufgaben aus, wenn in der Java EE-Quell-App ein Commit stattfindet. In diesem Beispiel verwendet Azure Pipelines Maven zum Erstellen des Java-MicroProfile-Projekts.
Wählen Sie auf Ihrer Azure DevOps-Projektseite im linken Navigationsbereich Pipelines>Builds aus.
Wählen Sie Neue Pipeline aus.
Wählen Sie Klassischen Editor verwenden aus, um eine Pipeline ohne YAML zu erstellen.
Stellen Sie sicher, dass Ihr Projektname und das importierte GitHub-Repository in den Feldern angezeigt werden, und wählen Sie Weiter aus.
Wählen Sie in der Liste der Vorlagen Maven aus, und wählen Sie anschließend Übernehmen aus.
Stellen Sie im rechten Bereich sicher, dass in der Dropdownliste Agentpool der Eintrag Hosted Ubuntu 1604 angezeigt wird.
Hinweis
Diese Einstellung teilt Azure Pipelines mit, welcher Buildserver verwendet werden soll. Sie können auch Ihren privaten, angepassten Buildserver verwenden.
Um die Pipeline für Continuous Integration zu konfigurieren, wählen Sie im linken Bereich die Registerkarte Trigger aus, und aktivieren Sie dann das Kontrollkästchen neben Continuous Integration aktivieren.
Wählen Sie am oberen Rand der Seite das Dropdownmenü neben Speichern und in Warteschlange einreihen aus, und wählen Sie dann Speichern aus.
Erstellen eines Docker-Buildimages
Azure Pipelines verwendet eine Dockerfile-Datei mit einem Basisimage von Payara Micro, um ein Docker-Image zu erstellen.
Wählen Sie die Registerkarte Aufgaben aus, und wählen Sie dann das Pluszeichen + neben Agent-Auftrag 1 aus, um die Aufgabe hinzuzufügen.
Wählen Sie im rechten Bereich Docker aus der Liste der Vorlagen aus, und wählen Sie anschließend Hinzufügen aus.
Wählen Sie im linken Bereich buildAndPush aus, und geben Sie im rechten Bereich eine Beschreibung in das Feld Anzeigename ein.
Wählen Sie unter Containerrepository neben dem Feld Containerregistrierung die Option Neu aus.
Füllen Sie das Dialogfeld Dienstverbindung für Docker-Registrierung hinzufügen wie folgt aus:
Feld Wert Registrierungstyp Wählen Sie Azure Container Registry aus. Verbindungsname Geben Sie einen Namen für die Verbindung ein. Azure-Abonnement Wählen Sie in der Dropdownliste Ihr Azure-Abonnement aus, und falls notwendig, wählen Sie Autorisieren aus. Azure Container Registry Wählen Sie Ihren Azure Container Registry-Namen aus dem Dropdown aus. Wählen Sie OK aus.
Hinweis
Wenn Sie Docker-Hub oder eine andere Registrierung verwenden, wählen Sie Docker Hub oder Andere anstelle von Azure Container Registry neben Registrierungstyp aus. Geben Sie dann die Anmeldeinformationen und Verbindungsinformationen für Ihre Containerregistrierung an.
Wählen Sie unter Befehle aus der Dropdownliste Befehl die Option Build aus.
Wählen Sie die Auslassungspunkte ... neben dem Feld Dockerfile aus, wechseln Sie zu der Dockerfile-Datei, und wählen Sie sie aus Ihrem GitHub-Repository aus, und wählen Sie dann OK aus.
Geben Sie unter Tags in einer neuen Zeile Neueste ein.
Wählen Sie am oberen Rand der Seite das Dropdownmenü neben Speichern und in Warteschlange einreihen aus, und wählen Sie dann Speichern aus.
Pushen des Docker-Images in ACR
Azure Pipelines überträgt das Docker-Image per Push in Ihre Azure Container Registry und verwendet es, um die MicroProfile-API-App als Container-Java-Web-App auszuführen.
Da Sie Docker in Azure Pipelines verwenden, erstellen Sie eine andere Docker-Vorlage, indem Sie die Schritte unter Erstellen eines Docker-Buildimages wiederholen. Wählen Sie diesmal im Dropdownmenü Befehl die Option Push aus.
Wählen Sie das Dropdownmenü neben Speichern und in Warteschlange einreihen aus, und wählen Sie dann Speichern und in Warteschlange einreihen aus.
Stellen Sie im Popup Pipeline ausführen sicher, dass unter Agentpool der Eintrag Hosted Ubuntu 1604 ausgewählt ist, und wählen Sie Speichern und ausführen aus.
Nachdem der Buildprozess abgeschlossen wurde, können Sie den Link auf der Seite Build auswählen, um den Erfolg des Buildprozesses zu überprüfen und weitere Details anzuzeigen.
Releasepipeline erstellen
Eine Continuous Releasepipeline in Azure Pipelines löst die Bereitstellung in einer Zielumgebung wie Azure automatisch aus, sobald der Buildprozess erfolgreich abgeschlossen wurde. Sie können Releasepipeline für Umgebungen wie Entwicklung, Testen, Staging oder Produktion erstellen.
Wählen Sie auf Ihrer Azure DevOps-Projektseite im linken Navigationsbereich Pipelines>Releases aus.
Wählen Sie Neue Pipeline aus.
Wählen Sie in der Vorlagenliste die Option Java-App in Azure App Service bereitstellen aus, und wählen Sie dann Anwenden aus.
Ändern Sie im Popup Fenster Stufe 1 in einen Stufennamen wie Dev, Test, Staging oder Produktion, und schließen Sie dann das Fenster.
Wählen Sie unter Artefakte im linken Bereich Hinzufügen aus, um Artefakte aus der Buildpipeline mit der Releasepipeline zu verknüpfen.
Wählen Sie im rechten Bereich Ihre Buildpipeline in der Dropdownliste unter Quelle (Buildpipeline) aus, und wählen Sie dann Hinzufügen aus.
Wählen Sie den Link in der Stufe Produktion aus, um Stufenaufgaben anzuzeigen.
Füllen Sie im rechten Bereich das Formular wie folgt aus:
Feld Wert Azure-Abonnement Wählen Sie in der Dropdownliste Ihr Azure-Abonnement aus. App-Typ Wählen Sie aus dem Dropdown Web-App für Container (Linux) aus. App Service-Name Wählen Sie in der Dropdownliste Ihre ACR-Instanz aus. Registrierung oder Namespaces Geben Sie Ihren ACR-Namen in das Feld ein. Geben Sie beispielsweise mymicroprofileregistry.azure.io ein. Repository Geben Sie das Repository ein, das Ihr Docker-Image enthält. Wählen Sie im linken Bereich WAR in Azure App Service bereitstellen aus, und geben Sie im rechten Bereich das Tag Neueste in das Feld Tag ein.
Wählen Sie im linken Bereich Auf Agent ausführen aus und im rechten Bereich in der Dropdownliste Agentpool die Option Hosted Ubuntu 1604.
Umgebungsvariablen einrichten
Fügen Sie Umgebungsvariablen hinzu, und definieren Sie diese, um während der Bereitstellung eine Verbindung mit der Containerregistrierung herzustellen.
Wählen Sie die Registerkarte Variablen aus, und wählen Sie dann Hinzufügen aus, um die folgenden Variablen für Ihre Containerregistrierungs-URL, den Benutzernamen und das Kennwort hinzuzufügen.
Name Wert registry.url Geben Sie Ihre Containerregistrierungs-URL ein. Beispiel: https://mymicroprofileregistry.azure.io registry.username Geben Sie den Benutzernamen für die Registrierung ein. registry.password Geben Sie das Kennwort für die Registrierung ein. Wählen Sie aus Sicherheitsgründen das Schlosssymbol aus, um den Kennwortwert auszublenden. Wählen Sie auf der Registerkarte Aufgaben im linken Bereich WAR in Azure App Service bereitstellen aus.
Erweitern Sie im rechten Bereich Anwendungs- und Konfigurationseinstellungen, und wählen Sie dann die Auslassungspunkte ... neben dem Feld App-Einstellungen aus.
Wählen Sie im Popup App-Einstellungen den Befehl Hinzufügen aus, um die App-Einstellungsvariablen zu definieren und zuzuweisen:
Name Wert DOCKER_REGISTRY_SERVER_URL $(registry.url) DOCKER_REGISTRY_SERVER_USERNAME $(registry.username) DOCKER_REGISTRY_SERVER_PASSWORD $(registry.password) Wählen Sie OK aus.
Einrichten der fortlaufenden Bereitstellung
Führen Sie die folgenden Schritte aus, um Continuous Deployment zu aktivieren:
Wählen Sie auf der Registerkarte Pipeline unter Artefakte das Blitzsymbol im Buildartefakt aus.
Legen Sie im rechten Bereich den Continuous Deployment-Trigger auf Aktiviert fest.
Wählen Sie oben rechts Speichern aus und dann noch mal Speichern.
Bereitstellen der Java-App
Nachdem Sie nun CI/CD aktiviert haben, werden durch die Änderung des Quellcodes Builds und Releases automatisch erstellt und ausgeführt. Sie können Releases auch wie folgt manuell erstellen und ausführen:
Wählen Sie oben rechts auf der Seite „Releasepipeline“ Release erstellen aus.
Wählen Sie auf der Seite Neues Release erstellen den Stufennamen unter Stufen für einen Trigger werden von automatisiert in manuell geändert aus.
Klicken Sie auf Erstellen.
Wählen Sie den Releasenamen aus, zeigen Sie auf die Stufe, oder wählen Sie eine aus, und wählen Sie dann Bereitstellen aus.
Testen der Java-Web-App
Testen Sie nach erfolgreichem Abschluss der Bereitstellung Ihre Web-App.
Kopieren Sie die Web-App-URL aus dem Azure-Portal.
Geben Sie die URL in Ihrem Webbrowser ein, um Ihre App auszuführen. Auf der Webseite sollte Hello Azure! angezeigt werden.