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

Important

De nombreux services Azure disposent de plug-ins Jenkins. Certains de ces plug-ins ne seront plus pris en charge à partir du 29 février 2024. Azure CLI est la méthode actuellement recommandée pour intégrer Jenkins à des services Azure. Pour plus d’informations, reportez-vous à l’article Plug-ins Jenkins pour Azure.

Azure Functions est un service de calcul sans serveur. À l’aide d’Azure Functions, vous pouvez exécuter du code à la demande sans provisionner ou gérer d’infrastructure. Ce tutoriel montre comment déployer une fonction Java sur Azure Functions à l’aide du plug-in Azure Functions.

Prérequis

  • Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • Serveur Jenkins : si vous n’avez pas installé de serveur Jenkins, reportez-vous à l’article Créer un serveur Jenkins sur Azure.

Afficher le code source

Le code source utilisé pour ce tutoriel se trouve dans le dépôt GitHub de Visual Studio Chine.

Créer une fonction Java

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.

Les étapes suivantes montrent comment créer une fonction Java à l’aide de l’interface de ligne de commande Azure :

  1. Créez un groupe de ressources, en remplaçant l’espace <réservé resource_group> par le nom de votre groupe de ressources.

    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.

    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.

    az functionapp create --resource-group <resource_group> --runtime java --consumption-plan-location eastus --name <function_app> --storage-account <storage_account> --functions-version 2
    

Préparer le serveur Jenkins

Les étapes suivantes expliquent comment préparer le serveur Jenkins :

  1. Déployez un serveur Jenkins sur 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.

  2. Connectez-vous à l’instance Jenkins avec SSH.

  3. Sur l’instance Jenkins, installez Azure CLI, version 2.0.67 ou ultérieure.

  4. Installez Maven en utilisant la commande suivante :

    sudo apt install -y maven
    
  5. Sur l’instance Jenkins, installez Azure Functions Core Tools en exécutant les commandes suivantes à l’invite de commandes du terminal :

    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 a besoin d’un principal de service Azure pour authentifier les ressources Azure et y accéder. Reportez-vous au tutoriel Effectuer un déploiement sur Azure App Service pour obtenir des instructions pas à pas.

  7. Vérifiez que le plug-in Credentials est installé.

    1. Dans le menu, sélectionnez Manage Jenkins (Gérer Jenkins).

    2. Sous System Configuration (Configuration système), sélectionnez Manage plug-in (Gérer le plug-in).

    3. Sélectionnez l’onglet Installé.

    4. Dans le champ de filtre, entrez credentials.

    5. Vérifiez que le plug-in Credentials est installé. Si ce n’est pas le cas, vous devez l’installer à partir de l’onglet Available (Disponible).

    The Credentials Plug-in needs to be installed.

  8. Dans le menu, sélectionnez Manage Jenkins (Gérer Jenkins).

  9. Sous Security (Sécurité), sélectionnez Manage Credentials (Gérer les informations d’identification).

  10. Sous Credentials (Informations d’identification), sélectionnez (global).

  11. Dans le menu, sélectionnez Add Credentials (Ajouter des informations d’identification).

  12. Entrez les valeurs suivantes pour votre principal de service Microsoft Azure :

    • Type : Sélectionnez la valeur : Nom d’utilisateur avec mot de passe.
    • Nom d’utilisateur : spécifiez le appId principal de service créé.
    • Mot de passe : spécifiez le password (secret) du principal de service.
    • ID : spécifiez l’identificateur d’informations d’identification, tel que azuresp.
  13. Cliquez sur OK.

Dupliquer (fork) le dépôt d’exemples GitHub

  1. Connectez-vous au dépôt GitHub pour consulter l’exemple d’application odd-or-even.

  2. En haut à droite de GitHub, choisissez Fork (Dupliquer).

  3. Suivez les invites pour sélectionner votre compte GitHub et terminer la duplication.

Créer un pipeline Jenkins

Dans cette section, vous allez créer le pipeline Jenkins.

  1. Dans le tableau de bord Jenkins, créez un pipeline.

  2. Activez l’option permettant de préparer un environnement pour l’exécution.

  3. Dans la section Pipeline-Definition>, sélectionnez Script de pipeline à partir de SCM.

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

     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'
             }
         }
     }
    

Générer et déployer

À présent, il est temps d’exécuter le travail Jenkins.

  1. Commencez par obtenir la clé d’autorisation à l’aide des instructions fournies dans l’article Déclencheurs et liaisons HTTP d’Azure Functions.

  2. Dans votre navigateur, entrez l’URL de l’application. Remplacez les espaces réservés par les valeurs appropriées et spécifiez une valeur numérique pour <input_number> comme entrée pour la fonction Java.

    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 :

    The number 365 is Odd.
    

Nettoyer les ressources

Si vous ne pensez pas continuer à utiliser cette application, supprimez les ressources que vous avez créées en effectuant l’étape suivante :

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

Étapes suivantes