Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Många Azure-tjänster har Jenkins-plugin-program, men de flesta av dessa plugin-program avslutade supporten 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 Hjälp av Azure Functions kan du köra kod på begäran utan att etablera eller hantera infrastrukturen. Den här handledningen visar hur du distribuerar en Java-funktion till Azure Functions med hjälp av Azure Functions-tillägget.
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 som används för den här självstudien finns i GitHub-lagringsplatsen i Visual Studio China.
Skapa en Java-funktion
Om du vill skapa en Java-funktion med Java-körningsstacken använder du antingen Azure-portalen eller Azure CLI.
Följande steg visar hur du skapar en Java-funktion med hjälp av Azure CLI:
Skapa en resursgrupp och ersätt platshållaren< resource_group> med resursgruppens namn.
az group create --name <resource_group> --location eastusSkapa ett Azure Storage-konto och ersätt platshållarna med lämpliga värden.
az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRSSkapa testfunktionsappen och ersätt 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 förklarar hur du förbereder Jenkins-servern:
Distribuera en Jenkins-server på Azure. Om du inte redan har en instans av Jenkins-servern installerad vägleder artikeln Skapa en Jenkins-server på Azure dig genom processen.
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 mavenInstallera Azure Functions Core Tools på Jenkins-instansen genom att utfärda följande kommandon i en 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-3Jenkins behöver ett Huvudnamn för Azure-tjänsten för att autentisera och komma åt Azure-resurser. Stegvisa instruktioner finns i Distribuera till Azure App Service .
Kontrollera att plugin-programmet Autentiseringsuppgifter är installerat.
På menyn väljer du Hantera Jenkins.
Under Systemkonfiguration väljer du Hantera plugin-program.
Välj fliken Installerad .
I filterfältet skriver du
credentials.Kontrollera att plugin-programmet Autentiseringsuppgifter är installerat. Annars måste du installera det från fliken Tillgänglig .
På menyn väljer du Hantera Jenkins.
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
appIdför den skapade tjänstens huvudkonto. -
Lösenord: Ange tjänstehuvudnyckelns
password(hemlighet). -
ID: Ange identifieraren för autentiseringsuppgifter, till exempel
azuresp.
Välj OK.
Gör en fork av exempelrepo på GitHub
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 Förgrening.
Följ anvisningarna för att välja ditt GitHub-konto och slutföra förgrening.
Skapa en Jenkins-pipeline
I det här avsnittet skapar du Jenkins-pipelinen.
Skapa en pipeline på 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.
Hämta först auktoriseringsnyckeln via anvisningarna i artikeln Azure Functions HTTP-utlösare och bindningar .
I webbläsaren anger du appens URL. 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 kommer att fortsätta att 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>