Livraison continue à l’aide d’Azure DevOpsContinuous delivery by using Azure DevOps

Vous pouvez déployer automatiquement votre fonction sur une application Azure Functions à l’aide d’Azure Pipelines.You can automatically deploy your function to an Azure Functions app by using Azure Pipelines.

Vous avez deux possibilités pour définir votre pipeline :You have two options for defining your pipeline:

  • Fichier YAML : un fichier YAML décrit le pipeline.YAML file: A YAML file describes the pipeline. Ce fichier peut avoir une section d’étapes de création et une section de mise en production.The file might have a build steps section and a release section. Le fichier YAML doit se trouver dans le même référentiel que l’application.The YAML file must be in the same repo as the app.
  • Modèle : les modèles sont des tâches prêtes à l’emploi qui créent ou déploient votre application.Template: Templates are ready-made tasks that build or deploy your app.

Pipeline basé sur le fichier YAMLYAML-based pipeline

Pour créer un pipeline YAML, commencez par créer votre application et ensuite déployez-la.To create a YAML-based pipeline, first build your app, and then deploy the app.

Générer votre applicationBuild your app

La façon dont vous créez votre application dans Azure Pipelines varie en fonction du langage de programmation de votre application.How you build your app in Azure Pipelines depends on your app's programming language. Chaque langage possède des étapes spécifiques qui créent un artefact de déploiement.Each language has specific build steps that create a deployment artifact. Un artefact de déploiement est utilisé pour déployer votre application Functions dans Azure.A deployment artifact is used to deploy your function app in Azure.

Vous pouvez utiliser l’exemple suivant pour créer un fichier YAML pour générer votre application .NET :You can use the following sample to create a YAML file to build a .NET app:

pool:
      vmImage: 'VS2017-Win2016'
steps:
- script: |
    dotnet restore
    dotnet build --configuration Release
- task: DotNetCoreCLI@2
  inputs:
    command: publish
    arguments: '--configuration Release --output publish_output'
    projects: '*.csproj'
    publishWebProjects: false
    modifyOutputPath: false
    zipAfterPublish: false
- task: ArchiveFiles@2
  displayName: "Archive files"
  inputs:
    rootFolderOrFile: "$(System.DefaultWorkingDirectory)/publish_output"
    includeRootFolder: false
    archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
    artifactName: 'drop'

Déployer votre applicationDeploy your app

Vous devez inclure l’exemple YAML suivant dans votre fichier YAML, selon le système d’exploitation hôte.You must include one of the following YAML samples in your YAML file, depending on the hosting OS.

Application de fonction WindowsWindows function app

Vous pouvez utiliser l’extrait de code suivant pour effectuer un déploiement sur une application de fonction Windows :You can use the following snippet to deploy a Windows function app:

steps:
- task: AzureFunctionApp@1
  inputs:
    azureSubscription: '<Azure service connection>'
    appType: functionApp
    appName: '<Name of function app>'
    #Uncomment the next lines to deploy to a deployment slot
    #deployToSlotOrASE: true
    #resourceGroupName: '<Resource Group Name>'
    #slotName: '<Slot name>'

Application de fonction LinuxLinux function app

Vous pouvez utiliser l’extrait de code suivant pour effectuer un déploiement sur une application de fonction Linux  :You can use the following snippet to deploy a Linux function app:

steps:
- task: AzureFunctionApp@1
  inputs:
    azureSubscription: '<Azure service connection>'
    appType: functionAppLinux
    appName: '<Name of function app>'
    #Uncomment the next lines to deploy to a deployment slot
    #Note that deployment slots is not supported for Linux Dynamic SKU
    #deployToSlotOrASE: true
    #resourceGroupName: '<Resource Group Name>'
    #slotName: '<Slot name>'

Pipeline basé sur un modèleTemplate-based pipeline

Les modèles dans Azure DevOps sont des groupes prédéfinis de tâches qui génèrent ou déploient une application.Templates in Azure DevOps are predefined groups of tasks that build or deploy an app.

Générer votre applicationBuild your app

