0Pricing
Cloud & IT Cert Prep · Aula

Implantação Contínua no Azure

Estenda o pipeline com uma etapa de implantação que envie o artefato de compilação para um slot do App Service, execute testes rápidos e faça a troca para produção após a aprovação.

Implantação Contínua no Azure é uma aula grátis de Cloud & IT Cert Prep no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

O que é implantação contínua

Implantação contínua (CD) libera automaticamente em produção todas as alterações aprovadas nos testes de CI, sem intervenção manual. A entrega contínua é a versão mais flexível — ela automatiza a implantação até um ambiente de staging e exige um portão de aprovação humana antes da produção. Ambas as práticas são baseadas na mesma infraestrutura de pipeline. No Azure Pipelines, a CD é implementada adicionando estágios de implantação após o estágio de CI, direcionados a ambientes do Azure com portões de aprovação conforme necessário.

Pipeline de vários estágios: CI + CD

Um pipeline completo de CI/CD tem pelo menos três estágios: Build (compilar, testar e publicar o artefato), Implantar em Staging (implantar o artefato em um slot que não seja de produção) e Implantar em Produção (trocar o slot ou implantar após a aprovação). Os estágios passam o artefato adiante por meio do armazenamento de artefatos do pipeline. O estágio de staging executa automaticamente testes de integração ou testes de fumaça; o estágio de produção aguarda a aprovação manual antes de prosseguir.

# azure-pipelines.yml: multi-stage CI/CD
trigger:
  branches:
    include: [main]

pool:
  vmImage: ubuntu-latest

stages:
- stage: Build
  jobs:
  - job: BuildApp
    steps:
    - script: npm ci && npm run build
    - task: PublishPipelineArtifact@1
      inputs: {targetPath: dist, artifactName: webapp}

- stage: DeployStaging
  dependsOn: Build
  jobs:
  - deployment: StagingDeploy
    environment: Staging
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs: {appName: myapp-staging, package: '$(Pipeline.Workspace)/webapp'}

- stage: DeployProduction
  dependsOn: DeployStaging
  jobs:
  - deployment: ProductionDeploy
    environment: Production   # Has manual approval gate
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs: {appName: myapp, package: '$(Pipeline.Workspace)/webapp'}

Tarefas de implantação e ambientes

Use tarefas deployment (não job regulares) para os estágios de implantação. As tarefas de implantação oferecem suporte a estratégias de implantação (runOnce, rolling, canary), acompanham o histórico de implantações por ambiente e precisam fazer referência a ambientes do Azure DevOps. Um ambiente registra quais execuções do pipeline foram implantadas nele, qual versão está atualmente ativa e fornece portões de aprovação, verificações e o status de integridade dos recursos em um único painel.

# Deployment job with rolling strategy
- job: RollingDeploy
  strategy:
    rolling:
      maxParallel: 2     # Deploy to 2 targets at a time
      preDeploy:
        steps:
        - script: echo 'Pre-deploy checks'
      deploy:
        steps:
        - task: AzureWebApp@1
          inputs:
            appName: myapp
            package: '$(Pipeline.Workspace)/webapp'
      postRouteDeploy:
        steps:
        - script: curl -f https://myapp.azurewebsites.net/health

Implantação no Azure App Service

A tarefa AzureWebApp@1 implanta uma aplicação Web no Azure App Service. Ela oferece suporte à implantação em um slot específico (por exemplo, staging), de pacotes ZIP, imagens Docker ou arquivos JAR/WAR. Depois de implantar em um slot de staging, use a tarefa AzureAppServiceManage@0 para trocar o slot de staging para produção — o padrão de implantação preferido sem tempo de inatividade para o App Service.

# Deploy to staging slot, then swap to production
steps:
- task: AzureWebApp@1
  displayName: 'Deploy to staging slot'
  inputs:
    azureSubscription: 'AzureProductionSC'
    appType: webAppLinux
    appName: myUniqueWebApp
    deployToSlotOrASE: true
    resourceGroupName: MyRG
    slotName: staging
    package: '$(Pipeline.Workspace)/webapp/app.zip'
    runtimeStack: 'NODE|18-lts'

