Cvičení – publikování specifikace šablony

Dokončeno

Váš tým má několik zabezpečených souborů Bicep, které odpovídají novému řídícímu modelu vaší společnosti. Jeden z bezpečnostně zpevněných souborů Bicep nasadí aplikaci Azure App Service běžící na Linuxu. V tomto cvičení použijete nasazovací kanál k publikování souboru Bicep jako specifikace šablony.

Během tohoto procesu:

  • Přidejte do potrubí etapu lint.
  • Přidejte etapu kanálu pro publikování specifikace šablony.
  • Ověřte, že se pipeline úspěšně spouští a dokončuje.
  • Zkontrolujte specifikaci publikované šablony v Azure.

Přidejte fázi lint do vaší pipeline

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

  1. V editoru Visual Studio Code rozbalte složku template-specs/linux-app-service v kořenovém adresáři úložiště.

  2. Otevřete soubor pipeline.yml.

    snímek obrazovky editoru Visual Studio Code znázorňující umístění definičního souboru kanálu

  3. V dolní části souboru nahraďte # To be added následující definicí fáze lint:

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

    Vaše úložiště obsahuje soubor bicepconfig.json, který konfiguruje linter tak, aby místo upozornění vygeneroval chyby. Jakákoli selhání během fáze lint způsobí selhání kanálu.

    Spropitné

    Soubory YAML jsou citlivé na odsazení. Bez ohledu na to, jestli tento kód napíšete nebo vložíte, zkontrolujte správnost odsazení. Později v tomto cvičení uvidíte úplnou definici kanálu YAML, abyste mohli ověřit, že se váš soubor shoduje.

Přidání fáze publikování do pipeline

Teď můžete přidat druhou fázi pro publikování specifikace šablony do Azure.

  1. Na konec souboru pipeline.yml přidejte následující kód:

    - stage: Publish
      jobs:
      - job: Publish
        steps:
          - task: AzureCLI@2
            name: Publish
            displayName: Publish template spec
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az ts create \
                  --resource-group $(AzureResourceGroupName) \
                  --name $(TemplateSpecName) \
                  --version $(Build.BuildNumber) \
                  --template-file $(TemplateSpecFilePath) \
                  --location $(AzureRegion) \
                  --yes
    

    Tato fáze zkontroluje kód z úložiště a přihlásí se k Azure pomocí připojení služby, které jste vytvořili. Potom spustí příkaz az ts create, který publikuje specifikaci šablony do Azure.

    Spropitné

    Aby to bylo jednoduché, váš kanál používá číslo buildu kanálu jako číslo verze specifikace šablony. V další lekci se dozvíte o složitějším schématu správy verzí.

  2. Uložte změny souboru.

Ověřte a potvrďte definici pipeline

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

    trigger:
      batch: true
      branches:
        include:
        - main
      paths:
        include:
        - 'template-specs/linux-app-service/**'
    
    variables:
    - name: ServiceConnectionName
      value: ToyReusable
    - name: AzureResourceGroupName
      value: ToyReusable
    - name: AzureRegion
      value: westus3
    - name: TemplateSpecName
      value: linux-app-service
    - name: TemplateSpecFilePath
      value: template-specs/linux-app-service/main.bicep
    
    pool:
      vmImage: ubuntu-latest
    
    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file $(TemplateSpecFilePath)
            name: LintBicepCode
            displayName: Run Bicep linter
    
    - stage: Publish
      jobs:
      - job: Publish
        steps:
          - task: AzureCLI@2
            name: Publish
            displayName: Publish template spec
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az ts create \
                  --resource-group $(AzureResourceGroupName) \
                  --name $(TemplateSpecName) \
                  --version $(Build.BuildNumber) \
                  --template-file $(TemplateSpecFilePath) \
                  --location $(AzureRegion) \
                  --yes
    

    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 Linux App Service template spec pipeline"
    git push
    

    Hned po odeslání změn Azure Pipelines spustí nový běh kanálu.

Monitorování procesu

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

    Snímek obrazovky Azure Pipelines, který zobrazuje položku nabídky 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. Pokud ano, specifikace šablony se publikuje do Azure.

    Snímek obrazovky služby Azure Pipelines, který ukazuje úspěšné spuštění potrubí a zvýrazňuje číslo buildu.

  4. Zapište si číslo buildu pipeline, které zahrnuje dnešní datum a jedinečné číslo revize. Na příkladu snímku obrazovky je číslo buildu 20230407.1.

Kontrola specifikace šablony v Azure

Specifikace publikované šablony můžete zobrazit také na webu Azure Portal.

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

  2. Přejděte do skupiny prostředků ToyReusable a vyberte šablonu linux-app-service.

    snímek obrazovky webu Azure Portal zobrazící skupinu prostředků se zvýrazněnou specifikací šablony

  3. Prozkoumejte podrobnosti specifikace šablony.

    snímek obrazovky webu Azure Portal s podrobnostmi o specifikaci šablony

    Všimněte si, že číslo nejnovější verze a číslo verze je stejné jako číslo buildu kanálu. Vaše potrubí používá číslo buildu jako číslo verze specifikace šablony.