Övning – Uppdatera pipelinens utlösare
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 pipelinen som du skapade så att den körs automatiskt när en fil ändras på huvudgrenen. Du använder den uppdaterade pipelinen för att distribuera den begärda konfigurationsändringen till webbplatsen.
Under processen gör du följande:
- Uppdatera pipelinen så att den utlöses automatiskt när en fil ändras i distributionsmappen på huvudgrenen.
- Gör en ändring i Bicep-filen.
- Kontrollera att pipelinen körs automatiskt.
Uppdatera utlösaren så att den är grenbaserad
Öppna filen deploy/azure-pipelines.yml i Visual Studio Code.
Ta bort den manuella utlösaren på den första raden.
Lägg till följande utlösardefinition på den första raden:
trigger: batch: true branches: include: - main
Observera att du även aktiverar samtidighetskontroll för att undvika att pipelinen körs flera gånger samtidigt.
Spara ändringarna i filen.
Genomför ändringarna, men push-överför inte ändringarna ännu. Du kommer att pusha dem snart.
git add . git commit -m 'Add branch trigger'
Uppdatera Bicep-filen
Öppna filen main.bicep i Visual Studio Code.
I resursdefinitionens
appServiceApp
siteConfig
egenskap lägger du tillalwaysOn
egenskapen med värdettrue
: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 } ] } } }
Spara ändringarna i filen.
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 pipelinen misslyckas
I webbläsaren väljer du Pipelines och sedan din pipeline.
Välj den senaste körningen för att se att pipelinen kördes automatiskt. Pipelinen kördes eftersom du push-överförde ändringarna till en gren som grenutlösaren övervakar. Om pipelinen fortfarande körs väntar du en minut och uppdaterar sedan sidan.
Pipelinen visar en misslyckad distribution.
Om du vill diagnostisera felet går du till Jobb, väljer jobbet och väljer sedan den misslyckade AzureResourceManagerTemplateDeployment-uppgiften . Rulla om du vill se det fullständiga felmeddelandet. Felmeddelandet 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 din pipeline 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 pipelinen utlöses 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.
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' } } } }
Ändra programmets inställning så att det använder lämpligt konfigurationsmappningsvärde
alwaysOn
för miljötypen: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 } ] } } }
Spara ändringarna i filen.
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 pipelinen lyckas
I Azure DevOps går du tillbaka till listan Pipelines och väljer din pipeline.
Välj den senaste körningen. Om pipelinen fortfarande körs väntar du en minut och uppdaterar sedan sidan.
Pipelinen 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