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 vara utan stöd från och med den 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 till Azure Functions med hjälp av 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 läser du 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 platshållaren <resource_group> med resursgruppens namn.
az group create --name <resource_group> --location eastus
Skapa 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_LRS
Skapa 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 maven
På 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-3
Jenkins 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.
Välj Hantera Jenkins på menyn.
Under Systemkonfiguration väljer du Hantera plugin-program.
Välj fliken Installerad .
I filterfältet anger du
credentials
.Kontrollera att plugin-programmet Autentiseringsuppgifter är installerat. Annars måste du installera det från fliken Tillgänglig .
Välj Hantera Jenkins på menyn.
Under Säkerhet väljer du Hantera autentiseringsuppgifter.
Under Autentiseringsuppgifter väljer du (global).
Välj Lägg till autentiseringsuppgifter på menyn.
Ange följande värden för tjänstens huvudnamn för Microsoft Azure:
- Typ: Välj värdet: Användarnamn med lösenord.
- Användarnamn: Ange för
appId
tjänstens huvudnamn som skapats. - Lösenord: Ange (hemligheten
password
) för tjänstens huvudnamn. - ID: Ange identifieraren för autentiseringsuppgifter, till exempel
azuresp
.
Välj OK.
Förgrena GitHub-exempel-lagringsplatsen
Logga in på GitHub-lagringsplatsen för 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-förgrenings 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>