Oefening: een Bicep-implementatietaak toevoegen aan de pijplijn
U hebt een basispijplijn gemaakt en u hebt uw Azure- en Azure Pipelines-omgevingen geconfigureerd om verbinding te maken. U bent nu klaar om het Bicep-bestand van uw website vanuit uw pijplijn in Azure te implementeren.
In deze oefening gaat u het volgende doen:
- Voeg een Bicep-bestand toe aan uw opslagplaats.
- Voeg een pijplijnstap toe om uw Bicep-bestand te implementeren.
- Voer uw pijplijn opnieuw uit en controleer of uw website is geïmplementeerd.
Het Bicep-bestand van uw website toevoegen aan de Git-opslagplaats
U hebt het Bicep-bestand van uw website al voorbereid. U kunt het Bicep-bestand gebruiken om verschillende configuraties van de websitebronnen te implementeren, afhankelijk van de omgeving en configuratie. Hier voegt u uw Bicep-bestand toe aan uw opslagplaats.
Open the Visual Studio Code Explorer.
Maak in de implementatiemap een nieuw bestand met de naam main.bicep. Zorg ervoor dat u het bestand in de implementatiemap maakt en niet in de hoofdmap van de opslagplaats:
Kopieer de volgende code naar het bestand 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 }
Sla de wijzigingen in het bestand op.
Voer in de Visual Studio Code-terminal deze code uit om de wijzigingen te faseren, de wijzigingen door te voeren en de wijzigingen naar uw opslagplaats te pushen:
git add deploy/main.bicep git commit -m 'Add Bicep file' git push
De pijplijnstappen vervangen
Werk vervolgens uw pijplijndefinitie bij om uw Bicep-bestand in Azure te implementeren met behulp van de serviceverbinding.
Open in Visual Studio Code het bestand deploy/azure-pipelines.yml .
Voeg vóór
jobs:
de regel toe om een variabele met devariables:
naamdeploymentDefaultLocation
te definiëren:trigger: none pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 jobs:
Als u de
script
stap uit de pijplijndefinitie wilt verwijderen, verwijdert u de onderste twee regels van het bestand.Tip
Wanneer u in Visual Studio Code werkt en de Azure Pipelines-extensie hebt geïnstalleerd, gebruikt u de toetsencombinatie Ctrl+Spatiebalk . Er wordt een contextmenu met voorgestelde elementen weergegeven die u op de huidige cursorpositie kunt toevoegen.
Voeg onder aan het bestand een taak toe die gebruikmaakt van de
AzureResourceManagerTemplateDeployment
taak om uw Bicep-bestand te implementeren: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)
Notitie
Het is een goed idee om deze code zelf te typen in plaats van deze code uit deze module te kopiëren en plakken. Let op de inspringing van het bestand. Als uw inspringing niet juist is, is uw YAML-bestand niet geldig. Visual Studio Code geeft fouten aan door golvende lijnen weer te geven.
In deze stap wordt een systeemvariabele gebruikt
$(Build.BuildNumber)
om de implementatie een naam te geven. Met de variabele kunt u eenvoudig zien met welke pijplijn een implementatie wordt uitgevoerd.De
location
taakeigenschap is vereist voor deAzureResourceManagerTemplateDeployment
taak. Hiermee geeft u de Azure-regio op waarin een resourcegroep moet worden gemaakt. In deze oefening hebt u al een resourcegroep gemaakt, zodat de locatie die u hier opgeeft, niet van belang is. Maar u moet de waarde toch opgeven. Hier stelt u deze in op de waarde van dedeploymentDefaultLocation
variabele die u in een vorige stap hebt ingesteld.Sla de wijzigingen in het bestand op. Uw bestand moet eruitzien zoals dit voorbeeld:
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)
Plaats uw wijzigingen in de Visual Studio Code-terminal, voer ze door naar uw opslagplaats en push ze naar Azure-opslagplaatsen:
git add deploy/azure-pipelines.yml git commit -m 'Add deployment task to pipeline' git push
Pijplijnvariabelen toevoegen
Selecteer Pijplijnen in uw browser.
Selecteer uw pijplijn.
Selecteer Bewerken.
Selecteer Variabelen.
Selecteer Nieuwe variabele.
Voer in Naam ServiceConnectionName in. Voer In Waarde ToyWebsite in.
Laat de selectievakjes uitgeschakeld en selecteer OK.
Als u meer variabelen wilt maken, selecteert u +.
Maak de volgende variabelen op dezelfde manier als u de variabele ServiceConnectionName hebt gemaakt:
Naam van de variabele Weergegeven als ResourceGroupName Speelgoedwebsite EnvironmentType niet-prod Voer de stappen opnieuw uit om een variabele met de naam DeployToyManualsStorageAccount te maken met de waarde True. Selecteer voor deze variabele het selectievakje Laat gebruikers deze waarde overschrijven bij het uitvoeren van deze pijplijn .
Wanneer u alle vier de variabelen hebt gemaakt, selecteert u Opslaan.
Uw pijplijn uitvoeren
Nu bent u klaar om uw pijplijn uit te voeren.
Uw sjabloon bevat een opslagaccount dat uw websiteteam gebruikt voor het opslaan van instructiehandleidingen voor speelgoed. Omdat u uw omgeving nog steeds test, hoeft u het opslagaccount niet telkens te implementeren wanneer u de website implementeert. U hebt dus een Bicep-parameter gemaakt om te bepalen of het opslagaccount is geïmplementeerd. Hier voert u de pijplijn uit en overschrijft u de implementatie, zodat het opslagaccount deze keer niet wordt geïmplementeerd.
Selecteer Uitvoeren.
Het deelvenster Pijplijn uitvoeren wordt weergegeven. In dit deelvenster kunt u instellingen configureren voor deze specifieke uitvoering van de pijplijn.
Selecteer Variabelen.
Selecteer de variabele DeployToyManualsStorageAccount en wijzig de waarde ervan in false. Selecteer Vervolgens Bijwerken.
Selecteer de pijl-terug.
Als u een nieuwe pijplijnuitvoering wilt starten, selecteert u Uitvoeren. Het kan enkele minuten duren voordat de pijplijn is gestart. Nadat de pijplijn is gestart, kan het enkele minuten duren voordat de implementatie is voltooid.
Als u de taak wilt openen, selecteert u Taak in de sectie Taken. U kunt de taak controleren terwijl deze wordt uitgevoerd, of u kunt wachten totdat de taak is voltooid om de geschiedenis ervan te controleren.
Wacht tot de taak is voltooid.
Selecteer Functie.
Selecteer 1 gebruikte tijdsvariabele in de wachtrij.
De genegeerde waarde voor deze pijplijnuitvoering wordt weergegeven. De waarde van de
DeployToyManualsStorageAccount
variabele is onwaar omdat u de oorspronkelijke waarde hebt overschreven.Controleer de rest van de pijplijnuitvoer.
De pijplijn toont een geslaagde implementatie.
De implementatie controleren
Ga naar de Azure Portal.
Selecteer Resourcegroepen in het linkermenu.
Selecteer ToyWebsite.
Bekijk in Overzicht de implementatiestatus. U kunt zien dat één implementatie is geslaagd.
Selecteer 1 geslaagd om de details van de implementatie te bekijken.
De implementatienaam is hetzelfde als de naam van de pijplijnuitvoering.
Als u wilt zien welke resources zijn geïmplementeerd, selecteert u de implementatie. Als u de implementatie wilt uitbreiden om meer details te zien, selecteert u Implementatiedetails. In dit geval is er een Azure-app Service-plan en een app.