- task: AzureAppServiceManage@0
  displayName: 'Swap staging into production'
  inputs:
    azureSubscription: 'AzureProductionSC'
    action: Swap Slots
    webAppName: myUniqueWebApp
    resourceGroupName: MyRG
    sourceSlot: staging

Testes de fumaça no pipeline de CD

Depois de implantar em staging, execute testes de fumaça — um conjunto mínimo de testes que verifica se a implantação foi bem-sucedida e se a aplicação está respondendo corretamente. Os testes de fumaça normalmente chamam endpoints de API essenciais e verificam os códigos de status e o conteúdo da resposta esperados. Se os testes de fumaça falharem, o pipeline será interrompido antes da troca para produção ou da solicitação de aprovação, impedindo que uma versão com falhas chegue aos usuários.

# Smoke test step after staging deployment
- script: |
    MAX_RETRY=10
    COUNT=0
    until curl -sf https://myUniqueWebApp-staging.azurewebsites.net/health; do
      COUNT=$((COUNT+1))
      if [ $COUNT -ge $MAX_RETRY ]; then
        echo 'Health check failed after $MAX_RETRY attempts'
        exit 1
      fi
      echo 'Waiting for app to start... attempt '$COUNT
      sleep 10
    done
    echo 'App is healthy'
  displayName: 'Smoke test: health endpoint'

Portões de aprovação do ambiente

Adicione portões de aprovação aos ambientes do Azure DevOps para exigir aprovação manual antes que as implantações prossigam. Acesse as configurações do ambiente e adicione Approvals — especifique os usuários ou grupos que devem aprovar. Quando o pipeline alcançar uma tarefa de implantação direcionada a esse ambiente, ele será pausado e uma notificação por e-mail será enviada. Os aprovadores podem ver os detalhes da implantação e aprovar ou rejeitar no portal do Azure DevOps ou pelo link no e-mail de notificação.

# Pipeline YAML: deployment to production environment
# (Approval configured in Azure DevOps portal on 'Production' environment)
- stage: DeployProduction
  displayName: 'Deploy to Production'
  dependsOn: DeployStaging
  condition: succeeded('DeployStaging')
  jobs:
  - deployment: ProdDeploy
    environment: Production   # <-- Triggers approval gate configured in portal
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs:
              appName: myapp-prod
              package: '$(Pipeline.Workspace)/webapp/app.zip'

Implantação no Azure Kubernetes Service

Implante aplicações conteinerizadas no AKS usando a tarefa KubernetesManifest@0. Essa tarefa aplica manifestos YAML do Kubernetes ao cluster, com suporte integrado a imagePullSecrets e implantações canary. Conecte-se ao cluster do AKS usando uma conexão de serviço do Kubernetes configurada no Azure DevOps. A tarefa usa kubectl apply internamente e aguarda a conclusão da atualização antes de marcar a etapa como bem-sucedida.

# AKS deployment step in Azure Pipelines
- task: KubernetesManifest@0
  displayName: 'Deploy to AKS'
  inputs:
    action: deploy
    kubernetesServiceConnection: 'AKS-Production-SC'
    namespace: production
    manifests: |
      k8s/deployment.yaml
      k8s/service.yaml
    containers: 'mycontainerregistry.azurecr.io/myapp:$(Build.BuildId)'
    imagePullSecrets: acr-secret

Estratégia de marcação de imagens

Marque imagens de contêiner com o ID da compilação ($(Build.BuildId)) ou o SHA do commit do Git ($(Build.SourceVersion)) para que você possa sempre rastrear um contêiner em execução até a revisão exata do código que o compilou. Evite usar a marca latest em produção — o Kubernetes a armazena em cache e pode não baixar a nova versão. Armazene a marca específica da imagem como uma variável do pipeline e injete-a nos manifestos do Kubernetes no momento da implantação usando envsubst ou sed.

# Tag and push image with build ID in CI stage
- script: |
    IMAGE='mycontainerregistry.azurecr.io/myapp'
    TAG='$(Build.BuildId)'
    docker build -t $IMAGE:$TAG -t $IMAGE:latest .
    az acr login --name mycontainerregistry
    docker push $IMAGE:$TAG
    docker push $IMAGE:latest
    echo "##vso[task.setvariable variable=imageTag;isOutput=true]$TAG"
  name: BuildImage
  displayName: 'Build and push container image'

