Partager via


Tutoriel : Déployer sur Azure Functions à l’aide de Jenkins

Important

Bien que de nombreux services Azure disposent de plug-ins Jenkins, la plupart de ces plug-ins ont cessé d'être pris en charge à partir du 29 février 2024. Azure CLI est le moyen actuellement recommandé d’intégrer Jenkins aux services Azure. Pour plus d’informations, consultez l’article Sur les plug-ins Jenkins pour Azure.

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

Conditions préalables

Afficher le code source

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

Créer une fonction Java

Pour créer une fonction Java avec la pile d'exécution Java, utilisez le portail Azure ou Azure CLI.

Les étapes suivantes montrent comment créer une fonction Java à l’aide d’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.

    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 vous n’avez pas encore installé d’instance du serveur Jenkins, 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 Az CLI, version 2.0.67 ou ultérieure.

  4. Installez maven à l’aide de la commande suivante :

    sudo apt install -y maven
    
  5. Sur l’instance Jenkins, installez Azure Functions Core Tools en émettant les commandes suivantes à l’invite de 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 et accéder aux ressources Azure. Pour obtenir des instructions pas à pas, reportez-vous au déploiement sur Azure App Service .

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

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

    2. Sous Configuration du système, sélectionnez 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 Disponible .

    Le plug-in d’informations d’identification doit être installé.

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

  9. Sous Sécurité, sélectionnez Gérer les informations d’identification.

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

  11. Dans le menu, sélectionnez 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.

Forkez le dépôt GitHub d'exemple

  1. Connectez-vous au dépôt GitHub pour l’exemple d’application de parité.

  2. Dans le coin supérieur droit de GitHub, choisissez Fork.

  3. Suivez les invites pour sélectionner votre compte GitHub et terminer le fork.

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 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 de script de votre fork GitHub (« doc/resources/jenkins/JenkinsFile ») à utiliser 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

Il est maintenant temps d’exécuter le travail Jenkins.

  1. Tout d’abord, obtenez la clé d’autorisation via les instructions de l’article sur les déclencheurs et liaisons HTTP 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. Vous verrez des résultats similaires à l’exemple de sortie suivant (où un nombre impair - 365 - a été utilisé comme test) :

    The number 365 is Odd.
    

Nettoyer les ressources

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

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

Étapes suivantes