Øvelse – Føj lint og valider faser til din pipeline
Du har talt med dit team og har besluttet at automatisere dine udrulninger yderligere ved hjælp af en pipeline. Du vil skabe større tillid til det, du udruller.
I denne øvelse skal du føje valideringsfaser til din pipeline. Du skal derefter køre valideringen af linter og forhåndskontrol før hver udrulning.
Under processen skal du:
- Opdater din eksisterende pipeline for at føje to nye faser til lint, og valider din Bicep-kode.
- Kør din pipeline.
- Løs eventuelle problemer, som din pipeline registrerer.
Opdater din pipeline for at forberede dig på faser
Først skal du opdatere pipelinefilen for at definere en fase. Azure Pipelines opretter automatisk en enkelt fase for dig, men da du snart tilføjer flere faser, skal du opdatere din pipeline for eksplicit at definere faser.
I Visual Studio Code skal du åbne filen azure-pipelines.yml i mappen installere.
Fjern alt i filen fra linje 14 til bunden af filen. Sørg også for at fjerne
jobs:
linje.Tilføj følgende kode nederst i filen:
stages: - stage: Deploy jobs: - job: Deploy steps: - task: AzureResourceManagerTemplateDeployment@3 name: Deploy displayName: Deploy to Azure inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(DeploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType)
Drikkepenge
YAML-filer er følsomme for indrykning. Uanset om du skriver eller indsætter denne kode, skal du sørge for, at indrykningen er korrekt. I næste afsnit kan du se den komplette YAML-pipelinedefinition, så du kan kontrollere, at filen stemmer overens.
Føj lint- og valideringsfaser til din pipeline
Under
stages:
-linjen skal du tilføje en lintfase:- stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file deploy/main.bicep name: LintBicepCode displayName: Run Bicep linter
Denne fase definerer et enkelt trin, der kører kommandoen
az bicep build
for at linte Bicep-filen.Under de linjer, du lige har tilføjet, skal du tilføje en valideringsfase:
- stage: Validate jobs: - job: ValidateBicepCode displayName: Validate Bicep code steps: - task: AzureResourceManagerTemplateDeployment@3 name: RunPreflightValidation displayName: Run preflight validation inputs: connectedServiceName: $(ServiceConnectionName) location: $(deploymentDefaultLocation) deploymentMode: Validation resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType)
Denne fase definerer et enkelt trin, der kører forhåndskontrollen. Bemærk, at dette trin indeholder en reference til din tjenesteforbindelse, fordi valideringsprocessen for forhåndskontrol kræver kommunikation med Azure.
Din pipelinedefinition har nu tre faser. Den første kører linter på din Bicep-fil, den anden udfører en forhåndsgodkendelse, og den tredje udfører udrulningen på Azure.
Gem filen.
Konfigurer linteren
Bicep linter viser som standard en advarsel, når der registreres et problem med filen. Azure Pipelines behandler ikke linter-advarsler som problemer, der skal stoppe din pipeline. Hvis du vil tilpasse denne funktionsmåde, skal du oprette en bicepconfig.json fil, der omkonfigurerer linteren.
Tilføj en ny fil i mappen installer , og navngiv den bicepconfig.json.
Kopiér følgende kode til filen:
{ "analyzers": { "core": { "enabled": true, "verbose": true, "rules": { "adminusername-should-not-be-literal": { "level": "error" }, "max-outputs": { "level": "error" }, "max-params": { "level": "error" }, "max-resources": { "level": "error" }, "max-variables": { "level": "error" }, "no-hardcoded-env-urls": { "level": "error" }, "no-unnecessary-dependson": { "level": "error" }, "no-unused-params": { "level": "error" }, "no-unused-vars": { "level": "error" }, "outputs-should-not-contain-secrets": { "level": "error" }, "prefer-interpolation": { "level": "error" }, "secure-parameter-default": { "level": "error" }, "simplify-interpolation": { "level": "error" }, "protect-commandtoexecute-secrets": { "level": "error" }, "use-stable-vm-image": { "level": "error" } } } } }
Gem filen.
Bekræft og bekræft din pipelinedefinition
Kontrollér, at din azure-pipelines.yml-fil ligner følgende fil:
trigger: batch: true branches: include: - main pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file deploy/main.bicep name: LintBicepCode displayName: Run Bicep linter - stage: Validate jobs: - job: ValidateBicepCode displayName: Validate Bicep code steps: - task: AzureResourceManagerTemplateDeployment@3 name: RunPreflightValidation displayName: Run preflight validation inputs: connectedServiceName: $(ServiceConnectionName) location: $(deploymentDefaultLocation) deploymentMode: Validation resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) - stage: Deploy jobs: - job: Deploy steps: - task: AzureResourceManagerTemplateDeployment@3 name: Deploy displayName: Deploy to Azure inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(DeploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType)
Hvis den ikke gør det, skal du opdatere den, så den stemmer overens med dette eksempel, og derefter gemme den.
Bekræft og send dine ændringer til Git-lageret ved at køre følgende kommandoer i Visual Studio Code-terminalen:
git add . git commit -m "Add lint and validation stages" git push
Umiddelbart efter du har pushet, starter Azure Pipelines en ny pipelinekørsel.
Få vist pipelinekørslen
Gå til Pipelinesi din browser.
Vælg den seneste kørsel af pipelinen.
Hvis pipelinen stadig kører, skal du vente, indtil den er færdig. Selvom Azure Pipelines automatisk opdaterer siden med den seneste status, er det en god idé at opdatere siden lejlighedsvist.
Bemærk, at pipelinekørslen nu viser de tre faser, du har defineret i YAML-filen. Bemærk også, at fasen med lint mislykkedes.
Vælg fasen Lint for at få vist detaljerne.
Vælg trinnet Kør Bicep linter for at få vist pipelineloggen.
Bemærk, at den viste fejl ligner følgende:
Fejl no-unused-params: Parameteren "storageAccountNameParam" er erklæret, men bruges aldrig.
Denne fejl angiver, at linteren fandt en regelovertrædelse i din Bicep-fil.
Ret linter-fejlen
Nu, hvor du har identificeret problemet, kan du løse det i din Bicep-fil.
Åbn filen main.bicep i mappen installér i Visual Studio Code.
Bemærk, at Bicep linter også har registreret, at parameteren
storageAccountNameParam
ikke bruges. Visual Studio Code angiver den ubrugte parameter med en bølgestreg. Normalt vil linjen være gul for at angive en advarsel. Men da du har tilpasset bicepconfig.json-filen, behandler linter koden som en fejl og viser linjen med rødt.param storageAccountNameParam string = uniqueString(resourceGroup().id)
Slet parameteren
storageAccountNameParam
.Gem filen.
Bekræft og send dine ændringer til Git-lageret ved at køre følgende kommandoer i Visual Studio Code-terminalen:
git add . git commit -m "Remove unused parameter" git push
Azure Pipelines udløser igen automatisk en ny kørsel af din pipeline.
Vis pipelinekørslen igen
I din browser skal du gå til din pipeline.
Vælg den seneste kørsel.
Vent, indtil pipelinekørslen er fuldført. Selvom Azure Pipelines automatisk opdaterer siden med den seneste status, er det en god idé at opdatere siden lejlighedsvist.
Bemærk, at Lint-fasen blev fuldført, men fasen Valider mislykkedes.
Vælg fasen Valider for at få vist detaljerne.
Vælg trinnet Kør forhåndsbelysning for at få vist pipelineloggen.
Bemærk, at den fejl, der vises i logfilen, indeholder følgende meddelelse:
mystorageresourceNameSuffix er ikke et gyldigt lagerkontonavn. Lagerkontonavnet skal være mellem 3 og 24 tegn langt og kun bruge tal og små bogstaver.
Denne fejl angiver, at navnet på lagerkontoen ikke er gyldigt.
Ret valideringsfejlen
Du har fundet et andet problem i Bicep-filen. Her kan du løse problemet.
Åbn filen main.bicep i mappen installér i Visual Studio Code.
Se definitionen af variablen
storageAccountName
:var appServiceAppName = 'toy-website-${resourceNameSuffix}' var appServicePlanName = 'toy-website' var applicationInsightsName = 'toywebsite' var logAnalyticsWorkspaceName = 'workspace-${resourceNameSuffix}' var storageAccountName = 'mystorageresourceNameSuffix'
Der ser ud til at være en tastefejl, og strenginterpolering er ikke konfigureret korrekt.
Opdater variablen
storageAccountName
for at bruge strenginterpolering korrekt:var storageAccountName = 'mystorage${resourceNameSuffix}'
Gem filen.
Bekræft og send dine ændringer til Git-lageret ved at køre følgende kommandoer i Visual Studio Code-terminalen:
git add . git commit -m "Fix string interpolation" git push
Få vist den vellykkede pipelinekørsel
I din browser skal du gå til din pipeline.
Vælg den seneste kørsel.
Vent, indtil pipelinekørslen er fuldført. Selvom Azure Pipelines automatisk opdaterer siden med den seneste status, er det en god idé at opdatere siden lejlighedsvist.
Bemærk, at alle tre faser i pipelinen er fuldført:
Du har nu en pipeline, der registrerer fejl i din Bicep-kode tidligt i installationsprocessen og derefter udruller til Azure, hvis der ikke er nogen fejl.