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

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:

  1. Erstellen Sie eine Ressourcengruppe, und ersetzen Sie den <resource_group> Platzhalter durch ihren Ressourcengruppennamen.

    az group create --name <resource_group> --location eastus
    
  2. 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    
    
  3. 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:

  1. 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.

  2. Melden Sie sich per SSH an der Jenkins-Instanz an.

  3. Installieren Sie in der Jenkins-Instanz die Azure CLI (Version 2.0.67 oder höher).

  4. Installieren Sie Maven mithilfe des folgenden Befehls:

    sudo apt install -y maven
    
  5. 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
    
  6. 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.

  7. Vergewissern Sie sich, dass das Plug-In für Anmeldeinformationen installiert ist.

    1. Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.

    2. Wählen Sie unter System Configuration (Systemkonfiguration) die Option Manage plug-in (Plug-In verwalten) aus.

    3. Wählen Sie die Registerkarte Installiert aus.

    4. Geben Sie im Feld Filter den Text credentials ein.

    5. Vergewissern Sie sich, dass das Plug-In für Anmeldeinformationen installiert ist. Falls nicht, installieren Sie es über die Registerkarte Available (Verfügbar).

    The Credentials Plug-in needs to be installed.

  8. Wählen Sie im Menü die Option Manage Jenkins (Jenkins verwalten) aus.

  9. Wählen Sie unter Security (Sicherheit) die Option Manage Credentials (Anmeldeinformationen verwalten) aus.

  10. Wählen Sie unter Credentials (Anmeldeinformationen) die Option (global) aus.

  11. Wählen Sie im Menü die Option Add Credentials (Anmeldeinformationen hinzufügen) aus.

  12. 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. .
  13. Wählen Sie OK aus.

Forken des GitHub-Beispielrepositorys

  1. Melden Sie sich beim GitHub-Repository für die Beispiel-App für „ungerade“ oder „gerade“ an.

  2. Wählen Sie in GitHub in der rechten oberen Ecke Fork aus.

  3. 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.

  1. Erstellen Sie im Jenkins-Dashboard eine Pipeline.

  2. Aktivieren Sie Prepare an environment for the run (Umgebung für die Ausführung vorbereiten).

  3. Wählen Sie im Abschnitt "Pipelinedefinition>" die Option "Pipelineskript" aus SCM aus.

  4. 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.

  1. Rufen Sie zuerst den Autorisierungsschlüssel ab, indem Sie die Anleitung im Artikel HTTP-Trigger und -Bindungen in Azure Functions verwenden.

  2. 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>
    
  3. 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>

Nächste Schritte