Estratégias de reversão

Defina uma estratégia de reversão para as implantações em produção, para que possa se recuperar rapidamente de uma versão com problemas. No App Service, a reversão significa trocar o slot de produção de volta para a versão anterior no ambiente de preparo. No AKS, use kubectl rollout undo. Crie um pipeline de reversão dedicado ou adicione um trabalho de reversão manual que possa ser acionado no portal do Azure DevOps. Documente o procedimento de reversão e pratique-o regularmente — uma reversão não testada não é uma reversão.

# Rollback job triggered manually
- job: Rollback
  condition: and(failed(), eq(variables['Build.Reason'], 'Manual'))
  steps:
  # App Service rollback: swap production back to previous
  - task: AzureAppServiceManage@0
    inputs:
      azureSubscription: 'AzureProductionSC'
      action: Swap Slots
      webAppName: myUniqueWebApp
      resourceGroupName: MyRG
      sourceSlot: production  # Swap production back to staging version
      targetSlot: staging

Notificações e monitoramento da implantação

Após cada implantação em produção, execute automaticamente uma verificação de monitoramento para confirmar que a nova versão está saudável. Use a verificação de pipeline AzureMonitor@1 para consultar as métricas do Azure Monitor — se as taxas de erro estiverem elevadas após a implantação, bloqueie o avanço do pipeline e acione uma reversão. Envie notificações de implantação para o Microsoft Teams ou o Slack por meio de tarefas de webhook, para que a equipe saiba quando uma implantação for concluída e qual versão está ativa.

# Send Teams notification on deployment completion
- task: InvokeRestAPI@1
  displayName: 'Notify Teams channel'
  inputs:
    connectionType: connectedServiceName
    serviceConnection: 'TeamsWebhookSC'
    method: POST
    body: '{
      "text": "Deployed **$(Build.BuildId)** to Production. Committed by $(Build.RequestedFor). <br>View: https://myapp.contoso.com"
    }'
    waitForCompletion: false

Práticas recomendadas de CD

Siga estas práticas recomendadas de implantação contínua: implante com frequência (lotes pequenos reduzem o risco), use sinalizadores de recursos para separar a implantação da liberação, automatize todos os portões de qualidade antes da produção, pratique o preparo semelhante à produção para que as diferenças não ocultem erros, monitore as janelas de implantação com verificações automatizadas de integridade e sempre tenha um plano de reversão testado. Um pipeline de CD maduro transforma a implantação em um evento rotineiro, em vez de uma operação altamente estressante.

Verificação rápida

Teste sua compreensão dos conceitos do Microsoft Azure Fundamentals (AZ-900) apresentados nesta lição.

Recapitulação da lição

Nesta lição, você aprendeu que: os pipelines YAML de várias etapas encadeiam as etapas de Build, preparo e Production com passagem de artefatos; os trabalhos de implantação com Environments permitem portões de aprovação e acompanhamento da implantação; e os testes de fumaça após a implantação no ambiente de preparo impedem que versões com problemas cheguem à produção. A seguir, exploraremos o GitHub Actions no Azure.

Perguntas Frequentes

A aula “Implantação Contínua no Azure” é grátis?

Sim — o texto completo de “Implantação Contínua no Azure” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep inclui 4 aulas no total.

O que vou aprender em “Implantação Contínua no Azure”?

Estenda o pipeline com uma etapa de implantação que envie o artefato de compilação para um slot do App Service, execute testes rápidos e faça a troca para produção após a aprovação. Você pratica Cloud & IT Cert Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cloud & IT Cert Prep?

Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Implantação Contínua no Azure”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cloud & IT Cert Prep?

Sim. Cada aula de Cloud & IT Cert Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Visão Geral dos Serviços do Azure DevOps
  2. Criando um Pipeline de CI com o Azure Pipelines
  3. Implantação Contínua no Azure
  4. GitHub Actions no Azure
← Voltar para Cloud & IT Cert Prep