Exercício - Publicar uma especificação de modelo

Concluído

Sua equipe tem alguns arquivos Bicep com segurança reforçada que são compatíveis com o novo modelo de governança da sua empresa. Um dos arquivos Bicep endurecidos implanta uma aplicação do App Service do Azure baseada em Linux. Neste exercício, você usa um pipeline de implantação para publicar o arquivo Bicep como uma especificação de modelo.

Durante o processo, você:

  • Adicione um estágio de fiapos ao pipeline.
  • Adicione uma etapa no pipeline para publicar a especificação do template.
  • Verifique se a linha de processamento inicia e termina com êxito.
  • Verifique a especificação do modelo publicado no Azure.

Adicione um estágio de fiapos ao seu pipeline

Seu repositório contém um rascunho de uma definição de pipeline que você pode usar como ponto de partida.

  1. No Visual Studio Code, expanda a pasta template-specs/linux-app-service na raiz do repositório.

  2. Abra o arquivo pipeline.yml.

    Captura de tela do Visual Studio Code que mostra o local do arquivo de definição de pipeline.

  3. No final do ficheiro, substitua # To be added pela seguinte definição de fase de lint:

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

    Seu repositório tem um arquivo bicepconfig.json que configura o linter para emitir erros em vez de avisos. Quaisquer falhas durante o estágio de fiapos farão com que o pipeline falhe.

    Dica

    Os arquivos YAML são sensíveis à indentação. Quer escreva ou cole este código, certifique-se de que a indentação está correta. Mais adiante neste exercício, você verá a definição completa do pipeline YAML para que possa verificar se o arquivo corresponde.

Adicionar um estágio de publicação ao seu pipeline

Agora, você pode adicionar um segundo estágio para publicar a especificação do modelo no Azure.

  1. Adicione o seguinte código no final do arquivo pipeline.yml:

    - 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
    

    Esta etapa efetua o check-out do código do seu repositório e inicia sessão no Azure usando a ligação de serviço que foi criada. Em seguida, ele executa o comando az ts create para publicar a especificação do modelo no Azure.

    Dica

    Para simplificar, seu pipeline usa o número de compilação do pipeline como o número de versão da especificação do modelo. Na próxima unidade, você aprenderá sobre um esquema de controle de versão mais complexo.

  2. Salve as alterações no arquivo.

Verifique e confirme a sua definição de pipeline.

  1. Verifique se o arquivo pipeline.yml se parece com o exemplo a seguir:

    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
    

    Caso contrário, atualize-o para corresponder a este exemplo e salve-o.

  2. Confirme e envie suas alterações para o repositório Git executando os seguintes comandos no terminal do Visual Studio Code:

    git add .
    git commit -m "Add lint and publish stages to Linux App Service template spec pipeline"
    git push
    

    Imediatamente após o push, o Azure Pipelines inicia uma nova execução de pipeline.

Monitorizar o pipeline

  1. No navegador, selecione Pipelines>Pipelines.

    Captura de tela do Azure Pipelines que mostra o item de menu Pipelines.

  2. Selecione a execução ativa do pipeline.

  3. A execução do pipeline é exibida.

    Aguarde até que a execução do pipeline termine. Quando isso acontece, a especificação do modelo é publicada no Azure.

    Captura de tela do Azure Pipelines que mostra uma execução de pipeline bem-sucedida e destaca o número de compilação.

  4. Observe o número de compilação do pipeline, que inclui a data de hoje e um número de revisão exclusivo. No exemplo de screenshot, o número de compilação é 20230407.1.

Rever a especificação do modelo no Azure

Você também pode exibir a especificação de modelo publicada no portal do Azure.

  1. No seu navegador, aceda ao portal Azure.

  2. Vá para o grupo de recursos ToyReusable e selecione a especificação de modelo linux-app-service.

    Captura de ecrã do portal do Azure que mostra o grupo de recursos, com a especificação do modelo realçada.

  3. Examine os detalhes da especificação do modelo.

    Captura de tela do portal do Azure que mostra os detalhes da especificação do modelo.

    Observe que o número da última versão e o número da versão são os mesmos que o número de compilação do pipeline. O seu pipeline usa o número de compilação para o número de versão da especificação do template.