Tutorial: Durchführen einer Bereitstellung in Azure Functions mit JenkinsTutorial: Deploy to Azure Functions using Jenkins

Azure Functions ist ein serverloser Computedienst.Azure Functions is a serverless compute service. Mit Azure Functions können Sie Code bedarfsgesteuert ausführen, ohne dass eine Infrastruktur für die Bereitstellung oder Verwaltung verwendet werden muss.Using Azure Functions, you can run code on-demand without provisioning or managing infrastructure. In diesem Tutorial wird beschrieben, wie Sie mit dem Azure Functions-Plug-In eine Java-Funktion in Azure Functions bereitstellen.This tutorial shows how to deploy a Java function to Azure Functions using the Azure Functions plug-in.

VoraussetzungenPrerequisites

Erstellen einer Java-FunktionCreate a Java function

Verwenden Sie zum Erstellen einer Java-Funktion mit dem Java-Runtimestapel entweder das Azure-Portal oder die Azure CLI.To create a Java function with the Java runtime stack, use either the Azure portal or the Azure CLI.

Die folgenden Schritte veranschaulichen, wie Sie mit der Azure CLI eine Java-Funktion erstellen:The following steps show how to create a Java function using the Azure CLI:

  1. Erstellen Sie eine Ressourcengruppe, und ersetzen Sie den Platzhalter <resource_group> durch den Namen Ihrer Ressourcengruppe.Create a resource group, replacing the <resource_group> placeholder with your resource group name.

    az group create --name <resource_group> --location eastus
    
  2. Erstellen Sie ein Azure-Speicherkonto, und ersetzen Sie die Platzhalter durch die entsprechenden Werte.Create an Azure storage account, replacing the placeholders with the appropriate values.

    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.Create the test function app, replacing the placeholders with the appropriate values.

    az functionapp create --resource-group <resource_group> --consumption-plan-location eastus --name <function_app> --storage-account <storage_account>
    

Vorbereiten des Jenkins-ServersPrepare Jenkins server

In den folgenden Schritten wird beschrieben, wie Sie den Jenkins-Server vorbereiten:The following steps explain how to prepare the Jenkins server:

  1. Stellen Sie einen Jenkins-Server bereit.Deploy a Jenkins server on Azure. 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.If you don't already have an instance of the Jenkins server installed, the article, Create a Jenkins server on Azure guides you through the process.

  2. Melden Sie sich per SSH an der Jenkins-Instanz an.Sign in to the Jenkins instance with SSH.

  3. Installieren Sie auf der Jenkins-Instanz Maven, indem Sie den folgenden Befehl verwenden:On the Jenkins instance, install maven using the following command:

    sudo apt install -y maven
    
  4. Installieren Sie auf der Jenkins-Instanz die Azure Functions Core Tools, indem Sie an einer Eingabeaufforderung des Terminals die folgenden Befehle ausführen:On the Jenkins instance, install the Azure Functions Core Tools by issuing the following commands at a terminal prompt:

    wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    sudo apt-get update
    sudo apt-get install azure-functions-core-tools
    
  5. Installieren Sie im Jenkins-Dashboard die folgenden Plug-Ins:In the Jenkins dashboard, install the following plugins:

    • Azure Functions-Plug-InAzure Functions Plug-in
    • EnvInject-Plug-InEnvInject Plug-in
  6. Jenkins benötigt einen Azure-Dienstprinzipal zum Authentifizieren und Zugreifen auf Azure-Ressourcen.Jenkins needs an Azure service principal to authenticate and access Azure resources. 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.Refer to the Deploy to Azure App Service for step-by-step instructions.

  7. Fügen Sie mit dem Azure-Dienstprinzipal in Jenkins den Typ „Microsoft Azure-Dienstprinzipal“ für Anmeldeinformationen hinzu.Using the Azure service principal, add a "Microsoft Azure Service Principal" credential type in Jenkins. Informationen hierzu finden Sie im oben angegebenen Tutorial unter Hinzufügen des Dienstprinzipals zu Jenkins.Refer to the Deploy to Azure App Service tutorial.

Forken des GitHub-BeispielrepositorysFork the sample GitHub repo

  1. Melden Sie sich beim GitHub-Repository für die Beispiel-App für „ungerade“ oder „gerade“ an.Sign in to the GitHub repo for the odd or even sample app.

  2. Wählen Sie in GitHub in der rechten oberen Ecke Fork aus.In the upper-right corner in GitHub, choose Fork.

  3. Folgen Sie den Anweisungen, um Ihr GitHub-Konto auszuwählen und das Forken abzuschließen.Follow the prompts to select your GitHub account and finish forking.

Erstellen einer Jenkins-PipelineCreate a Jenkins Pipeline

In diesem Abschnitt erstellen Sie die Jenkins-Pipeline.In this section, you create the Jenkins Pipeline.

  1. Erstellen Sie im Jenkins-Dashboard eine Pipeline.In the Jenkins dashboard, create a Pipeline.

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

  3. Fügen Sie unter Properties Content (Eigenschafteninhalt) die folgenden Umgebungsvariablen hinzu, und ersetzen Sie die Platzhalter durch die entsprechenden Werte für Ihre Umgebung:Add the following environment variables in Properties Content, replacing the placeholders with the appropriate values for your environment:

    AZURE_CRED_ID=<service_principal_credential_id>
    RES_GROUP=<resource_group>
    FUNCTION_NAME=<function_name>
    
  4. Wählen Sie im Abschnitt Pipeline > Definition die Option Pipeline script from SCM (Pipeline-Skript von SCM).In the Pipeline->Definition section, select Pipeline script from SCM.

  5. Geben Sie die URL Ihres GitHub-Forks und den Skriptpfad („doc/resources/jenkins/JenkinsFile“) für die Verwendung im JenkinsFile-Beispiel ein.Enter your GitHub fork's URL and script path ("doc/resources/jenkins/JenkinsFile") to use in the JenkinsFile example.

    node {
     stage('Init') {
         checkout scm
         }
    
     stage('Build') {
         sh 'mvn clean package'
         }
    
     stage('Publish') {
         azureFunctionAppPublish appName: env.FUNCTION_NAME, 
                                 azureCredentialsId: env.AZURE_CRED_ID, 
                                 filePath: '**/*.json,**/*.jar,bin/*,HttpTrigger-Java/*', 
                                 resourceGroup: env.RES_GROUP, 
                                 sourceDirectory: 'target/azure-functions/odd-or-even-function-sample'
         }
     }
    

Erstellen und BereitstellenBuild and deploy

Nun kann der Jenkins-Auftrag ausgeführt werden.It's now time to run the Jenkins job.

  1. Rufen Sie zuerst den Autorisierungsschlüssel ab, indem Sie die Anleitung im Artikel HTTP-Trigger und -Bindungen in Azure Functions verwenden.First, obtain the authorization key via the instructions in the Azure Functions HTTP triggers and bindings article.

  2. Geben Sie in Ihrem Browser die URL der App ein.In your browser, enter the app's URL. 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.Replace the placeholders with the appropriate values and specify a numeric value for <input_number> as input for the Java function.

    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):You'll see results similar to the following example output (where an odd number - 365 - was used as a test):

    The number 365 is Odd.
    

Bereinigen von RessourcenClean up resources

Falls Sie diese Anwendung nicht weiterverwenden möchten, sollten Sie die von Ihnen erstellten Ressourcen wie folgt löschen:If you're not going to continue to use this application, delete the resources you created with the following step:

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

Nächste SchritteNext steps