Övning – Uppdatera arbetsflödets utlösare

Slutförd

En kollega ber dig att aktivera funktionen App Service Always On på företagets webbplats, så att webbplatsappen alltid körs.

I den här övningen uppdaterar du arbetsflödet som du skapade så att det körs automatiskt när en fil ändras på huvudgrenen. Du använder det uppdaterade arbetsflödet för att distribuera den begärda konfigurationsändringen till webbplatsen.

Under processen gör du följande:

  • Uppdatera arbetsflödet så att det utlöses automatiskt när en fil ändras i distributionsmappen på huvudgrenen.
  • Gör en ändring i Bicep-filen.
  • Kontrollera att arbetsflödet körs automatiskt.

Uppdatera utlösaren så att den är grenbaserad

  1. Öppna filen .github/workflows/workflow.yml i Visual Studio Code.

  2. Längst upp i filen lägger du till följande kod efter raden name: deploy-toy-website för att förhindra att flera samtidiga arbetsflöden körs:

    name: deploy-toy-website
    concurrency: toy-company
    
  3. Ta bort den manuella utlösaren, som är den rad som för närvarande läser on: [workflow_dispatch].

  4. Mellan concurrency: och permissions: lägg till följande utlösardefinition:

    concurrency: toy-company
    
    on:
      push:
        branches:
          - main
        paths:
          - 'deploy/**'
    
    permissions:
    
  5. Spara ändringarna i filen.

  6. Genomför ändringarna, men push-överför dem inte ännu. Du push-överför ändringarna snart.

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

Uppdatera Bicep-filen

  1. Öppna filen main.bicep i Visual Studio Code.

  2. I resursdefinitionens appServiceApp siteConfig egenskap lägger du till alwaysOn egenskapen med värdet 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. Spara ändringarna i filen.

  4. I Visual Studio Code-terminalen kör du följande kod för att checka in ändringarna och push-överföra båda incheckningarna:

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

Kontrollera att arbetsflödet misslyckas

  1. Välj GitHubs åtgärdsmeny i webbläsaren och välj arbetsflödet.

  2. Välj den senaste arbetsflödeskörningen för att se att arbetsflödet kördes automatiskt. Arbetsflödet kördes eftersom du push-överförde ändringarna till en gren som övervakas av push-utlösaren. Om arbetsflödet fortfarande körs väntar du en minut och uppdaterar sedan sidan.

    Screenshot of the GitHub interface showing the failed workflow run.

    Arbetsflödet visar en misslyckad distribution.

  3. Om du vill diagnostisera felet väljer du distributionsjobbet och väljer den misslyckade armdistributionsuppgiften.

    Observera att den innehåller följande text:

    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
    

    Det här felmeddelandet anger att distributionen misslyckades eftersom App Service-appen distribuerades med hjälp av den kostnadsfria F1-nivån, som inte stöder funktionen AlwaysOn.

    Viktigt!

    Det här exemplet illustrerar hur det är viktigt att testa dina Bicep-filer, inklusive alla parametervärden som du använder. Det är enkelt att lägga till diskreta fel i resurskonfigurationen eller annan kod. Du kanske inte upptäcker något problem förrän arbetsflödet distribuerar koden och den misslyckas. I en framtida modul får du lära dig några strategier som du kan använda för att verifiera och testa din Bicep-kod.

Åtgärda Bicep-filen och se arbetsflödet utlösas igen

Du pratar med din kollega om den misslyckade distributionen. Tillsammans bestämmer du dig för att inställningen AlwaysOn endast behöver tillämpas för din produktionsmiljö. Här kan du åtgärda problemet som orsakade distributionsfelet genom att tillämpa den nya regel som du bestämmer dig för att använda.

  1. I Visual Studio Code lägger du till nya egenskaper för varje miljötyp i variabeln 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. Ändra programmets inställning så att det använder lämpligt konfigurationsmappningsvärde alwaysOn för miljötypen:

    resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
  3. Spara ändringarna i filen.

  4. I Visual Studio Code-terminalen checkar du in ändringarna och push-överför dem:

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

Kontrollera att arbetsflödet lyckas

  1. Gå tillbaka till listan över arbetsflöden i GitHub. välj arbetsflödet.

  2. Välj den senaste körningen. Om arbetsflödet fortfarande körs väntar du en minut och uppdaterar sedan sidan.

    Arbetsflödeskörningen visas.

    Screenshot of the GitHub interface showing the successful workflow run.

    Arbetsflödet visar en lyckad distribution. Det lyckades den här gången eftersom du använde en giltig Bicep-fil.

Rensa resurserna

Nu när du har slutfört övningen kan du ta bort resurserna så att du inte debiteras för dem.

Kör följande kommando i Visual Studio Code-terminalen:

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

Resursgruppen tas bort i bakgrunden.

Remove-AzResourceGroup -Name ToyWebsite -Force