La façon dont vous créez votre application dans Azure Pipelines varie en fonction du langage de programmation de votre application.How you build your app in Azure Pipelines depends on your app's programming language. Chaque langage possède des étapes spécifiques qui créent un artefact de déploiement.Each language has specific build steps that create a deployment artifact. Un artefact de déploiement est utilisé pour mettre à jour votre application Functions dans Azure.A deployment artifact is used to update your function app in Azure.

Pour utiliser les modèles intégrés, lors de la création d’un nouveau pipeline de build, sélectionnez Utiliser l’éditeur classique pour créer un pipeline à l’aide des modèles de concepteur.To use built-in build templates, when you create a new build pipeline, select Use the classic editor to create a pipeline by using designer templates.

Sélectionner l’éditeur classique d’Azure Pipelines

Après avoir configuré la source de votre code, recherchez les modèles de build Azure Functions.After you configure the source of your code, search for Azure Functions build templates. Sélectionnez le modèle qui correspond au langage de votre application.Select the template that matches your app language.

Sélectionner un modèle de build Azure Functions

Dans certains cas, les artefacts de build ont une structure de dossier spécifique.In some cases, build artifacts have a specific folder structure. Vous devrez peut-être activer la case à cocher Placer le nom du dossier racine au début des chemins d’archives.You might need to select the Prepend root folder name to archive paths check box.

Option pour placer le nom du dossier racine au début

Applications JavaScriptJavaScript apps

Si votre application JavaScript a une dépendance sur des modules natifs de Windows, vous devez mettre à jour la version du pool d’agents vers Hosted VS2017.If your JavaScript app has a dependency on Windows native modules, you must update the agent pool version to Hosted VS2017.

Mise à jour la version du pool d’agents

Déployer votre applicationDeploy your app

Lorsque vous créez un nouveau pipeline de mise en production, recherchez le modèle de mise en production d’Azure Functions.When you create a new release pipeline, search for the Azure Functions release template.

Rechercher le modèle de mise en production Azure Functions

Le déploiement vers un emplacement de déploiement n’est pas pris en charge dans le modèle de mise en production.Deploying to a deployment slot is not supported in the release template.

Création d’un pipeline de build à l’aide de l’interface de ligne de commande AzureCreate a build pipeline by using the Azure CLI

Pour créer un pipeline de build dans Azure, utilisez la commande az functionapp devops-pipeline create.To create a build pipeline in Azure, use the az functionapp devops-pipeline create command. Le pipeline de build est créé pour créer et mettre en production toutes les modifications du code de votre référentiel.The build pipeline is created to build and release any code changes that are made in your repo. Cette commande génère un nouveau fichier YAML qui définit le pipeline de génération et de mise en production et le valide dans votre référentiel.The command generates a new YAML file that defines the build and release pipeline and then commits it to your repo. Les conditions préalables de cette commande varient selon l’emplacement de votre code.The prerequisites for this command depend on the location of your code.

  • Si votre code se trouve dans GitHub :If your code is in GitHub:

    • Vous devez disposer des autorisations en écriture dans votre abonnement.You must have write permissions for your subscription.

    • Vous devez être l’administrateur de projet dans Azure DevOps.You must be the project administrator in Azure DevOps.

    • Vous devez disposer des autorisations nécessaires pour créer un jeton d’accès personnel GitHub disposant d’autorisations suffisantes.You must have permissions to create a GitHub personal access token (PAT) that has sufficient permissions. Pour plus d’informations, consultez Autorisations requises du jeton d’accès personnel GitHub.For more information, see GitHub PAT permission requirements.

    • Vous devez disposer des autorisations nécessaires pour valider dans la branche principale de votre référentiel GitHub pour valider le fichier YAML généré automatiquement.You must have permissions to commit to the master branch in your GitHub repository so you can commit the autogenerated YAML file.

  • Si votre code se trouve dans Azure Repos :If your code is in Azure Repos:

    • Vous devez disposer des autorisations en écriture dans votre abonnement.You must have write permissions for your subscription.

    • Vous devez être l’administrateur de projet dans Azure DevOps.You must be the project administrator in Azure DevOps.

Étapes suivantesNext steps