Guidad handledning: Implementera i Azure Functions med Jenkins

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

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:

  1. Skapa en resursgrupp och ersätt platshållaren< resource_group> med resursgruppens namn.

    az group create --name <resource_group> --location eastus
    
  2. Skapa 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_LRS    
    
  3. Skapa 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:

  1. 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.

  2. Logga in på Jenkins-instansen med SSH.

  3. Installera Az CLI, version 2.0.67 eller senare på Jenkins-instansen.

  4. Installera maven med följande kommando:

    sudo apt install -y maven
    
  5. Installera 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-3
    
  6. Jenkins 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 .

  7. Kontrollera att plugin-programmet Autentiseringsuppgifter är installerat.

    1. På menyn väljer du Hantera Jenkins.

    2. Under Systemkonfiguration väljer du Hantera plugin-program.

    3. Välj fliken Installerad .

    4. I filterfältet skriver du credentials.

    5. Kontrollera att plugin-programmet Autentiseringsuppgifter är installerat. Annars måste du installera det från fliken Tillgänglig .

    Plugin-programmet för autentiseringsuppgifter måste installeras.

  8. På menyn väljer du Hantera Jenkins.

  9. Under Säkerhet väljer du Hantera autentiseringsuppgifter.

  10. Under Autentiseringsuppgifter väljer du (global).

  11. Välj Lägg till autentiseringsuppgifter på menyn.

  12. 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 appId för den skapade tjänstens huvudkonto.
    • Lösenord: Ange tjänstehuvudnyckelns password (hemlighet).
    • ID: Ange identifieraren för autentiseringsuppgifter, till exempel azuresp.
  13. Välj OK.

Gör en fork av exempelrepo på GitHub

  1. Logga in på GitHub-lagringsplatsen för den udda eller till och med exempelappen.

  2. I det övre högra hörnet i GitHub väljer du Förgrening.

  3. 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.

  1. Skapa en pipeline på Jenkins-instrumentpanelen.

  2. Aktivera Förbered en miljö för körningen.

  3. I avsnittet Pipeline-Definition väljer du Pipeline-skript>från SCM.

  4. 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.

  1. Hämta först auktoriseringsnyckeln via anvisningarna i artikeln Azure Functions HTTP-utlösare och bindningar .

  2. 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>
    
  3. 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>

Nästa steg