Øvelse – Udgiv et modul til en registreringsdatabase

Fuldført

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.

  1. I din browser oprette en ny objektbeholderregistreringsdatabase på Azure Portal.

  2. På fanen Grundlæggende skal du vælge dit målabonnement og den ToyReusable ressourcegruppe, du oprettede tidligere.

  3. 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.

  4. For SKU-skal du vælge Basic.

    Behold standardværdierne for de andre konfigurationsindstillinger.

  5. Vælg Gennemse , og opret.

    Skærmbillede af Azure Portal, der viser siden til oprettelse af objektbeholder i registreringsdatabasen.

  6. Gennemse de indstillinger, der viser Validering overført, og vælg derefter Opret.

    Vent på, at installationen afsluttes, hvilket normalt tager 1-2 minutter.

  7. Når meddelelsen installation lykkedes vises, skal du vælge Gå til ressource for at åbne objektbeholderregistreringsdatabasen.

    Skærmbillede af Azure Portal, der viser installationen af objektbeholderen i registreringsdatabasen, hvor knappen til at gå til en ressource er fremhævet.

  8. 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.

    Skærmbillede af Azure Portal, der viser oplysninger om objektbeholderens registreringsdatabase, hvor logonserveren er fremhævet.

    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.

  1. I Visual Studio Code skal du udvide mappen moduler/lagerkonto i roden af dit lager.

  2. Opret en ny fil med navnet metadata.json.

    Skærmbillede af Visual Studio Code, der viser placeringen af metadata-dot JSON-filen.

  3. 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.

  4. 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.

  1. Åbn filen pipeline.yml i mappen moduler/lagerkonto mappe.

  2. 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
    
  3. 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.

  1. 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.

  2. 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.

  3. Gem ændringerne i filen.

Bekræft og bekræft din pipelinedefinition

  1. 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.

  2. 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

  1. Vælg Pipelines>Pipelinesi browseren.

  2. Vælg den aktive pipelinekørsel.

  3. Pipelinekørslen vises.

    Vent, indtil pipelinen er færdig. Bicep-modulet udgives i din objektbeholderregistreringsdatabase.

  4. 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.

  1. I din browser skal du gå til Azure Portal.

  2. Gå til ressourcegruppen ToyReusable.

  3. Vælg den objektbeholderregistreringsdatabase, du oprettede tidligere.

  4. Vælg ruden Lagre i menuen. Vælg derefter det moduler\lagerkonto lager, som repræsenterer det modul, som din pipeline publicerede.

    Skærmbillede af Azure Portal, der viser et Bicep-modul i objektbeholderregistreringsdatabasen.

    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

    1. I Azure DevOps-projektet skal du vælge Projektindstillinger>Tjenesteforbindelser.
    2. Vælg ToyReusable.
    3. I øverste højre hjørne skal du vælge de tre prikker for Flere handlinger.
    4. Vælg Slet, og bekræft sletningen.
  • Registrering af Azure App

    1. På portalens startside skal du søge efter Microsoft Entra ID og vælge det på listen over Services.
    2. Gå til Administrer>appregistreringer.
    3. I Slettede programmer vælge legetøj, der kan genbruges,.
    4. Vælg Slet permanent, og følg vejledningen.
  • Azure DevOps-projekt

    1. I Azure DevOps-projektet skal du vælge Projektindstillinger>Oversigt.
    2. Fra Slet projekt vælge Slet.
    3. Angiv projektnavnet, og bekræft sletningen.