Cvičení – aktualizace triggeru kanálu

Dokončeno

Kolega vás požádá, abyste na webu společnosti zapnuli funkci AlwaysOn služby App Service, takže webová aplikace je vždy spuštěná.

V tomto cvičení aktualizujete kanál, který jste vytvořili, aby se automaticky spustil při každé změně souboru v hlavní větvi. Aktualizovaný kanál použijete k nasazení požadované změny konfigurace na web.

Během tohoto procesu:

  • Aktualizujte kanál, aby se aktivoval automaticky při každé změně souboru ve složce nasazení v hlavní větvi.
  • Změňte soubor Bicep.
  • Ověřte, že se kanál spouští automaticky.

Aktualizace triggeru tak, aby byla založená na větvích

  1. V editoru Visual Studio Code otevřete soubor deploy/azure-pipelines.yml .

  2. Odeberte ruční aktivační událost na prvním řádku.

  3. Na první řádek přidejte následující definici triggeru:

    trigger:
      batch: true
      branches:
        include:
        - main
    

    Všimněte si, že povolíte také řízení souběžnosti, abyste se vyhnuli tomu, že kanál běží vícekrát současně.

  4. Uložte změny souboru.

  5. Potvrďte změny, ale změny zatím nenasdílejte. Brzy je nasdílíš.

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

Aktualizace souboru Bicep

  1. V editoru Visual Studio Code otevřete soubor main.bicep .

  2. appServiceApp Do vlastnosti definice siteConfig prostředku přidejte alwaysOn vlastnost s hodnotou 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. Uložte změny souboru.

  4. V terminálu editoru Visual Studio Code spusťte následující kód pro potvrzení změn a nasdílejte obě potvrzení:

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

Ověření selhání kanálu

  1. V prohlížeči vyberte Kanály a pak vyberte kanál.

  2. Výběrem posledního spuštění zobrazíte, že se kanál spustil automaticky. Kanál se spustil, protože jste odeslali změny do větve, kterou trigger větve monitoruje. Pokud kanál stále běží, počkejte minutu a pak aktualizujte stránku.

    Snímek obrazovky Azure DevOps, který zobrazuje neúspěšné spuštění kanálu

    Kanál zobrazuje neúspěšné nasazení.

  3. Pokud chcete diagnostikovat selhání, vyberte úlohu v části Úlohy a pak vyberte neúspěšnou úlohu AzureResourceManagerTemplateDeployment . Posuňte se a zobrazte celou chybovou zprávu. Chybová zpráva obsahuje následující 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

    Tato chybová zpráva značí, že nasazení selhalo, protože aplikace služby App Service byla nasazena pomocí úrovně Free F1, která nepodporuje funkci AlwaysOn.

    Důležité

    Tento příklad ukazuje, jak je důležité otestovat soubory Bicep, včetně všech hodnot parametrů, které používáte. Přidání drobných chyb do konfigurace prostředku nebo jiného kódu je snadné. Dokud váš kanál nenasadí kód, nemusí se objevit problém, který selže. V dalším modulu se seznámíte s některými strategiemi, které můžete použít k ověření a otestování kódu Bicep.

Oprava souboru Bicep a opětovné spuštění kanálu

Promluvíte si se svým kolegou o neúspěšném nasazení. Společně se rozhodnete, že nastavení AlwaysOn se musí použít jenom pro vaše produkční prostředí. Tady opravíte problém, který způsoboval selhání nasazení použitím nového pravidla, které se rozhodnete použít.

  1. V editoru Visual Studio Code přidejte do proměnné nové vlastnosti pro každý typ environmentConfigurationMap prostředí:

    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. Změňte nastavení aplikace alwaysOn tak, aby používala odpovídající hodnotu mapování konfigurace pro typ prostředí:

    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. Uložte změny souboru.

  4. V terminálu editoru Visual Studio Code potvrďte změny a nasdílejte je:

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

Ověřte, že kanál proběhne úspěšně.

  1. V Azure DevOps se vraťte do seznamu Pipelines a vyberte svůj kanál.

  2. Vyberte poslední spuštění. Pokud kanál stále běží, počkejte minutu a pak aktualizujte stránku.

    Snímek obrazovky Azure DevOps znázorňující úspěšné spuštění kanálu

    Kanál ukazuje úspěšné nasazení. Tentokrát proběhl úspěšně, protože jste použili platný soubor Bicep.

Vyčištění prostředků

Teď, když jste cvičení dokončili, můžete odebrat prostředky, abyste za ně neúčtoli.

V terminálu editoru Visual Studio Code spusťte následující příkaz:

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

Skupina prostředků se odstraní na pozadí.

Remove-AzResourceGroup -Name ToyWebsite -Force