Cvičení – publikování modulu do registru

Dokončeno

Ve vaší společnosti toy jste publikovali moduly Bicep do registru. Proces publikování jste spustili ručně z vlastního počítače. Teď chcete vytvořit kanál pro zpracování procesu publikování.

V tomto cvičení:

  • Vytvořte registr kontejneru pro moduly Bicep.
  • Přidejte do kanálu fázi lint.
  • Přidejte fázi kanálu pro publikování modulu do registru.
  • Ověřte, že se kanál úspěšně spustí.
  • Zkontrolujte publikovaný modul v registru.

Vytvoření registru kontejneru

Než budete moct publikovat moduly, musíte vytvořit registr, který bude vaše organizace používat. Tady pomocí webu Azure Portal vytvoříte registr.

  1. V prohlížeči vytvořte nový registr kontejneru na webu Azure Portal.

  2. Na kartě Základy vyberte cílové předplatné a skupinu prostředků ToyReusable, kterou jste vytvořili dříve.

  3. Zadejte název registru a umístění, které je blízko vás.

    Důležité

    Název registru musí být jedinečný v rámci Azure a musí obsahovat 5 až 50 alfanumerických znaků. Značka zaškrtnutí vedle názvu registru označuje, že je název, který jste zvolili, k dispozici.

  4. V případě skladové položky vyberte Basic.

    U ostatních nastavení konfigurace ponechte výchozí hodnoty.

  5. Vyberte Zkontrolovat a vytvořit.

    Snímek obrazovky webu Azure Portal zobrazící stránku pro vytvoření registru kontejneru

  6. Zkontrolujte, že nastavení bylo úspěšně ověřeno , a pak vyberte Vytvořit.

    Počkejte, než se nasazení dokončí, což obvykle trvá 1 až 2 minuty.

  7. Jakmile se zobrazí zpráva o úspěšném nasazení, výběrem možnosti Přejít k prostředku otevřete registr kontejneru.

    Snímek obrazovky webu Azure Portal znázorňující nasazení registru kontejneru se zvýrazněným tlačítkem pro přechod na prostředek

  8. V oblasti Přehled registru kontejneru si poznamenejte hodnotu nastavení přihlašovacího serveru. Bude to něco jako yourregistryname.azurecr.io.

    Snímek obrazovky webu Azure Portal zobrazící podrobnosti registru kontejneru se zvýrazněným přihlašovacím serverem

    Tuto hodnotu budete potřebovat za chvíli.

Přidání souboru metadat modulu

V předchozí lekci jste se dozvěděli o důležitosti strategie správy verzí pro moduly. Dozvěděli jste se také, jak pomocí souborů metadat modulů určit hlavní a podverzi vašeho modulu v rámci kanálu. Tady přidáte soubor metadat pro modul účtu úložiště.

  1. V editoru Visual Studio Code rozbalte složku modules/storage-account v kořenovém adresáři úložiště.

  2. Vytvořte nový soubor s názvem metadata.json.

    Snímek obrazovky editoru Visual Studio Code, který zobrazuje umístění souboru JSON s tečkou metadat

  3. Do souboru přidejte následující obsah:

    {
      "version": {
        "major": 1,
        "minor": 2
      }
    }
    

    Všimněte si, že v souboru metadat samostatně definujete čísla hlavních a podverzí. Kanál kombinuje tato čísla spolu s číslem buildu kanálu do úplného čísla verze při každém spuštění kanálu.

  4. Uložte změny souboru.

Aktualizace definice kanálu a přidání fáze lint

Úložiště obsahuje koncept kanálu, který můžete použít jako výchozí bod.

  1. Otevřete soubor pipeline.yml ve složce modules/storage-account.

  2. Aktualizujte hodnotu ModuleRegistryServer proměnné prostředí na název serveru registru kontejneru. Tento název jste zkopírovali dříve v tomto cvičení.

    Pokud je například přihlašovací server vašeho registru yourregistryname.azurecr.io, bude vypadat takto:

    - name: ModuleRegistryServer
      value: yourregistryname.azurecr.io
    
  3. V dolní části souboru # To be added pro komentář s následující definicí fáze lint:

    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file $(ModuleFilePath)
            name: LintBicepCode
            displayName: Run Bicep linter
    

