Déploiement continu pour Azure Functions

Azure Functions vous permet de déployer en continu des modifications d’un dépôt de contrôle de version vers une application de fonctions. Dans ce flux de travail, une mise à jour de code déclenche la compilation, l’emballage et le déploiement de votre projet vers Azure. Les fournisseurs de déploiement et les stratégies de libération supportés dépendent du plan d’hébergement.

Plan d’hébergement Fournisseur recommandé de CI/CD Directives de déploiement et de lancement
Flex Consumption GitHub Actions ou Azure Pipelines Utilise le déploiement de paquets. Les emplacements de déploiement ne sont pas pris en charge. Utilisez les contrôles de publication CI/CD et envisagez des mises à jour progressives pour des déploiements sans interruption.
Elastic Premium, Dédié et Consommation GitHub Actions ou Azure Pipelines Utilise le déploiement ZIP. Si votre application le prend en charge, déployez dans un slot de préproduction, validez la mise à jour, puis basculez ce slot en production.
Azure Container Apps (Applications de Conteneur Azure) Flux de travail de construction et de déploiement de conteneurs Déploie une image de conteneur. Pour plus d’informations, consultez la vue d’ensemble d’Azure Functions sur Azure Container Apps.

Sélectionnez votre plan d’hébergement en haut de cet article pour consulter les conseils de déploiement continu applicables à votre application de fonction.

Pour les plans d’hébergement qui prennent en charge les emplacements de déploiement, configurez le déploiement continu sur un emplacement de préproduction plutôt que sur l’emplacement de production. Vérifiez les mises à jour dans l’environnement de préproduction, puis permutez l’emplacement de préproduction avec celui de production. Si vous vous connectez directement à un emplacement de production, assurez-vous que seul le code de qualité production arrive à la branche intégrée.

Pour la consommation flexible, configurez GitHub Actions ou Azure Pipelines. Comme Flex Consumption ne prend pas en charge les emplacements de déploiement, conservez votre historique de déploiement dans le contrôle de version et votre système CI/CD afin de pouvoir récupérer après un mauvais déploiement.

Pour les fonctions sur Azure Container Apps, construisez et déployez une image conteneur. Les emplacements de déploiement ne sont pas disponibles. Utilisez des révisions et envisagez une stratégie de déploiement bleu-vert pour les versions sans interruption.

Les étapes du Centre de déploiement décrites dans cet article s’appliquent aux applications de fonction qui prennent en charge l’intégration du contrôle de code source App Service. Sur le plan Consommation, cette intégration est prise en charge uniquement sous Windows. Vous pouvez aussi configurer l’intégration du contrôle de version en utilisant Azure CLI.

Azure Functions prend en charge ces sources pour le déploiement continu sur votre application :

Gérez le code de votre projet dans Azure Repos, l'un des services d'Azure DevOps. Prend en charge le contrôle de version Git et Team Foundation Version Control. Utilisé avec le fournisseur de build Azure Pipelines. Pour plus d’informations, consultez Présentation d’Azure Repos

Vous pouvez aussi connecter votre application fonctionnelle à un dépôt Git externe, mais cette option nécessite une synchronisation manuelle. Pour plus d'informations sur les options de déploiement, consultez Technologies de déploiement dans Azure Functions.

Remarque

Les options de déploiement continu abordées dans cet article sont spécifiques aux déploiements de code uniquement. Pour Azure Functions on Azure Container Apps, voir Azure Functions on Azure Container Apps Overview. Pour un conteneur personnalisé hébergé par Azure Functions dans un forfait Premium ou dédié, consultez la section Permettre le déploiement continu des conteneurs sur Azure dans Travailler avec les conteneurs et Azure Functions.

Flex Consumption prend en charge le déploiement continu depuis Azure Repos en utilisant Azure Pipelines et depuis GitHub via GitHub Actions. L’intégration du contrôle de code source des services d’applications, y compris les déploiements Bitbucket et Local Git, n’est pas prise en charge.

Pour les fonctions sur Azure Container Apps, maintenez votre source dans votre dépôt préféré et utilisez un flux de travail CI/CD pour construire et pousser une image conteneur. Ensuite, mettez à jour votre application de fonction pour utiliser la nouvelle image. Pour plus d’informations, voir Déploiement et configuration des fonctions sur Azure Container Apps.

Spécifications

