Tutoriel : Effectuer un déploiement dans Azure Functions à l’aide de JenkinsTutorial: Deploy to Azure Functions using Jenkins

Azure Functions est un service de calcul sans serveur.Azure Functions is a serverless compute service. À l’aide d’Azure Functions, vous pouvez exécuter du code à la demande sans provisionner ou gérer d’infrastructure.Using Azure Functions, you can run code on-demand without provisioning or managing infrastructure. Ce tutoriel montre comment déployer une fonction Java sur Azure Functions à l’aide du plug-in Azure Functions.This tutorial shows how to deploy a Java function to Azure Functions using the Azure Functions plug-in.

PrérequisPrerequisites

Créer une fonction JavaCreate a Java function

Pour créer une fonction Java avec la pile d’exécution Java, utilisez le portail Azure ou l’interface de ligne de commande Azure.To create a Java function with the Java runtime stack, use either the Azure portal or the Azure CLI.

Les étapes suivantes montrent comment créer une fonction Java à l’aide de l’interface de ligne de commande Azure :The following steps show how to create a Java function using the Azure CLI:

  1. Créez un groupe de ressources, en remplaçant l’espace réservé <resource_group> par le nom de votre groupe de ressources.Create a resource group, replacing the <resource_group> placeholder with your resource group name.

    az group create --name <resource_group> --location eastus
    
  2. Créez un compte de stockage Azure, en remplaçant les espaces réservés par les valeurs appropriées.Create an Azure storage account, replacing the placeholders with the appropriate values.

    az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRS    
    
  3. Créez l’application de fonction de test, en remplaçant les espaces réservés par les valeurs appropriées.Create the test function app, replacing the placeholders with the appropriate values.

    az functionapp create --resource-group <resource_group> --consumption-plan-location eastus --name <function_app> --storage-account <storage_account>
    

Préparer le serveur JenkinsPrepare Jenkins server

Les étapes suivantes expliquent comment préparer le serveur Jenkins :The following steps explain how to prepare the Jenkins server:

  1. Déployez un serveur Jenkins sur Azure.Deploy a Jenkins server on Azure. Si aucune instance du serveur Jenkins n’est encore installée, l’article Créer un serveur Jenkins sur Azure vous guide tout au long du processus.If you don't already have an instance of the Jenkins server installed, the article, Create a Jenkins server on Azure guides you through the process.

  2. Connectez-vous à l’instance Jenkins avec SSH.Sign in to the Jenkins instance with SSH.

  3. Sur l’instance Jenkins, installez maven à l’aide de la commande suivante :On the Jenkins instance, install maven using the following command:

    sudo apt install -y maven
    
  4. Sur l’instance Jenkins, installez Azure Functions Core Tools en exécutant les commandes suivantes à l’invite de commandes du terminal :On the Jenkins instance, install the Azure Functions Core Tools by issuing the following commands at a terminal prompt:

    wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    sudo apt-get update
    sudo apt-get install azure-functions-core-tools
    
  5. Dans le tableau de bord Jenkins, installez les plug-ins suivants :In the Jenkins dashboard, install the following plugins:

    • Plug-in Azure FunctionsAzure Functions Plug-in
    • Plug-in EnvInjectEnvInject Plug-in
  6. Jenkins a besoin d’un principal de service Azure pour authentifier les ressources Azure et y accéder.Jenkins needs an Azure service principal to authenticate and access Azure resources. Reportez-vous au tutoriel Effectuer un déploiement sur Azure App Service pour obtenir des instructions pas à pas.Refer to the Deploy to Azure App Service for step-by-step instructions.

  7. À l’aide du principal de service Azure, ajoutez le type d’informations d’identification « Microsoft Azure Service Principal » à Jenkins.Using the Azure service principal, add a "Microsoft Azure Service Principal" credential type in Jenkins. Reportez-vous au tutoriel Effectuer un déploiement sur Azure App Service.Refer to the Deploy to Azure App Service tutorial.

Dupliquer (fork) le dépôt d’exemples GitHubFork the sample GitHub repo

  1. Connectez-vous au dépôt GitHub pour consulter l’exemple d’application odd-or-even.Sign in to the GitHub repo for the odd or even sample app.

  2. En haut à droite de GitHub, choisissez Fork (Dupliquer).In the upper-right corner in GitHub, choose Fork.

  3. Suivez les invites pour sélectionner votre compte GitHub et terminer la duplication.Follow the prompts to select your GitHub account and finish forking.

Créer un pipeline JenkinsCreate a Jenkins Pipeline

Dans cette section, vous allez créer le pipeline Jenkins.In this section, you create the Jenkins Pipeline.

  1. Dans le tableau de bord Jenkins, créez un pipeline.In the Jenkins dashboard, create a Pipeline.

  2. Activez l’option permettant de préparer un environnement pour l’exécution.Enable Prepare an environment for the run.

  3. Ajoutez les variables d’environnement suivantes dans Properties Content (Contenu des propriétés), en remplaçant les espaces réservés par les valeurs appropriées pour votre environnement :Add the following environment variables in Properties Content, replacing the placeholders with the appropriate values for your environment:

    AZURE_CRED_ID=<service_principal_credential_id>
    RES_GROUP=<resource_group>
    FUNCTION_NAME=<function_name>
    
  4. Dans la section Pipeline->Définition, sélectionnez Script de pipeline à partir de SCM.In the Pipeline->Definition section, select Pipeline script from SCM.

  5. Entrez l’URL et le chemin du script de votre duplication (fork) GitHub (« doc/ressources/jenkins/JenkinsFile ») qui doivent être utilisés dans l’exemple JenkinsFile.Enter your GitHub fork's URL and script path ("doc/resources/jenkins/JenkinsFile") to use in the JenkinsFile example.

    node {
     stage('Init') {
         checkout scm
         }
    
     stage('Build') {
         sh 'mvn clean package'
         }
    
     stage('Publish') {
         azureFunctionAppPublish appName: env.FUNCTION_NAME, 
                                 azureCredentialsId: env.AZURE_CRED_ID, 
                                 filePath: '**/*.json,**/*.jar,bin/*,HttpTrigger-Java/*', 
                                 resourceGroup: env.RES_GROUP, 
                                 sourceDirectory: 'target/azure-functions/odd-or-even-function-sample'
         }
     }
    

Générer et déployerBuild and deploy

À présent, il est temps d’exécuter le travail Jenkins.It's now time to run the Jenkins job.

  1. Commencez par obtenir la clé d’autorisation à l’aide des instructions fournies dans l’article Déclencheurs et liaisons HTTP d’Azure Functions.First, obtain the authorization key via the instructions in the Azure Functions HTTP triggers and bindings article.

  2. Dans votre navigateur, entrez l’URL de l’application.In your browser, enter the app's URL. Remplacez les espaces réservés par les valeurs appropriées, puis spécifiez une valeur numérique pour <input_number> comme entrée pour la fonction Java.Replace the placeholders with the appropriate values and specify a numeric value for <input_number> as input for the Java function.

    https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>
    
  3. Des résultats semblables à l’exemple de sortie suivant (où un nombre impair, 365, a été utilisé comme test) s’affichent :You'll see results similar to the following example output (where an odd number - 365 - was used as a test):

    The number 365 is Odd.
    

Nettoyer les ressourcesClean up resources

Si vous ne pensez pas continuer à utiliser cette application, supprimez les ressources que vous avez créées en effectuant l’étape suivante :If you're not going to continue to use this application, delete the resources you created with the following step:

az group delete -y --no-wait -n <resource_group>

Étapes suivantesNext steps