Zelfstudie: Implementeren in Azure Functions met behulp van Jenkins

Belangrijk

Veel Azure-services hebben Jenkins-invoegtoepassingen. Sommige van deze invoegtoepassingen worden vanaf 29 februari 2024 niet meer ondersteund. Azure CLI is momenteel de aanbevolen manier om Jenkins te integreren met Azure-services. Raadpleeg het artikel Jenkins-invoegtoepassingen voor Azure voor meer informatie.

Azure Functions is een ‘serverloze’ rekenservice. Met Azure Functions kunt u op aanvraag code uitvoeren zonder infrastructuur te hoeven inrichten of beheren. Deze zelfstudie laat zien hoe u een Java-functie implementeert in Azure Functions met behulp van de Azure Functions-invoegtoepassing.

Vereisten

De broncode weergeven

De voor dit artikel gebruikte broncode bevindt zich in de opslagplaats Visual Studio China van GitHub.

Java-functie maken

Als u een Java-functie wilt maken met de Java-runtimestack, kunt u de Azure-portal of de Azure CLI gebruiken.

In de volgende stappen kunt u zien hoe u een Java-functie maakt met de Azure CLI:

  1. Maak een resourcegroep en vervang de tijdelijke aanduiding resource_group> door de <naam van de resourcegroep.

    az group create --name <resource_group> --location eastus
    
  2. Maak een Azure-opslagaccount en vervang de tijdelijke aanduidingen door de desbetreffende waarden.

    az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRS    
    
  3. Maak de testfunctie-app en vervang de tijdelijke aanduidingen door de desbetreffende waarden.

    az functionapp create --resource-group <resource_group> --runtime java --consumption-plan-location eastus --name <function_app> --storage-account <storage_account> --functions-version 2
    

Jenkins-server voorbereiden

In de volgende stappen wordt uitgelegd hoe de Jenkins-server wordt voorbereid:

  1. Implementeer een Jenkins-server in Azure. Als u nog geen exemplaar van de Jenkins-server hebt geïnstalleerd, wordt dit proces uitgelegd in het artikel Een Jenkins-server maken in Azure.

  2. Meld u aan bij het Jenkins-exemplaar door middel van SSH.

  3. Installeer Az CLI, versie 2.0.67 of hoger op het Jenkins-exemplaar.

  4. Installeer Maven met behulp van de volgende opdracht:

    sudo apt install -y maven
    
  5. Installeer vanaf een terminalprompt Azure Functions Core Tools op het Jenkins-exemplaar met de volgende opdrachten:

    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. Voor Jenkins is een Azure-service-principal vereist voor het verifiëren en openen van Azure-resources. Zie Deploy to Azure App Service (Implementeren in Azure App Service) voor stapsgewijze instructies.

  7. Zorg ervoor dat de invoegtoepassing Referenties is geïnstalleerd.

    1. Selecteer Jenkins beheren in het menu.

    2. Selecteer onder Systeemconfiguratie de optie Invoegtoepassing Beheren.

    3. Selecteer het tabblad Geïnstalleerd .

    4. Voer in het filterveld in credentials.

    5. Controleer of de invoegtoepassing Referenties is geïnstalleerd. Zo niet, dan moet u deze installeren vanaf het tabblad Beschikbaar .

    The Credentials Plug-in needs to be installed.

  8. Selecteer Jenkins beheren in het menu.

  9. Selecteer Onder Beveiliging de optie Referenties beheren.

  10. Selecteer (globaal) onder Referenties.

  11. Selecteer Referenties toevoegen in het menu.

  12. Voer de volgende waarden in voor uw Microsoft Azure-service-principal:

    • Soort: Selecteer de waarde: Gebruikersnaam met wachtwoord.
    • Gebruikersnaam: Geef de appId gemaakte service-principal op.
    • Wachtwoord: geef het password (geheim) van de service-principal op.
    • Id: Geef de referentie-id op, zoals azuresp.
  13. Selecteer OK.

De GitHub-voorbeeldopslagplaats splitsen

  1. Meld u aan bij de GitHub-opslagplaats voor de oneven of zelfs voorbeeld-app.

  2. Kies Fork in de rechterbovenhoek in GitHub.

  3. Volg de aanwijzingen om uw GitHub-account te selecteren en de fork te voltooien.

Jenkins-pijplijn maken

In deze sectie maakt u de Jenkins-pijplijn.

  1. Maak een pijplijn in het Jenkins-dashboard.

  2. Schakel Prepare an environment for the run in.

  3. Selecteer in de sectie Pijplijndefinitie> het pijplijnscript in SCM.

  4. Voer de URL en het scriptpad van uw GitHub-fork in ('doc/resources/jenkins/JenkinsFile') voor gebruik in het JenkinsFile-voorbeeld.

     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'
             }
         }
     }
    

Bouwen en implementeren

U kunt nu de Jenkins-taak uitvoeren.

  1. Haal eerst de autorisatiesleutel op via de instructies in het artikel HTTP-triggers en -bindingen in Azure Functions.

  2. Voer in de browser de URL naar de app in. Vervang de tijdelijke aanduidingen door de juiste waarden en geef een numerieke waarde op voor <input_number> als invoer voor de Java-functie.

    https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>
    
  3. De resultaten die u te zien krijgt, zijn soortgelijk aan de volgende voorbeelduitvoer (waarin een oneven getal (365) als een testwaarde is gebruikt):

    The number 365 is Odd.
    

Resources opschonen

Als u deze toepassing verder niet gaat gebruiken, verwijder dan de resources die u hebt gemaakt met de volgende stap:

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

Volgende stappen