Självstudie: Distribuera till Azure Functions med Jenkins
Viktigt
Många Azure-tjänster har Jenkins-plugin-program. Vissa av dessa plugin-program kommer att ha stöd för dem från och med 29 februari 2024. Azure CLI är det för närvarande rekommenderade sättet att integrera Jenkins med Azure-tjänster. Mer information finns i artikeln Jenkins-plugin-program för Azure.
Azure Functions är en serverlös beräkningstjänst. Med Azure Functions kan köra du kod på begäran utan att tillhandahålla eller hantera infrastruktur. Den här självstudien visar hur du distribuerar en Java-funktion Azure Functions med Azure Functions-plugin-programmet.
Förutsättningar
- Azure-prenumeration: Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- Jenkins-server:Om du inte har en Jenkins-server installerad kan du läsa artikeln Skapa en Jenkins-server på Azure.
Visa källkoden
Källkoden i den här självstudien finns i Visual Studio Kina GitHub-lagringsplatsen.
Skapa en Java-funktion
Om du vill skapa en Java-funktion med Java-körningsstacken kan du använda antingen Azure-portalen eller Azure CLI.
Följande steg visar hur du skapar en Java-funktion med Azure CLI:
Skapa en resursgrupp och ersätt resource_group > platshållaren med namnet på din resursgrupp.
az group create --name <resource_group> --location eastusSkapa ett Azure Storage-konto som ersätter platshållarna med lämpliga värden.
az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRSSkapa testfunktionsappen som ersätter platshållarna med lämpliga värden.
az functionapp create --resource-group <resource_group> --runtime java --consumption-plan-location eastus --name <function_app> --storage-account <storage_account> --functions-version 2
Förbereda Jenkins-servern
Följande steg beskriver hur du förbereder Jenkins-servern:
Distribuera en Jenkins-server i Azure. Om du inte redan har en instans av Jenkins-servern installerad får du vägledning genom processen i artikeln Skapa en Jenkins-server i Azure.
Logga in på Jenkins-instansen med SSH.
Installera Az CLI version 2.0.67 eller senare på Jenkins-instansen.
Installera maven med följande kommando:
sudo apt install -y mavenPå Jenkins-instansen installerar du Azure Functions Core Tools genom att utfärda följande kommandon vid en terminaluppmaning:
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-3Jenkins behöver Azure-tjänstens huvudnamn för att autentisera och få åtkomst till Azure-resurser. Referera till de stegvisa instruktionerna i Distribuera till Azure App Service.
Kontrollera att plugin-programmet Autentiseringsuppgifter är installerat.
I menyn väljer du Hantera Jenkins.
Under Systemkonfigurationväljer du Hantera plugin-program.
Välj fliken Installerad.
I filterfältet anger du .
Kontrollera att plugin-programmet Autentiseringsuppgifter är installerat. Om inte måste du installera det från fliken Tillgänglig.

I menyn väljer du Hantera Jenkins.
Under Säkerhetväljer du Hantera autentiseringsuppgifter.
Under Autentiseringsuppgifterväljer du (global).
I menyn väljer du Lägg till autentiseringsuppgifter.
Ange följande värden för Microsoft Azure tjänstens huvudnamn:
- Typ: Kontrollera att typen är Användarnamn med lösenord.
- Användarnamn:appId för tjänstens huvudnamn som skapats.
- Lösenord:lösenordet för tjänstens huvudnamn som skapats.
- ID:Autentiseringsidentifierare såsom .
Välj OK.
Fördring av GitHub lagringsplatsen
Logga in på lagringsplatsen GitHub den udda eller till och med exempelappen.
I det övre högra hörnet i GitHub väljer du Fork (Förgrening).
Följ anvisningarna för att välja ditt GitHub-konto och slutför förgreningen.
Skapa en Jenkins-pipeline
I det här avsnittet skapar du en Jenkins-pipeline.
Skapa en pipeline i Jenkins-instrumentpanelen.
Aktivera Förbered en miljö för körningen.
I avsnittet Pipeline- Definition väljer du Pipeline-skript från SCM.
Ange din GitHub URL och skriptsökväg ("doc/resources/jenkins/JenkinsFile") som ska användas i JenkinsFile-exemplet.
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' } } }
Skapa och distribuera
Nu är det dags att köra Jenkins-jobbet.
Först hämtar du auktoriseringsnyckeln via anvisningarna i artikeln om HTTP-utlösare och bindningar i Azure Functions.
Ange appens webbadress i webbläsaren. Ersätt platshållarna med lämpliga värden och ange ett numeriskt > värde för input_number som indata för Java-funktionen.
https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>Du ser resultat som liknar följande exempelutdata (där ett udda tal – 365 – användes som ett test):
The number 365 is Odd.
Rensa resurser
Om du inte planerar att fortsätta använda det här programmet tar du bort de resurser som du skapade med följande steg:
az group delete -y --no-wait -n <resource_group>