Övning – Lägga till en Bicep-distributionsuppgift i pipelinen
Du har skapat en grundläggande pipeline och du har konfigurerat dina Azure- och Azure Pipelines-miljöer för att ansluta. Nu är du redo att distribuera webbplatsens Bicep-fil till Azure från din pipeline.
I den här övningen kommer du att:
- Lägg till en Bicep-fil på lagringsplatsen.
- Lägg till ett pipelinesteg för att distribuera Bicep-filen.
- Kör pipelinen igen och kontrollera att den har distribuerat webbplatsen.
Lägg till webbplatsens Bicep-fil på Git-lagringsplatsen
Du har redan förberett webbplatsens Bicep-fil. Du kan använda Bicep-filen för att distribuera olika konfigurationer av webbplatsresurserna, beroende på miljö och konfiguration. Här lägger du till Bicep-filen på lagringsplatsen.
Öppna Visual Studio Code Explorer.
Skapa en ny fil med namnet main.bicep i distributionsmappen. Se till att du skapar filen i distributionsmappen och inte i roten på lagringsplatsen:
Kopiera följande kod till filen main.bicep :
@description('The Azure region into which the resources should be deployed.') param location string = resourceGroup().location @description('The type of environment. This must be nonprod or prod.') @allowed([ 'nonprod' 'prod' ]) param environmentType string @description('Indicates whether to deploy the storage account for toy manuals.') param deployToyManualsStorageAccount bool @description('A unique suffix to add to resource names that need to be globally unique.') @maxLength(13) param resourceNameSuffix string = uniqueString(resourceGroup().id) var appServiceAppName = 'toy-website-${resourceNameSuffix}' var appServicePlanName = 'toy-website-plan' var toyManualsStorageAccountName = 'toyweb${resourceNameSuffix}' // Define the SKUs for each component based on the environment type. var environmentConfigurationMap = { nonprod: { appServicePlan: { sku: { name: 'F1' capacity: 1 } } toyManualsStorageAccount: { sku: { name: 'Standard_LRS' } } } prod: { appServicePlan: { sku: { name: 'S1' capacity: 2 } } toyManualsStorageAccount: { sku: { name: 'Standard_ZRS' } } } } var toyManualsStorageAccountConnectionString = deployToyManualsStorageAccount ? 'DefaultEndpointsProtocol=https;AccountName=${toyManualsStorageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${toyManualsStorageAccount.listKeys().keys[0].value}' : '' resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location sku: environmentConfigurationMap[environmentType].appServicePlan.sku } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true siteConfig: { appSettings: [ { name: 'ToyManualsStorageAccountConnectionString' value: toyManualsStorageAccountConnectionString } ] } } } resource toyManualsStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = if (deployToyManualsStorageAccount) { name: toyManualsStorageAccountName location: location kind: 'StorageV2' sku: environmentConfigurationMap[environmentType].toyManualsStorageAccount.sku }
Spara ändringarna i filen.
I Visual Studio Code-terminalen kör du den här koden för att mellanlagra ändringarna, checka in ändringarna och skicka ändringarna till lagringsplatsen:
git add deploy/main.bicep git commit -m 'Add Bicep file' git push
Ersätt pipelinestegen
Uppdatera sedan pipelinedefinitionen för att distribuera Bicep-filen till Azure med hjälp av tjänstanslutningen.
Öppna filen deploy/azure-pipelines.yml i Visual Studio Code.
Före raden
jobs:
lägger du tillvariables:
för att definiera en variabel med namnetdeploymentDefaultLocation
:trigger: none pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 jobs:
Ta bort
script
steget från pipelinedefinitionen genom att ta bort de två nedersta raderna i filen.Dricks
När du arbetar i Visual Studio Code och har installerat Azure Pipelines-tillägget kan du prova att använda tangentkombinationen Ctrl+Space . Den visar en snabbmeny med föreslagna element att lägga till vid din aktuella markörposition.
Längst ned i filen lägger du till en uppgift som använder
AzureResourceManagerTemplateDeployment
uppgiften för att distribuera Bicep-filen:jobs: - job: steps: - task: AzureResourceManagerTemplateDeployment@3 inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
Kommentar
Det är en bra idé att skriva den här koden själv i stället för att kopiera och klistra in den från den här modulen. Var uppmärksam på filens indrag. Om indraget inte är korrekt är YAML-filen inte giltig. Visual Studio Code anger fel genom att visa vågiga rader.
Det här steget använder en systemvariabel,
$(Build.BuildNumber)
, för att namnge distributionen. Variabeln kan hjälpa dig att enkelt se vilken pipelinekörning en distribution motsvarar.Aktivitetsegenskapen
location
krävs avAzureResourceManagerTemplateDeployment
aktiviteten. Den anger i vilken Azure-region en resursgrupp ska skapas. I den här övningen har du redan skapat en resursgrupp, så platsen du anger här spelar ingen roll. Men du måste ange värdet ändå. Här anger du värdet för variabelndeploymentDefaultLocation
som du angav i ett tidigare steg.Spara ändringarna i filen. Filen bör se ut som i detta exempel:
trigger: none pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 jobs: - job: steps: - task: AzureResourceManagerTemplateDeployment@3 inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(deploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
I Visual Studio Code-terminalen mellanlagra du ändringarna, checkar in dem på lagringsplatsen och push-överför dem till Azure Repos:
git add deploy/azure-pipelines.yml git commit -m 'Add deployment task to pipeline' git push
Lägga till pipelinevariabler
Välj Pipelines i webbläsaren.
Välj din pipeline.
Välj Redigera.
Välj variabler.
Välj Ny variabel.
I Namn anger du ServiceConnectionName. I Värde anger du ToyWebsite.
Låt kryssrutorna vara avmarkerade och välj OK.
Om du vill skapa fler variabler väljer du +.
Skapa följande variabler på samma sätt som du skapade variabeln ServiceConnectionName :
Variabelnamn Värde ResourceGroupName ToyWebsite EnvironmentType nonprod Slutför stegen igen för att skapa en variabel med namnet DeployToyManualsStorageAccount med värdet true. För den här variabeln väljer du kryssrutan Låt användare åsidosätta det här värdet när de kör den här pipelinen .
När du har skapat alla fyra variablerna väljer du Spara.
Kör din pipeline
Nu är du redo att köra pipelinen!
Mallen innehåller ett lagringskonto som ditt webbplatsteam använder för att lagra instruktionsböcker för leksaker. Eftersom du fortfarande testar din miljö behöver du inte distribuera lagringskontot varje gång du distribuerar webbplatsen. Därför skapade du en Bicep-parameter för att kontrollera om lagringskontot har distribuerats. Här kör du pipelinen och åsidosätter distributionen så att den inte distribuerar lagringskontot den här gången.
Markera Kör.
Fönstret Kör pipeline visas. I det här fönstret kan du konfigurera inställningar för den här specifika körningen av pipelinen.
Välj variabler.
Välj variabeln DeployToyManualsStorageAccount och ändra värdet till false. Välj sedan Uppdatera.
Välj bakåtpilen.
Om du vill starta en ny pipelinekörning väljer du Kör. Det kan ta några minuter att starta pipelinen. När pipelinen har startat kan det ta några minuter att slutföra distributionen.
Öppna jobbet genom att välja Jobb i avsnittet Jobb. Du kan övervaka jobbet när det körs, eller så kan du vänta tills jobbet har slutförts för att granska dess historik.
Vänta tills jobbet har slutförts.
Välj Jobb.
Välj en kötidsvariabel som används.
Det åsidosatta värdet för den här pipelinekörningen visas. Variabelns
DeployToyManualsStorageAccount
värde är falskt eftersom du överskrör det ursprungliga värdet.Granska resten av pipelinens utdata.
Pipelinen visar en lyckad distribution.
Verifiera distributionen
Gå till Azure-portalen.
Välj Resursgrupper på den vänstra menyn.
Välj ToyWebsite.
I Översikt visar du distributionsstatus. Du kan se att en distribution lyckades.
Välj 1 lyckades för att visa information om distributionen.
Distributionsnamnet är samma som namnet på pipelinekörningen.
Om du vill se vilka resurser som har distribuerats väljer du distributionen. Om du vill expandera distributionen för att se mer information väljer du Distributionsinformation. I det här fallet finns det en Azure App Service-plan och en app.