Exercício - Adicione fiapos e valide estágios ao seu pipeline

Concluído

Você conversou com sua equipe e decidiu automatizar ainda mais suas implantações usando um pipeline. Você quer construir mais confiança no que implanta.

Neste exercício, você adicionará estágios de validação ao seu pipeline. Em seguida, você executará a validação de linter e comprovação antes de cada implantação.

Durante o processo, você:

  • Atualize seu pipeline existente para adicionar dois novos estágios ao lint e validar seu código Bicep.
  • Execute os seus pipelines.
  • Corrija todos os problemas detetados pelo pipeline.

Atualize seu pipeline para se preparar para os estágios

Primeiro, você precisa atualizar seu arquivo de pipeline para definir um estágio. O Azure Pipelines cria automaticamente um único estágio para você, mas como você adicionará mais estágios em breve, precisará atualizar seu pipeline para definir explicitamente os estágios.

  1. No Visual Studio Code, abra o arquivo azure-pipelines.yml na pasta deploy .

  2. Remova tudo no arquivo da linha 14 para a parte inferior do arquivo. Certifique-se também de remover a jobs: linha.

  3. Na parte inferior do arquivo, adicione o seguinte código:

    stages:
    
    - stage: Deploy
      jobs:
      - job: Deploy
        steps:
          - task: AzureResourceManagerTemplateDeployment@3
            name: Deploy
            displayName: Deploy to Azure
            inputs:
              connectedServiceName: $(ServiceConnectionName)
              deploymentName: $(Build.BuildNumber)
              location: $(DeploymentDefaultLocation)
              resourceGroupName: $(ResourceGroupName)
              csmFile: deploy/main.bicep
              overrideParameters: >
                -environmentType $(EnvironmentType)
    

    Gorjeta

    Os arquivos YAML são sensíveis ao recuo. Quer escreva ou cole este código, certifique-se de que o recuo está correto. Na próxima seção, você verá a definição completa do pipeline YAML para que possa verificar se o arquivo corresponde.

Adicione fiapos e estágios de validação ao seu pipeline

  1. Abaixo da stages: linha, adicione um estágio de fiapos:

    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file deploy/main.bicep
            name: LintBicepCode
            displayName: Run Bicep linter
    

    Esta etapa define uma única etapa que executa o az bicep build comando para lint o arquivo Bicep.

  2. Abaixo das linhas que você acabou de adicionar, adicione uma etapa de validação:

    - stage: Validate
      jobs:
      - job: ValidateBicepCode
        displayName: Validate Bicep code
        steps:
          - task: AzureResourceManagerTemplateDeployment@3
            name: RunPreflightValidation
            displayName: Run preflight validation
            inputs:
              connectedServiceName: $(ServiceConnectionName)
              location: $(deploymentDefaultLocation)
              deploymentMode: Validation
              resourceGroupName: $(ResourceGroupName)
              csmFile: deploy/main.bicep
              overrideParameters: >
                -environmentType $(EnvironmentType)
    

    Esta etapa define uma única etapa que executa a validação de comprovação. Observe que esta etapa inclui uma referência à sua conexão de serviço, porque o processo de validação de comprovação requer comunicação com o Azure.

    Sua definição de pipeline agora tem três estágios. O primeiro executa o linter em seu arquivo Bicep, o segundo executa uma validação de comprovação e o terceiro executa a implantação no Azure.

  3. Guarde o ficheiro.

Configurar o linter

Por padrão, o linter do Bíceps fornece um aviso quando deteta um problema com seu arquivo. O Azure Pipelines não trata os avisos linter como problemas que devem parar seu pipeline. Para personalizar esse comportamento, crie um arquivo de bicepconfig.json que reconfigura o linter.

  1. Adicione um novo arquivo na pasta deploy e nomeie-o bicepconfig.json.

    Captura de tela do Visual Studio Code Explorer, com o novo arquivo mostrado na pasta de implantação.

  2. Copie o seguinte código para o arquivo:

    {
      "analyzers": {
        "core": {
          "enabled": true,
          "verbose": true,
          "rules": {
            "adminusername-should-not-be-literal": {
              "level": "error"
            },
            "max-outputs": {
              "level": "error"
            },
            "max-params": {
              "level": "error"
            },
            "max-resources": {
              "level": "error"
            },
            "max-variables": {
              "level": "error"
            },
            "no-hardcoded-env-urls": {
              "level": "error"
            },
            "no-unnecessary-dependson": {
              "level": "error"
            },
            "no-unused-params": {
              "level": "error"
            },
            "no-unused-vars": {
              "level": "error"
            },
            "outputs-should-not-contain-secrets": {
              "level": "error"
            },
            "prefer-interpolation": {
              "level": "error"
            },
            "secure-parameter-default": {
              "level": "error"
            },
            "simplify-interpolation": {
              "level": "error"
            },
            "protect-commandtoexecute-secrets": {
              "level": "error"
            },
            "use-stable-vm-image": {
              "level": "error"
            }
          }
        }
      }
    }
    
  3. Guarde o ficheiro.

