Tutorial: Durchführen einer Bereitstellung in Azure Functions mit Jenkins
Wichtig
Viele Azure-Dienste verfügen über Jenkins-Plug-Ins. Einige dieser Plug-Ins werden ab dem 29. Februar 2024 nicht mehr unterstützt. Die Azure CLI ist die derzeit empfohlene Methode zur Integration von Jenkins in Azure-Dienste. Weitere Informationen finden Sie im Artikel Jenkins-Plug-Ins für Azure.
Azure Functions ist ein serverloser Computedienst. Mit Azure Functions können Sie Code bedarfsgesteuert ausführen, ohne dass eine Infrastruktur für die Bereitstellung oder Verwaltung verwendet werden muss. In diesem Tutorial wird beschrieben, wie Sie mit dem Azure Functions-Plug-In eine Java-Funktion in Azure Functions bereitstellen.
Voraussetzungen
- Azure-Abonnement: Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Jenkins-Server: Wenn Sie keinen Jenkins-Server installiert haben, lesen Sie den Artikel " Erstellen eines Jenkins-Servers auf Azure".
Anzeigen des Quellcodes
Den Quellcode für dieses Tutorial finden Sie im Visual Studio China-GitHub-Repository.
Erstellen einer Java-Funktion
Verwenden Sie zum Erstellen einer Java-Funktion mit dem Java-Runtimestapel entweder das Azure-Portal oder die Azure CLI.
Die folgenden Schritte veranschaulichen, wie Sie mit der Azure CLI eine Java-Funktion erstellen:
Erstellen Sie eine Ressourcengruppe, und ersetzen Sie den <resource_group> Platzhalter durch ihren Ressourcengruppennamen.
az group create --name <resource_group> --location eastus
Erstellen Sie ein Azure-Speicherkonto, und ersetzen Sie die Platzhalter durch die entsprechenden Werte.
az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRS
Erstellen Sie die Test-Funktions-App, und ersetzen Sie die Platzhalter durch die entsprechenden Werte.
az functionapp create --resource-group <resource_group> --runtime java --consumption-plan-location eastus --name <function_app> --storage-account <storage_account> --functions-version 2
Vorbereiten des Jenkins-Servers
In den folgenden Schritten wird beschrieben, wie Sie den Jenkins-Server vorbereiten:
Stellen Sie einen Jenkins-Server bereit. Wenn Sie noch keine Instanz des installierten Jenkins-Servers installiert haben, hilft Ihnen die Anleitung im Artikel zum Thema Erstellen eines Jenkins-Servers in Azure weiter.
Melden Sie sich per SSH an der Jenkins-Instanz an.
Installieren Sie in der Jenkins-Instanz die Azure CLI (Version 2.0.67 oder höher).
Installieren Sie Maven mithilfe des folgenden Befehls:
sudo apt install -y maven
Installieren Sie auf der Jenkins-Instanz die Azure Functions Core Tools, indem Sie an einer Eingabeaufforderung des Terminals die folgenden Befehle ausführen:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list' cat /etc/apt/sources.list.d/dotnetdev.list sudo apt-get update sudo apt-get install azure-functions-core-tools-3
Jenkins benötigt einen Azure-Dienstprinzipal zum Authentifizieren und Zugreifen auf Azure-Ressourcen. Eine Schritt-für-Schritt-Anleitung finden Sie unter Tutorial: Bereitstellen über GitHub in Azure App Service mit Continuous Integration und Continuous Deployment von Jenkins.
Vergewissern Sie sich, dass das Plug-In für Anmeldeinformationen installiert ist.
Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.
Wählen Sie unter System Configuration (Systemkonfiguration) die Option Manage plug-in (Plug-In verwalten) aus.
Wählen Sie die Registerkarte Installiert aus.
Geben Sie im Feld Filter den Text
credentials
ein.Vergewissern Sie sich, dass das Plug-In für Anmeldeinformationen installiert ist. Falls nicht, installieren Sie es über die Registerkarte Available (Verfügbar).
Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.
Wählen Sie unter Security (Sicherheit) die Option Manage Credentials (Anmeldeinformationen verwalten) aus.
Wählen Sie unter Credentials (Anmeldeinformationen) die Option (global) aus.
Wählen Sie im Menü die Option Add Credentials (Anmeldeinformationen hinzufügen) aus.
Geben Sie die folgenden Werte für Ihren Microsoft Azure-Dienstprinzipal ein:
- Art: Wählen Sie den Wert aus: Benutzername mit Kennwort.
- Benutzername: Geben Sie den
appId
Dienstprinzipal an, der erstellt wurde. - Kennwort: Geben Sie den
password
(geheimen) Dienstprinzipal an. - ID: Geben Sie den Anmeldeinformationsbezeichner an, z
azuresp
. B. .
Wählen Sie OK aus.
Forken des GitHub-Beispielrepositorys
Melden Sie sich beim GitHub-Repository für die Beispiel-App für „ungerade“ oder „gerade“ an.
Wählen Sie in GitHub in der rechten oberen Ecke Fork aus.
Folgen Sie den Anweisungen, um Ihr GitHub-Konto auszuwählen und das Forken abzuschließen.
Erstellen einer Jenkins-Pipeline
In diesem Abschnitt erstellen Sie die Jenkins-Pipeline.
Erstellen Sie im Jenkins-Dashboard eine Pipeline.
Aktivieren Sie Prepare an environment for the run (Umgebung für die Ausführung vorbereiten).
Wählen Sie im Abschnitt "Pipelinedefinition>" die Option "Pipelineskript" aus SCM aus.
Geben Sie die URL Ihres GitHub-Forks und den Skriptpfad („doc/resources/jenkins/JenkinsFile“) für die Verwendung im JenkinsFile-Beispiel ein.
node { withEnv(['AZURE_SUBSCRIPTION_ID=99999999-9999-9999-9999-999999999999', 'AZURE_TENANT_ID=99999999-9999-9999-9999-999999999999']) { stage('Init') { cleanWs() checkout scm } stage('Build') { sh 'mvn clean package' } stage('Publish') { def RESOURCE_GROUP = '<resource_group>' def FUNC_NAME = '<function_app>' // login Azure withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) { sh ''' az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID az account set -s $AZURE_SUBSCRIPTION_ID ''' } sh 'cd $PWD/target/azure-functions/odd-or-even-function-sample && zip -r ../../../archive.zip ./* && cd -' sh "az functionapp deployment source config-zip -g $RESOURCE_GROUP -n $FUNC_NAME --src archive.zip" sh 'az logout' } } }
Erstellen und Bereitstellen
Nun kann der Jenkins-Auftrag ausgeführt werden.
Rufen Sie zuerst den Autorisierungsschlüssel ab, indem Sie die Anleitung im Artikel HTTP-Trigger und -Bindungen in Azure Functions verwenden.
Geben Sie in Ihrem Browser die URL der App ein. Ersetzen Sie die Platzhalter durch die entsprechenden Werte, und geben Sie einen numerischen Wert für <input_number> als Eingabe für die Java-Funktion an.
https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>
Es werden Ergebnisse angezeigt, die der folgenden Beispielausgabe ähneln (zu Testzwecken wurde die ungerade Zahl 365 verwendet):
The number 365 is Odd.
Bereinigen von Ressourcen
Falls Sie diese Anwendung nicht weiterverwenden möchten, sollten Sie die von Ihnen erstellten Ressourcen wie folgt löschen:
az group delete -y --no-wait -n <resource_group>