Zelfstudie: Implementeren in Azure Functions jenkins
Belangrijk
Veel Azure-services hebben Jenkins-in plug-ins. Sommige van deze in plug-ins worden vanaf 29 februari 2024 niet meer ondersteund. Azure CLI is de momenteel aanbevolen manier om Jenkins te integreren met Azure-services. Raadpleeg het artikel Jenkins-in plug-ins 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. In deze zelfstudie ziet u hoe u een Java-functie implementeert Azure Functions behulp van Azure Functions-in plug-in.
Vereisten
- Azure-abonnement: Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.
- Jenkins-server:als u geen Jenkins-server hebt geïnstalleerd, raadpleegt u het artikel Create a Jenkins server on Azure (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 resource_group > door de naam van uw resourcegroep.
az group create --name <resource_group> --location eastusMaak 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_LRSMaak 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 mavenInstalleer 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-3Voor 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 aanmeldingsgegevens is geïnstalleerd.
Selecteer Jenkins beheren in het menu.
Selecteer onder Systeemconfiguratiede optie In plug-in beheren.
Selecteer het tabblad Geïnstalleerd.
Voer in het filterveld in.
Controleer of de in plug-in Credentials is geïnstalleerd. Zo niet, dan moet u het installeren vanaf het tabblad Beschikbaar.

Selecteer Jenkins beheren in het menu.
Selecteer onder Beveiligingde optie Referenties beheren.
Selecteer onder Referentiesde optie (globaal).
Selecteer Referenties toevoegen in het menu.
Voer de volgende waarden in voor uw Microsoft Azure service-principal:
- Soort:controleer of het type Gebruikersnaam met wachtwoord is.
- Gebruikersnaam:appId van de gemaakte service-principal.
- Wachtwoord:het wachtwoord van de gemaakte service-principal.
- Id:Referentie-id, zoals .
Selecteer OK.
De voorbeeld-GitHub maken
Meld u aan bij de GitHub 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 Pipeline- Definition de optie Pipeline script in SCM.
Voer de URL GitHub en het scriptpad van de fork ('doc/resources/jenkins/JenkinsFile') in om te gebruiken 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 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>