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
- Azure-abonnement: als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account aan voordat u begint.
- Jenkins-server: Als u geen Jenkins-server hebt geïnstalleerd, raadpleegt u het artikel Een Jenkins-server maken in Azure.
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:
Maak een resourcegroep en vervang de tijdelijke aanduiding resource_group> door de <naam van de resourcegroep.
az group create --name <resource_group> --location eastus
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
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:
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.
Meld u aan bij het Jenkins-exemplaar door middel van SSH.
Installeer Az CLI, versie 2.0.67 of hoger op het Jenkins-exemplaar.
Installeer Maven met behulp van de volgende opdracht:
sudo apt install -y maven
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
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.
Zorg ervoor dat de invoegtoepassing Referenties is geïnstalleerd.
Selecteer Jenkins beheren in het menu.
Selecteer onder Systeemconfiguratie de optie Invoegtoepassing Beheren.
Selecteer het tabblad Geïnstalleerd .
Voer in het filterveld in
credentials
.Controleer of de invoegtoepassing Referenties is geïnstalleerd. Zo niet, dan moet u deze installeren vanaf het tabblad Beschikbaar .
Selecteer Jenkins beheren in het menu.
Selecteer Onder Beveiliging de optie Referenties beheren.
Selecteer (globaal) onder Referenties.
Selecteer Referenties toevoegen in het menu.
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
.
Selecteer OK.
De GitHub-voorbeeldopslagplaats splitsen
Meld u aan bij de GitHub-opslagplaats voor de oneven of zelfs voorbeeld-app.
Kies Fork in de rechterbovenhoek in GitHub.
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.
Maak een pijplijn in het Jenkins-dashboard.
Schakel Prepare an environment for the run in.
Selecteer in de sectie Pijplijndefinitie> het pijplijnscript in SCM.
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.
Haal eerst de autorisatiesleutel op via de instructies in het artikel HTTP-triggers en -bindingen in Azure Functions.
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>
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>