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 pracovní postup pro zpracování procesu publikování.

V tomto cvičení:

  • Vytvořte registr kontejneru pro moduly Bicep.
  • Přidejte do pracovního postupu úlohu lint.
  • Přidejte úlohu pracovního postupu pro publikování modulu do registru.
  • Ověřte, že se pracovní postup ú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ě cenového plánu 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. Jakmile se zobrazí zpráva o úspěšném ověření, 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. Název se podobá 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. Také jste zjistili, jak pomocí souborů metadat modulu určit hlavní a podverzi vašeho modulu v rámci pracovního postupu. 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 metadat s tečkou J S O N

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

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

    V souboru metadat můžete samostatně definovat čísla hlavních a podverzí. Při každém spuštění pracovního postupu tento pracovní postup sloučí tato čísla spolu s číslem spuštění pracovního postupu a vytvoří celé číslo verze.

  4. Uložte změny souboru.

Aktualizace definice pracovního postupu a přidání úlohy lint

Úložiště obsahuje koncept pracovního postupu, který můžete použít jako výchozí bod.

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

  2. Otevřete soubor module-storage-account.yml.

    Snímek obrazovky editoru Visual Studio Code, který zobrazuje umístění definičního souboru pracovního postupu

  3. Aktualizujte hodnotu MODULE_REGISTRY_SERVER 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, váš kód je podobný tomuto příkladu:

    env:
      MODULE_NAME: storage-account
      MODULE_REGISTRY_SERVER: yourregistryname.azurecr.io
      MODULE_FILE_PATH: modules/storage-account/main.bicep
      MODULE_METADATA_FILE_PATH: modules/storage-account/metadata.json
    
  4. V dolní části souboru pro # To be added komentář přidejte následující definici úlohy lint:

    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.MODULE_FILE_PATH }}
    

Přidání úlohy publikování do pracovního postupu

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

  1. V dolní části souboru module-storage-account.yml přidejte první část definice úlohy publikování.

    publish:
      runs-on: ubuntu-latest
      needs: [ lint ]
      steps:
      - uses: actions/checkout@v3
      - uses: azure/login@v1
        name: Sign in to Azure
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    

    Počátečními dvěma kroky v této definici je rezervovat kód z úložiště a přihlásit se k Azure.

  2. Pod kód, který jste právě přidali, přidejte další krok, který přečte číslo verze ze souboru metadata.json modulu a nastaví ho jako proměnnou prostředí.

    - name: Get module version number
      run: |
        majorMinorVersionNumber=$(jq '(.version.major | tostring) + "." + (.version.minor | tostring)' ${{ env.MODULE_METADATA_FILE_PATH }} -r )
        versionNumber="$majorMinorVersionNumber.${{ github.run_number }}"
        echo "MODULE_VERSION=$versionNumber" >> $GITHUB_ENV
    

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

  3. Po vytvoření kroku přidejte poslední krok pro publikování modulu do registru.

    - uses: azure/cli@v1
      name: Publish module
      with:
        inlineScript: |
          az bicep publish \
            --target 'br:${{ env.MODULE_REGISTRY_SERVER }}/${{ env.MODULE_NAME }}:${{ env.MODULE_VERSION }}' \
            --file ${{ env.MODULE_FILE_PATH }}
    

    Tento krok vytvoří hodnotu argumentu --target dynamicky. Kombinuje hodnotu serveru registru, název modulu a číslo verze.

  4. Uložte změny souboru.

Ověření a potvrzení definice pracovního postupu

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

    name: module-storage-account
    concurrency: module-storage-account
    
    on:
      workflow_dispatch:
      push:
        branches:
          - main
        paths:
          - 'modules/storage-account/**'
    
    permissions:
      id-token: write
      contents: read
    
    env:
      MODULE_NAME: storage-account
      MODULE_REGISTRY_SERVER: yourregistryname.azurecr.io
      MODULE_FILE_PATH: modules/storage-account/main.bicep
      MODULE_METADATA_FILE_PATH: modules/storage-account/metadata.json
    
    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file ${{ env.MODULE_FILE_PATH }}
    
      publish:
        runs-on: ubuntu-latest
        needs: [ lint ]
        steps:
        - uses: actions/checkout@v3
        - uses: azure/login@v1
          name: Sign in to Azure
          with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
        - name: Get module version number
          run: |
            majorMinorVersionNumber=$(jq '(.version.major | tostring) + "." + (.version.minor | tostring)' ${{ env.MODULE_METADATA_FILE_PATH }} -r )
            versionNumber="$majorMinorVersionNumber.${{ github.run_number }}"
            echo "MODULE_VERSION=$versionNumber" >> $GITHUB_ENV
        - uses: azure/cli@v1
          name: Publish module
          with:
            inlineScript: |
              az bicep publish \
                --target 'br:${{ env.MODULE_REGISTRY_SERVER }}/${{ env.MODULE_NAME }}:${{ env.MODULE_VERSION }}' \
                --file ${{ env.MODULE_FILE_PATH }}
    

    Pokud se obsah souboru liší, aktualizujte ho tak, aby odpovídal tomuto příkladu, a pak soubor 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 jobs to storage account module workflow"
    git push
    

Aktivace pracovního postupu

  1. V prohlížeči přejděte do úložiště GitHub a vyberte kartu Akce .

  2. Vyberte pracovní postup modulu-storage-account.

    Všimněte si, že již probíhá spuštění pracovního postupu. Trigger nabízených oznámení se aktivoval, protože jste upravili soubor metadata.json ve složce modulu.

  3. V seznamu vyberte nejnovější spuštění.

    Snímek obrazovky GitHubu, který zvýrazňuje nejnovější spuštění pracovního postupu modulu

    Počkejte, až se pracovní postup dokončí. Modul Bicep se publikuje do vašeho registru kontejneru.

    Poznamenejte si číslo spuštění pracovního postupu, které je pravděpodobně 3.

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. V části Prostředky vyberte registr kontejneru, který jste vytvořili dříve.

  4. V nabídce vyberte Úložiště služeb>. Pak vyberte úložiště modules\storage-account , které představuje modul, který váš pracovní postup 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áš pracovní postup publikoval. Hlavní verze (1) a podverze (2) odpovídají číslu verzí, která jste definovali v souboru metadata.json . Číslo revize (3) odpovídá číslu spuštění pracovního postupu.

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 tajné kódy a úložiště GitHubu a identity úloh Azure.

  • Tajné kódy GitHubu

    1. V úložišti GitHub přejděte do části Nastavení>Tajný kód a akce proměnných>.
    2. U každého uloženého tajného kódu GitHubu vyberte ikonu Odstranit <název> tajného kódu a postupujte podle pokynů.
  • Úložiště GitHub

    1. Přejděte na Obecné nastavení>.
    2. Vyberte Odstranit toto úložiště a postupujte podle pokynů.
  • Aplikace Azure federovaných přihlašovacích údajů a instančního objektu registrace.

    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. Na kartě Vlastněné aplikace vyberte opakovaně použitelné toy.
    4. Vyberte Odstranit a postupujte podle pokynů.
    5. Vyberte kartu Odstraněné aplikace.
    6. Vyberte toy-reusable, vyberte Odstranit trvale a pak vyberte Ano , pokud chcete trvale odstranit registraci aplikace.

    Důležité

    Je možné mít duplicitní názvy registrace aplikací a instančních objektů. Doporučujeme ověřit ID aplikace, abyste měli jistotu, že odstraňujete správný prostředek.