Verificar e confirmar sua definição de pipeline

  1. Verifique se o arquivo azure-pipelines.yml se parece com o seguinte arquivo:

    trigger:
      batch: true
      branches:
        include:
        - main
    
    pool:
      vmImage: ubuntu-latest
    
    variables:
      - name: deploymentDefaultLocation
        value: westus3
    
    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file deploy/main.bicep
            name: LintBicepCode
            displayName: Run Bicep linter
    
    - stage: Validate
      jobs:
      - job: ValidateBicepCode
        displayName: Validate Bicep code
        steps:
          - task: AzureResourceManagerTemplateDeployment@3
            name: RunPreflightValidation
            displayName: Run preflight validation
            inputs:
              connectedServiceName: $(ServiceConnectionName)
              location: $(deploymentDefaultLocation)
              deploymentMode: Validation
              resourceGroupName: $(ResourceGroupName)
              csmFile: deploy/main.bicep
              overrideParameters: >
                -environmentType $(EnvironmentType)
    
    - stage: Deploy
      jobs:
      - job: Deploy
        steps:
          - task: AzureResourceManagerTemplateDeployment@3
            name: Deploy
            displayName: Deploy to Azure
            inputs:
              connectedServiceName: $(ServiceConnectionName)
              deploymentName: $(Build.BuildNumber)
              location: $(DeploymentDefaultLocation)
              resourceGroupName: $(ResourceGroupName)
              csmFile: deploy/main.bicep
              overrideParameters: >
                -environmentType $(EnvironmentType)
    

    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 validation stages"
    git push
    

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

Exibir a execução do pipeline

  1. No seu navegador, vá para Pipelines.

  2. Selecione a execução mais recente do seu pipeline.

    Captura de tela do Azure DevOps com o link para a execução de pipeline mais recente realçado.

    Se o pipeline ainda estiver em execução, aguarde até que seja concluído. Embora o Azure Pipelines atualize automaticamente a página com o status mais recente, é uma boa ideia atualizá-la ocasionalmente.

  3. Observe que a execução do pipeline agora mostra os três estágios que você definiu no arquivo YAML. Observe também que a etapa Lint falhou.

    Captura de tela de um pipeline executado no Azure DevOps, com o estágio Lint relatando falha.

  4. Selecione o palco Lint para ver seus detalhes.

    Captura de tela de um pipeline executado no Azure DevOps, com o nome do estágio Lint realçado.

  5. Selecione a etapa Executar linter do Bicep para exibir o log do pipeline.

    Captura de tela do log do pipeline para o estágio Lint, com a etapa para executar um linter Bicep realçada.

    Observe que o erro exibido é semelhante ao seguinte:

    Erro no-unused-params: O parâmetro "storageAccountNameParam" é declarado, mas nunca usado.

    Este erro indica que o linter encontrou uma violação de regra no seu arquivo Bicep.

Corrigir o erro linter

Agora que você identificou o problema, você pode corrigi-lo em seu arquivo Bicep.

  1. No Visual Studio Code, abra o arquivo main.bicep na pasta deploy .

  2. Observe que o linter do Bíceps também detetou que o storageAccountNameParam parâmetro não é usado. Visual Studio Code indica o parâmetro não utilizado com uma linha ondulada. Normalmente, a linha seria amarela para indicar um aviso. Mas como você personalizou o arquivo bicepconfig.json , o linter trata o código como um erro e exibe a linha em vermelho.

    param storageAccountNameParam string = uniqueString(resourceGroup().id)
    
  3. Exclua o storageAccountNameParam parâmetro.

  4. Guarde o ficheiro.

  5. 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 "Remove unused parameter"
    git push
    

    Mais uma vez, o Azure Pipelines aciona automaticamente uma nova execução do seu pipeline.

Exibir a execução do pipeline novamente

  1. No seu navegador, vá para o seu pipeline.

  2. Selecione a execução mais recente.

    Aguarde até que a execução do pipeline seja concluída. Embora o Azure Pipelines atualize automaticamente a página com o status mais recente, é uma boa ideia atualizá-la ocasionalmente.

  3. Observe que o estágio Lint terminou com sucesso, mas agora o estágio Validate falhou.

    Captura de tela da execução do pipeline, com o estágio Lint relatando o sucesso e o estágio Validate relatando falha.

  4. Selecione o estágio Validar para ver seus detalhes.

  5. Selecione a etapa Executar validação de comprovação para exibir o log do pipeline.

    Captura de tela do log de pipeline para o estágio Validar, com a etapa para executar a validação de comprovação realçada.

    Observe que o erro exibido no log inclui a seguinte mensagem:

    mystorageresourceNameSuffix não é um nome de conta de armazenamento válido. O nome da conta de armazenamento deve ter entre 3 e 24 caracteres e usar apenas números e letras minúsculas.

    Este erro indica que o nome da conta de armazenamento não é válido.

Corrigir o erro de validação

Você encontrou outro problema no arquivo Bicep. Aqui, você corrigirá o problema.

  1. No Visual Studio Code, abra o arquivo main.bicep na pasta deploy .

  2. Veja a definição da storageAccountName variável:

    var appServiceAppName = 'toy-website-${resourceNameSuffix}'
    var appServicePlanName = 'toy-website'
    var applicationInsightsName = 'toywebsite'
    var logAnalyticsWorkspaceName = 'workspace-${resourceNameSuffix}'
    var storageAccountName = 'mystorageresourceNameSuffix'
    

    Parece haver um erro de digitação e a interpolação de cadeia de caracteres não foi configurada corretamente.

  3. Atualize a variável para usar a storageAccountName interpolação de cadeia de caracteres corretamente:

    var storageAccountName = 'mystorage${resourceNameSuffix}'
    
  4. Guarde o ficheiro.

  5. 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 "Fix string interpolation"
    git push
    

Exibir a execução bem-sucedida do pipeline

  1. No seu navegador, vá para o seu pipeline.

  2. Selecione a execução mais recente.

    Aguarde até que a execução do pipeline seja concluída. Embora o Azure Pipelines atualize automaticamente a página com o status mais recente, é uma boa ideia atualizá-la ocasionalmente.

  3. Observe que todos os três estágios do pipeline foram concluídos com êxito:

    Captura de tela do pipeline executado no Azure DevOps, com todos os três estágios relatando o sucesso.

Agora você tem um pipeline que deteta erros com êxito no código do Bicep no início do processo de implantação e, em seguida, implanta no Azure se não houver erros.