Exercice : mettre à jour le déclencheur de votre pipeline

Effectué

Un collègue vous demande d’activer la fonctionnalité Always On d’App Service sur le site web de l’entreprise. L’application de site web est donc toujours en cours d’exécution.

Dans cet exercice, vous allez mettre à jour le pipeline que vous avez créé pour qu’il s’exécute automatiquement chaque fois qu’un fichier est modifié sur votre branche primaire. Vous utiliserez le pipeline mis à jour pour déployer le changement de configuration demandé sur le site web.

Pendant ce processus, vous allez :

  • Mettez à jour votre pipeline pour qu’il se déclenche automatiquement chaque fois que les fichiers sont modifiés dans le dossier deploy et dans la branche primaire.
  • Apportez une modification à votre fichier Bicep.
  • Vérifiez que le pipeline s’exécute automatiquement.

Mettre à jour le déclencheur pour qu’il soit basé sur une branche

  1. Dans Visual Studio Code, ouvrez le fichier deploy/azure-pipelines.yml.

  2. Supprimez le déclencheur manuel de la première ligne.

  3. Ajoutez la définition de déclencheur suivante sur la première ligne :

    trigger:
      batch: true
      branches:
        include:
        - main
    

    Notez que vous activez également le contrôle d’accès concurrentiel, ce qui évite que votre pipeline s’exécute plusieurs fois simultanément.

  4. Enregistrez les modifications apportées au fichier.

  5. Validez vos modifications, mais ne les envoyez pas encore. Vous allez bientôt les envoyer.

    git add .
    git commit -m 'Add branch trigger'
    

Mettre à jour votre fichier Bicep

  1. Dans Visual Studio Code, ouvrez le fichier main.bicep.

  2. Dans la propriété siteConfig de la définition de ressource appServiceApp, ajoutez la propriété alwaysOn avec la valeur true :

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          alwaysOn: true
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
  3. Enregistrez les modifications apportées au fichier.

  4. Dans le terminal Visual Studio Code, exécutez le code suivant pour valider vos modifications et envoyer vos validations :

    git add .
    git commit -m 'Configure app Always On setting'
    git push
    

Vérifier l’échec du pipeline

  1. Dans votre navigateur, sélectionnez Pipelines, puis choisissez votre pipeline.

  2. Sélectionnez l’exécution la plus récente pour voir que le pipeline s’est exécuté automatiquement. Le pipeline s’est exécuté car vous avez envoyé vos modifications à une branche surveillée par le déclencheur de branche. Si le pipeline est toujours en cours, attendez une minute, puis actualisez la page.

    Capture d’écran d’Azure DevOps montrant l’échec de l’exécution du pipeline.

    Le pipeline montre un échec du déploiement.

  3. Pour diagnostiquer la défaillance, sélectionnez le travail dans Travaux, puis sélectionnez la tâche AzureResourceManagerTemplateDeployment qui a échoué. Faites défiler le contenu pour voir le message d’erreur complet. Le message d’erreur contient le texte suivant :

    There was a conflict. AlwaysOn cannot be set for this site as the plan does not allow it. For more information on pricing and features, please see: https://aka.ms/appservicepricingdetails

    Ce message d’erreur indique que le déploiement a échoué, car l’application App Service est déployée à l’aide du niveau gratuit F1, qui ne prend pas en charge la fonctionnalité Always On.

    Important

    Cet exemple illustre le fait qu’il est important de tester vos fichiers Bicep, et toutes les valeurs des paramètres que vous utilisez. Il est facile d’ajouter de petites erreurs dans la configuration de vos ressources ou dans un autre élément de code. Vous risquez de ne pas découvrir un problème jusqu’à ce que votre pipeline déploie le code et échoue. Dans un prochain module, vous apprendrez quelques stratégies que vous pouvez utiliser pour vérifier et tester votre code Bicep.

Corrigez le fichier Bicep et constatez que le pipeline est à nouveau déclenché.

Vous parlez à votre collègue du déploiement qui a échoué. Vous décidez que le paramètre Always On doit être appliqué uniquement à votre environnement de production. Ici, vous résolvez le problème qui a provoqué l’échec du déploiement en appliquant cette nouvelle règle.

  1. Dans Visual Studio Code, ajoutez de nouvelles propriétés pour chaque type d’environnement à la variable environmentConfigurationMap :

    var environmentConfigurationMap = {
      nonprod: {
        appServiceApp: {
          alwaysOn: false
        }
        appServicePlan: {
          sku: {
            name: 'F1'
            capacity: 1
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_LRS'
          }
        }
      }
      prod: {
        appServiceApp: {
          alwaysOn: true
        }
        appServicePlan: {
          sku: {
            name: 'S1'
            capacity: 2
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_ZRS'
          }
        }
      }
    }
    
  2. Modifiez le paramètre alwaysOn de l’application pour qu’il utilise la valeur de mappage de configuration adaptée au type d’environnement :

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
  3. Enregistrez les modifications apportées au fichier.

  4. Utilisez le terminal Visual Studio Code pour valider vos modifications et les envoyer :

    git add .
    git commit -m 'Enable App Service Always On for production environments only'
    git push
    

Vérifier que l’exécution du pipeline réussit

  1. Dans Azure DevOps, revenez à la liste Pipelines et sélectionnez votre pipeline.

  2. Sélectionnez la dernière exécution. Si le pipeline est toujours en cours, attendez une minute, puis actualisez la page.

    Capture d’écran d’Azure DevOps montrant la réussite de l’exécution du pipeline.

    Le pipeline indique un déploiement réussi. Cette opération a réussi, car vous avez utilisé un fichier Bicep valide.

Nettoyer les ressources

Maintenant que vous avez terminé l’exercice, vous pouvez supprimer les ressources afin de ne pas avoir à payer pour.

Dans le terminal Visual Studio Code, exécutez la commande suivante :

az group delete --resource-group ToyWebsite --yes --no-wait

Le groupe de ressources est supprimé en arrière-plan.

Remove-AzResourceGroup -Name ToyWebsite -Force