L’unité de déploiement de fonctions dans Azure est la Function App. Pour que le déploiement continu fonctionne correctement, la structure de répertoires de votre projet doit être compatible avec la structure de dossiers de base attendue par Azure Functions. Lorsque vous créez votre projet de code en utilisant Azure Functions Core Tools, Visual Studio Code ou Visual Studio, les modèles Azure Functions créent des projets de code avec la bonne structure de répertoires. Vous déployez toutes les fonctions dans une application de fonctions en même temps et dans le même package.

Après avoir activé le déploiement continu, l’accès au code de fonction dans le portail Azure est configuré en lecture seule car la source de vérité se trouve ailleurs.

Remarque

Le Centre de déploiement ne prend pas en charge l’activation du déploiement continu pour une application de fonction avec des restrictions de réseau entrant. À la place, configurez le flux de travail du fournisseur de compilation directement sur GitHub ou Azure Pipelines. Le runner ou l’agent doit pouvoir accéder au point de déploiement de l’application sous les restrictions d’accès configurées. Lorsque le point de terminaison est privé, le runner ou l’agent a également besoin d’une résolution DNS privée. Pour Azure Pipelines, utilisez un agent auto-hébergé sur un réseau connecté ou un pool d’agents DevOps géré avec réseau. Pour GitHub Actions, utilisez un runner auto-hébergé sur un réseau connecté ou un runner hébergé sur GitHub avec réseau privé Azure.

Lorsque votre application de fonctions comporte des restrictions réseau entrantes, le coureur ou l’agent du workflow doit pouvoir atteindre le point de déploiement de l’application sous les restrictions d’accès configurées. Lorsque le point de terminaison est privé, le runner ou l’agent a également besoin d’une résolution DNS privée. Pour Azure Pipelines, utilisez un agent auto-hébergé sur un réseau connecté ou un pool d’agents DevOps géré avec réseau. Pour GitHub Actions, utilisez un runner auto-hébergé sur un réseau connecté ou un runner hébergé sur GitHub avec réseau privé Azure.

Votre flux de travail CI/CD doit construire une image conteneur Azure Functions valide, pousser l’image vers un registre auquel votre application conteneur peut accéder, puis mettre à jour l’application function pour créer une révision à partir de cette image. Pour plus d’informations, voir Créer une application de fonction sur Azure Container Apps.

Sélectionner un fournisseur de build

La création de votre projet de code fait partie du processus de déploiement. Le processus de création spécifique dépend de votre pile linguistique, de votre système d'exploitation et de votre plan d'hébergement spécifiques. Vous pouvez construire localement ou à distance, selon votre hébergement. Pour en savoir plus, consultez Build à distance.

Important

Pour une sécurité accrue, utilisez un fournisseur de compilation qui prend en charge les identités gérées, comme Azure Pipelines et GitHub Actions. Le service de compilation du service d’applications exige que vous activiez l’authentification de base et que vous utilisiez des identifiants textuels.

Azure Functions prend en charge ces fournisseurs de build :

Azure Pipelines est l'un des services d'Azure DevOps et le fournisseur de build par défaut pour les projets Azure Repos. Vous pouvez également utiliser Azure Pipelines pour générer des projets à partir de GitHub. Dans Azure Pipelines, il existe une AzureFunctionApp tâche conçue spécifiquement pour le déploiement sur Azure Functions. Cette tâche vous permet de contrôler la façon dont le projet est construit, empaqueté et déployé. Azure Pipelines prend en charge les identités managées.

Gardez à l'esprit les points forts et les limites de ces fournisseurs lorsque vous activez l'intégration du contrôle de source. Il se peut que vous deviez modifier le type de source de votre référentiel pour bénéficier d’un fournisseur spécifique.

Utilisez Azure Pipelines ou GitHub Actions pour construire et déployer votre projet. Ces fournisseurs prennent en charge les identités Microsoft Entra et utilisent le processus de déploiement du package Flex Consumption.

Le service de build d’App Service ne s’applique pas à Flex Consumption.

Utilisez un fournisseur de compilation de conteneurs qui peut créer votre image Azure Functions, la pousser dans un registre de conteneurs, puis mettre à jour votre application de fonctions pour créer une révision à partir de la nouvelle image. Pour un flux de travail GitHub Actions de bout en bout, voir Déployer sur Azure Container Apps avec GitHub Actions.

Configurer le déploiement continu

Le portail Azure propose un Centre de déploiement pour vos applications de fonction, ce qui facilite la configuration du déploiement continu. La manière spécifique dont vous configurez le déploiement continu dépend à la fois du type de référentiel de contrôle de source dans lequel réside votre code et du fournisseur de build que vous choisissez.