Přidání fáze publikování do kanálu

Teď můžete přidat druhou fázi pro publikování modulu do registru kontejneru.

  1. V dolní části souboru pipeline.yml definujte fázi publikování a přidejte krok ke čtení čísla verze ze souboru metadata.json modulu a nastavte ho jako proměnnou kanálu.

    - 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
    

    Tento krok spustí skript, který k parsování souboru JSON používá aplikaci příkazového řádku jq.

  2. Pod krokem, který jste vytvořili, přidejte krok pro publikování modulu do registru.

    - 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)
    

    Všimněte si, že tento krok vytváří hodnotu --target argumentu dynamicky. Kombinuje hodnotu serveru registru, název modulu a číslo verze.

  3. Uložte změny souboru.

Ověření a potvrzení definice kanálu

  1. Ověřte, že váš soubor storage_account_module.yml vypadá jako v následujícím příkladu:

    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)
    

    Pokud tomu tak není, aktualizujte ho tak, aby odpovídal tomuto příkladu, a pak ho uložte.

  2. Potvrďte a nasdílejte změny do úložiště Git spuštěním následujících příkazů v terminálu editoru Visual Studio Code:

    git add .
    git commit -m "Add lint and publish stages to storage account module pipeline"
    git push
    

    Hned po nasdílení změn azure Pipelines spustí nové spuštění kanálu.

Monitorování kanálu

  1. V prohlížeči vyberte Pipelines Pipelines>.

  2. Vyberte aktivní spuštění kanálu.

  3. Zobrazí se spuštění kanálu.

    Počkejte na dokončení spuštění kanálu. Modul Bicep se publikuje do vašeho registru kontejneru.

  4. Poznamenejte si číslo buildu kanálu, které zahrnuje dnešní datum a jedinečné číslo revize.

Kontrola modulu v registru

Publikovaný modul můžete zobrazit také na webu Azure Portal.

  1. V prohlížeči přejděte na web Azure Portal.

  2. Přejděte do skupiny prostředků ToyReusable .

  3. Vyberte registr kontejneru, který jste vytvořili dříve.

  4. V nabídce vyberte podokno Úložiště. Pak vyberte úložiště modules\storage-account , které představuje modul, který váš kanál publikoval.

    Snímek obrazovky webu Azure Portal znázorňující modul Bicep v registru kontejneru

    Všimněte si, že existuje jedna značka, která odpovídá číslu verze modulu, který váš kanál publikoval. Hlavní verze (1) a podverze (2) odpovídají číslu verzí, která jste definovali v souboru metadata.json . Číslo revize (20230407.3) odpovídá číslu buildu kanálu.

Vyčištění prostředků

Teď, když jste cvičení dokončili, můžete odebrat prostředky, abyste za ně neúčtoli.

V terminálu editoru Visual Studio Code spusťte následující příkaz:

az group delete --resource-group ToyReusable --yes --no-wait

Skupina prostředků se odstraní na pozadí.

Remove-AzResourceGroup -Name ToyReusable -Force

Můžete také odebrat připojení služby a projekt Azure DevOps.

  • Připojení služby

    1. V projektu Azure DevOps vyberte připojení služby Nastavení projektu>.
    2. Vyberte ToyReusable.
    3. V pravém horním rohu vyberte tři tečky pro další akce.
    4. Vyberte Odstranit a potvrďte odstranění.
  • registrace Aplikace Azure

    1. Na domovské stránce portálu vyhledejte ID Microsoft Entra a vyberte ho ze seznamu služeb.
    2. Přejděte na Spravovat> Registrace aplikací.
    3. V odstraněných aplikacích vyberte toy-reusable.
    4. Vyberte Trvale odstranit a postupujte podle pokynů.
  • Projekt Azure DevOps

    1. V projektu Azure DevOps vyberte Přehled nastavení>projektu.
    2. V okně Odstranit projekt vyberte Odstranit.
    3. Zadejte název projektu a potvrďte odstranění.