Delen via


Zelfstudie: Implementeren in Azure Functions met behulp van Jenkins

Belangrijk

Hoewel veel Azure-services Jenkins-invoegtoepassingen hebben, beëindigden de meeste van deze invoegtoepassingen vanaf 29 februari 2024 de ondersteuning. Azure CLI is momenteel de aanbevolen manier om Jenkins te integreren met Azure-services. Raadpleeg het artikel Jenkins-invoegtoepassingen voor Azurevoor meer informatie.

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

Vereiste voorwaarden

De broncode weergeven

De broncode die voor deze zelfstudie wordt gebruikt, bevindt zich in de GitHub-opslagplaats van Visual Studio China.

Een Java-functie maken

Als u een Java-functie wilt maken met de Java Runtime-stack, gebruikt u De Azure-portal of de Azure CLI.

In de volgende stappen ziet u hoe u een Java-functie maakt met behulp van de Azure CLI:

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

    az group create --name <resource_group> --location eastus
    
  2. Maak een Azure-opslagaccount en vervang de tijdelijke aanduidingen door de juiste 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 juiste 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 u de Jenkins-server voorbereidt:

  1. Implementeer een Jenkins-server in Azure. Als u nog geen exemplaar van de Jenkins-server hebt geïnstalleerd, begeleidt het artikel Create a Jenkins server on Azure u door het proces.

  2. Meld u met SSH aan bij het Jenkins-exemplaar.

  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 op het Jenkins-exemplaar de Azure Functions Core Tools door de volgende opdrachten uit te geven bij een terminalprompt:

    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 heeft een Azure-service-principal nodig om Azure-resources te verifiëren en te openen. Raadpleeg de handleiding Implementeren in Azure App Service voor stapsgewijze instructies.

  7. Zorg ervoor dat de Referentieplug-in is geïnstalleerd.

    1. Selecteer in het menu Jenkins-beheren.

    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 Authenticatiegegevens is geïnstalleerd. Zo niet, dan moet u deze installeren vanaf het tabblad Beschikbaar .

    De invoegtoepassing voor inloggegevens moet worden geïnstalleerd.

  8. Selecteer in het menu Jenkins-beheren.

  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: Specificeer de appId van de aangemaakte service-principal.
    • Wachtwoord: geef het password (geheim) van de service-principal op.
    • Id: Geef de referentie-id op, zoals azuresp.
  13. Kies OK.

De GitHub-voorbeeldopslagplaats splitsen

  1. Log in bij de GitHub-opslagplaats voor de oneven of even voorbeeldapplicatie.

  2. Kies Fork in de rechterbovenhoek in GitHub.

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

Een Jenkins-pijplijn maken

In deze sectie maakt u de Jenkins-pijplijn.

  1. Maak een pijplijn in het Jenkins-dashboard.

  2. Schakel Een omgeving voorbereiden in voor de uitvoering.

  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

Het is nu tijd om de Jenkins-taak uit te voeren.

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

  2. Voer in uw browser de URL van 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. U ziet resultaten die vergelijkbaar zijn met de volgende voorbeelduitvoer (waarbij een oneven getal - 365 - als test is gebruikt):

    The number 365 is Odd.
    

De hulpbronnen opschonen

Als u deze toepassing niet wilt blijven gebruiken, verwijdert u de resources die u hebt gemaakt met de volgende stap:

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

Volgende stappen