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

Concluído

Sua equipe criou alguns arquivos Bicep protegidos com segurança que estão em conformidade com o novo modelo de governança da empresa. Um dos arquivos Bicep protegidos implementa um aplicativo do Serviço de Aplicativo do Azure com base 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ê vai:

  • Adicionar uma fase de lint ao pipeline.
  • Adicionar uma fase do pipeline para publicar a especificação de modelo.
  • Verificar se o pipeline é iniciado e concluído com êxito.
  • Verificar a especificação de modelo publicada no Azure.

Adicionar uma fase de lint ao pipeline

O 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 mostrando a localização do arquivo de definição de pipeline.

  3. Na parte inferior do arquivo, 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
    

    O repositório tem um arquivo bicepconfig.json que configura o linter para emitir erros em vez de avisos. Se houver alguma falha durante a fase de lint, o pipeline falhará.

    Dica

    Os arquivos YAML são sensíveis ao recuo. Independentemente de você digitar ou colar esse código, verifique se o recuo está correto. Mais adiante neste exercício, você verá a definição completa do pipeline YAML para verificar se o seu arquivo é correspondente.

Adicionar uma fase de publicação ao pipeline

Agora, você pode adicionar uma segunda fase para publicar a especificação de 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
    

    Essa fase verifica o código do repositório e entra no Azure usando a conexão de serviço que você criou. Depois, ela executa o comando az ts create para publicar a especificação de modelo no Azure.

    Dica

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

  2. Salve as alterações no arquivo.

Verificar a definição de pipeline e fazer commit dela

  1. Verifique se o arquivo pipeline.yml é semelhante ao seguinte exemplo:

    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. Faça commit e efetue push das alterações no 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 iniciará uma nova execução de pipeline.

Monitorar o Pipeline

  1. No navegador, selecione Pipelines>Pipelines.

    Captura de tela do Azure Pipelines mostrando o item de menu Pipelines.

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

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

    Aguarde a conclusão da execução de pipeline. Quando isso acontece, a especificação de modelo é publicada no Azure.

    Captura de tela do Azure Pipelines mostrando uma execução de pipeline bem-sucedida e destacando o número da compilação.

  4. Observe o número de build do pipeline, que inclui a data de hoje e um número de revisão exclusivo. Na captura de tela de exemplo, o número de build é 20230407.1.

Examinar a especificação de modelo no Azure

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

  1. No navegador, acesse o portal do Azure.

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

    Captura de tela do portal do Azure mostrando o grupo de recursos, com a especificação do modelo realçada.

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

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

    Observe que o número da Última versão e da Versão são iguais ao número de build do pipeline. O pipeline usa o número de build como o número de versão da especificação de modelo.