Dans le portail Azure, accédez à la page de votre application de fonction et sélectionnez Centre de déploiement sous Déploiement dans le volet gauche.

Capture d’écran du centre de déploiement de l’application de fonctions dans le portail Azure où vous choisissez votre dépôt source.

Sélectionnez le type de référentiel source dans lequel le code de votre projet est conservé parmi l'une de ces options prises en charge :

Définissez les déploiements à partir d’Azure Repos qui utilisent Azure Pipelines dans le portail Azure DevOps. Ne définissez pas ces déploiements à partir de votre application de fonctions. Pour un guide étape par étape sur la création d’un déploiement basé sur Azure Pipelines à partir d’Azure Repos, voir Livraison continue avec Azure Pipelines.

Après le déploiement, le service déploie tout le code de la source spécifiée vers votre application. À ce stade, les modifications apportées à la source de déploiement déclenchent un déploiement de ces modifications sur votre Function App dans Azure.

Configurez le déploiement continu dans votre dépôt en utilisant l’un de ces fournisseurs :

Chaque exécution réussie de workflow déploie un nouveau package applicatif. L’intégration du contrôle de code source du Deployment Center n’est pas disponible pour Flex Consumption.

Configurez votre pipeline CI/CD pour générer et publier l’image de conteneur, puis déployer l’image sur votre application de fonction. Chaque mise à jour d’image crée une révision des Conteneurs Apps. Pour plus d’informations, voir Déployer sur Azure Container Apps avec GitHub Actions.

Activez le déploiement continu pendant la création de l’application

Lorsque vous créez une application de fonctions dans le portail Azure, vous pouvez configurer un déploiement continu depuis GitHub en utilisant GitHub Actions. Configurez les actions GitHub Actions dans l’onglet Déploiement de la page Créer une application de fonction.

Pour utiliser une autre source de déploiement ou un fournisseur de construction pour une intégration continue, commencez par créer votre application de fonctions. Puis retournez au portail et mettez en place une intégration continue dans le Centre de Déploiement.

Pour Azure Pipelines, créez d’abord votre application de fonctions puis configurez le pipeline dans Azure DevOps.

Créez l’application de fonctions à partir d’une image conteneur, puis configurez votre flux de travail CI/CD pour publier des images mises à jour et créer des révisions. Pour plus d’informations, voir Créer une application de fonction sur Azure Container Apps.

Activer l’authentification de base pour le déploiement

Cette section s’applique uniquement aux méthodes de déploiement qui utilisent le point de déploiement App Service.

Dans certains cas, votre application de fonctions est créée avec l’accès basique à l’authentification au point de déploiement désactivé. Cette condition bloque la publication par tous les moyens qui ne peuvent pas utiliser les identités Microsoft Entra pour accéder au point de déploiement. Les impacts de publication de la désactivation de l’authentification de base pour le point de terminaison de déploiement sont détaillés dans Déployer sans authentification de base.

Important

Quand vous utilisez l’authentification de base, les informations d’identification sont envoyées en texte clair. Pour protéger ces identifiants, vous ne devez accéder au point de déploiement que via une connexion chiffrée (HTTPS) lorsqu’on utilise une authentification de base. Pour plus d’informations, voir Déploiement sécurisé.

Pour activer l’authentification de base du point de terminaison de déploiement :

  1. Dans le portail Azure, accédez à votre application de fonction.

  2. Dans le menu de gauche de l’application, sélectionnez Paramètres>généraux de configuration>.

  3. Définissez les Informations d’identification Essentielles de publication d’authentification SCM sur Activé, puis sélectionnez Enregistrer.

L’authentification SCM de base ne s’applique pas aux déploiements de packages Flex Consumption. Par défaut, Azure Pipelines utilise un jeton porteur Microsoft Entra depuis sa connexion de service Azure requise ; la fédération d’identité de charge de travail est recommandée. Pour GitHub Actions, utilisez l’authentification recommandée OpenID Connect (OIDC). Ces méthodes évitent les identifiants de publication SCM et sont plus sécurisées que l’authentification de base.

Ce paramètre d'authentification de base ne s'applique pas aux fonctions sur Azure Container Apps. Configurez plutôt l’authentification entre votre fournisseur CI/CD, le registre du conteneur et l’application conteneur.

Étapes suivantes