Freigeben über


Anleitung: Bereitstellung in Azure Functions mithilfe von Jenkins

Von Bedeutung

Während viele Azure-Dienste über Jenkins-Plug-Ins verfügen, endete der Support für die meisten dieser Plug-Ins ab dem 29. Februar 2024. Azure CLI ist die derzeit empfohlene Methode zum Integrieren 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 bei Bedarf ausführen, ohne Infrastruktur bereitzustellen oder zu verwalten. In diesem Lernprogramm wird gezeigt, wie Sie eine Java-Funktion mithilfe des Azure Functions-Plug-Ins für Azure Functions bereitstellen.

Voraussetzungen

Anzeigen des Quellcodes

Der für dieses Lernprogramm verwendete Quellcode befindet sich im GitHub-Repository von Visual Studio China.

Erstellen einer Java-Funktion

Um eine Java-Funktion mit dem Java-Laufzeitstapel zu erstellen, verwenden Sie entweder das Azure-Portal oder die Azure CLI.

Die folgenden Schritte zeigen, wie Sie eine Java-Funktion mithilfe der Azure CLI 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 Testfunktions-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 erläutert, wie der Jenkins-Server vorbereitet wird:

  1. Stellen Sie einen Jenkins-Server in Azure bereit. Wenn Sie noch keine Instanz des Jenkins-Servers installiert haben, führt Sie der Artikel "Erstellen eines Jenkins-Servers auf Azure " durch den Prozess.

  2. Melden Sie sich bei der Jenkins-Instanz mit SSH an.

  3. Installieren Sie auf der Jenkins-Instanz Az CLI, Version 2.0.67 oder höher.

  4. Installieren Sie Maven mit dem folgenden Befehl:

    sudo apt install -y maven
    
  5. Installieren Sie auf der Jenkins-Instanz die Azure Functions Core Tools , indem Sie die folgenden Befehle an einer Terminalaufforderung ausgeben:

    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, um Azure-Ressourcen zu authentifizieren und darauf zuzugreifen. Schrittweise Anleitungen finden Sie in der Bereitstellung für Azure App Service .

  7. Stellen Sie sicher, dass das Anmeldeinformationen-Plug-In installiert ist.

    1. Wählen Sie im Menü "Jenkins verwalten" aus.

    2. Wählen Sie unter "Systemkonfiguration" die Option "Plug-In verwalten" aus.

    3. Wählen Sie die Registerkarte "Installiert" aus.

    4. Geben Sie im Filterfeld die Zeichenfolge credentialsein.

    5. Stellen Sie sicher, dass das Anmeldeinformationen-Plug-In installiert ist. Andernfalls müssen Sie sie über die Registerkarte "Verfügbar " installieren.

    Das Anmeldeinformations-Plug-In muss installiert werden.

  8. Wählen Sie im Menü "Jenkins verwalten" aus.

  9. Wählen Sie unter "Sicherheit" die Option "Anmeldeinformationen verwalten" aus.

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

  11. Wählen Sie im Menü " Anmeldeinformationen hinzufügen" aus.

  12. Geben Sie die folgenden Werte für Ihren Microsoft Azure-Dienstprinzipal ein:

    • Art: Wählen Sie den folgenden Wert aus: Benutzername mit Kennwort.
    • Benutzername: Geben Sie den appId des erstellten Dienstprinzipals an.
    • Kennwort: Geben Sie das password (geheime) Dienstprinzipal-Geheimnis an.
    • ID: Geben Sie die Anmelde-ID an, z.B. azuresp.
  13. Wählen Sie OK aus.

Das GitHub-Beispiel-Repo forked

  1. Melden Sie sich bei dem GitHub-Repository für die ungerade oder gerade Beispiel-Anwendung an.

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

  3. Folgen Sie den Anweisungen, um zur Auswahl Ihres GitHub-Kontos und das Forking 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 "Vorbereiten einer Umgebung für die Ausführung".

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

  4. Geben Sie die URL und den Skriptpfad Ihrer GitHub-Fork ein ("doc/resources/jenkins/ JenkinsFile"), die im Beispiel "JenkinsFile" verwendet werden sollen.

     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

Es ist jetzt an der Zeit, den Jenkins-Auftrag auszuführen.

  1. Rufen Sie zunächst den Autorisierungsschlüssel über die Anweisungen im Artikel " HTTP-Trigger und Bindungen von Azure Functions " ab.

  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. Die Ergebnisse werden ähnlich wie die folgende Beispielausgabe angezeigt (wobei eine ungerade Zahl - 365 - als Test verwendet wurde):

    The number 365 is Odd.
    

Bereinigen von Ressourcen

Wenn Sie diese Anwendung nicht weiterhin verwenden werden, löschen Sie die Ressourcen, die Sie mit dem folgenden Schritt erstellt haben:

az group delete -y --no-wait -n <resource_group>

Nächste Schritte