Øvelse – Udgiv et modul til en registreringsdatabase
I dit legetøjsfirma har du publiceret dine Bicep-moduler i en registreringsdatabase. Du har kørt publiceringsprocessen manuelt fra din egen computer. Nu skal du oprette en pipeline til håndtering af publiceringsprocessen.
I denne øvelse skal du:
- Opret en objektbeholderregistreringsdatabase til dine Bicep-moduler.
- Føj en lintfase til pipelinen.
- Tilføj en pipelinefase for at publicere modulet i registreringsdatabasen.
- Kontrollér, at pipelinen kører korrekt.
- Kontrollér det udgivne modul i registreringsdatabasen.
Opret en objektbeholderregistreringsdatabase
Før du kan publicere moduler, skal du oprette en registreringsdatabase, som din organisation kan bruge. Her kan du bruge Azure Portal til at oprette en registreringsdatabase.
I din browser oprette en ny objektbeholderregistreringsdatabase på Azure Portal.
På fanen Grundlæggende skal du vælge dit målabonnement og den ToyReusable ressourcegruppe, du oprettede tidligere.
Angiv et navn til registreringsdatabasen og en placering, der er tæt på dig.
Vigtig
Registreringsdatabasenavnet skal være entydigt i Azure og indeholde 5-50 alfanumeriske tegn. En markering ud for navnet på registreringsdatabasen angiver, at det valgte navn er tilgængeligt.
For SKU-skal du vælge Basic.
Behold standardværdierne for de andre konfigurationsindstillinger.
Vælg Gennemse , og opret.
Gennemse de indstillinger, der viser Validering overført, og vælg derefter Opret.
Vent på, at installationen afsluttes, hvilket normalt tager 1-2 minutter.
Når meddelelsen installation lykkedes vises, skal du vælge Gå til ressource for at åbne objektbeholderregistreringsdatabasen.
Bemærk værdien af indstillingen logonserver i området Overview i objektbeholderdatabasens registreringsdatabase. Det vil være noget i stil med yourregistryname.azurecr.io.
Du skal bruge denne værdi om lidt.
Tilføj en modulmetadatafil
I det foregående undermodul lærte du om vigtigheden af at have en versionsstrategi for dine moduler. Du har også lært, hvordan du bruger modulmetadatafiler til at angive det overordnede og underordnede versionsnummer for dit modul i en pipeline. Her kan du tilføje en metadatafil til dit lagerkontomodul.
I Visual Studio Code skal du udvide mappen moduler/lagerkonto i roden af dit lager.
Opret en ny fil med navnet metadata.json.
Føj følgende indhold til filen:
{ "version": { "major": 1, "minor": 2 } }
Bemærk, at du i metadatafilen definerer de overordnede og underordnede versionsnumre separat. Din pipeline kombinerer disse tal sammen med pipelinens buildnummer til et komplet versionsnummer, hver gang pipelinen kører.
Gem ændringerne i filen.
Opdater din pipelinedefinition, og tilføj en lintfase
Dit lager indeholder en kladde af en pipeline, som du kan bruge som udgangspunkt.
Åbn filen pipeline.yml i mappen moduler/lagerkonto mappe.
Opdater værdien af miljøvariablen
ModuleRegistryServer
til navnet på din objektbeholders server i registreringsdatabasen. Du kopierede det navn tidligere i denne øvelse.Hvis logonserveren for registreringsdatabasen f.eks. er yourregistryname.azurecr.io, ser den sådan ud:
- name: ModuleRegistryServer value: yourregistryname.azurecr.io
Nederst i filen
# To be added
kommentar med følgende definition af lintfase:stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file $(ModuleFilePath) name: LintBicepCode displayName: Run Bicep linter
Føj en publiceringsfase til din pipeline
Nu kan du tilføje endnu en fase for at publicere modulet i din objektbeholderregistreringsdatabase.
Nederst i pipeline.yml-filen skal du definere fasen Publicer og tilføje et trin for at læse versionsnummeret fra modulets metadata.json-fil og angive den som en pipelinevariabel.
- stage: Publish jobs: - job: Publish steps: - script: | majorMinorVersionNumber=$(jq '(.version.major | tostring) + "." + (.version.minor | tostring)' $(ModuleMetadataFilePath) -r ) versionNumber="$majorMinorVersionNumber.$(Build.BuildNumber)" echo "##vso[task.setvariable variable=ModuleVersion;]$versionNumber" name: GetModuleVersionNumber displayName: Get module version number
Trinnet kører et script, der bruger kommandolinjeprogrammet jq til at fortolke JSON-filen.
Under det trin, du har oprettet, skal du tilføje et trin for at publicere modulet i registreringsdatabasen.
- task: AzureCLI@2 name: Publish displayName: Publish module inputs: azureSubscription: $(ServiceConnectionName) scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az bicep publish \ --target 'br:$(ModuleRegistryServer)/$(ModuleName):$(ModuleVersion)' \ --file $(ModuleFilePath)
Bemærk, at dette trin konstruerer værdien af argumentet
--target
dynamisk. Den kombinerer værdien af registreringsdatabaseserveren, modulnavnet og versionsnummeret.Gem ændringerne i filen.
Bekræft og bekræft din pipelinedefinition
Kontrollér, at din storage_account_module.yml-fil ligner følgende eksempel:
trigger: batch: true branches: include: - main paths: include: - 'modules/storage-account/**' variables: - name: ServiceConnectionName value: ToyReusable - name: ModuleName value: storage-account - name: ModuleRegistryServer value: yourregistryname.azurecr.io - name: ModuleFilePath value: modules/storage-account/main.bicep - name: ModuleMetadataFilePath value: modules/storage-account/metadata.json pool: vmImage: ubuntu-latest stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file $(ModuleFilePath) name: LintBicepCode displayName: Run Bicep linter - stage: Publish jobs: - job: Publish steps: - script: | majorMinorVersionNumber=$(jq '(.version.major | tostring) + "." + (.version.minor | tostring)' $(ModuleMetadataFilePath) -r ) versionNumber="$majorMinorVersionNumber.$(Build.BuildNumber)" echo "##vso[task.setvariable variable=ModuleVersion;]$versionNumber" name: GetModuleVersionNumber displayName: Get module version number - task: AzureCLI@2 name: Publish displayName: Publish module inputs: azureSubscription: $(ServiceConnectionName) scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az bicep publish \ --target 'br:$(ModuleRegistryServer)/$(ModuleName):$(ModuleVersion)' \ --file $(ModuleFilePath)
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 publish stages to storage account module pipeline" git push
Umiddelbart efter du har pushet, starter Azure Pipelines en ny pipelinekørsel.
Overvåg pipelinen
Vælg Pipelines>Pipelinesi browseren.
Vælg den aktive pipelinekørsel.
Pipelinekørslen vises.
Vent, indtil pipelinen er færdig. Bicep-modulet udgives i din objektbeholderregistreringsdatabase.
Bemærk pipelinens buildnummer, som omfatter dags dato og et entydigt revisionsnummer.
Gennemse modulet i registreringsdatabasen
Du kan også få vist det publicerede modul på Azure Portal.
I din browser skal du gå til Azure Portal.
Gå til ressourcegruppen ToyReusable.
Vælg den objektbeholderregistreringsdatabase, du oprettede tidligere.
Vælg ruden Lagre i menuen. Vælg derefter det moduler\lagerkonto lager, som repræsenterer det modul, som din pipeline publicerede.
Bemærk, at der er en enkelt -kode, som svarer til versionsnummeret på det modul, som din pipeline publicerede. Den overordnede version (1) og den underordnede version (2) svarer til de versionsnumre, du har defineret i metadata.json-filen. Revisionsnummeret (20230407.3) svarer til pipelinens buildnummer.
Ryd op i ressourcerne
Nu, hvor du har fuldført øvelsen, kan du fjerne ressourcerne, så du ikke faktureres for dem.
Kør følgende kommando i Visual Studio Code-terminalen:
az group delete --resource-group ToyReusable --yes --no-wait
Ressourcegruppen slettes i baggrunden.
Remove-AzResourceGroup -Name ToyReusable -Force
Du kan også fjerne tjenesteforbindelsen og Azure DevOps-projektet.
Tjenesteforbindelse
- I Azure DevOps-projektet skal du vælge Projektindstillinger>Tjenesteforbindelser.
- Vælg ToyReusable.
- I øverste højre hjørne skal du vælge de tre prikker for Flere handlinger.
- Vælg Slet, og bekræft sletningen.
Registrering af Azure App
- På portalens startside skal du søge efter Microsoft Entra ID og vælge det på listen over Services.
- Gå til Administrer>appregistreringer.
- I Slettede programmer vælge legetøj, der kan genbruges,.
- Vælg Slet permanent, og følg vejledningen.
Azure DevOps-projekt
- I Azure DevOps-projektet skal du vælge Projektindstillinger>Oversigt.
- Fra Slet projekt vælge Slet.
- Angiv projektnavnet, og bekræft sletningen.