0Pricing
Cloud & IT Cert Prep · Lección

Implementación continua en Azure

Amplíe la canalización con una fase de implementación que envíe el artefacto de compilación a una ranura de App Service, ejecute pruebas de humo y cambie a producción tras la aprobación.

Implementación continua en Azure es una lección gratuita de Cloud & IT Cert Prep en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cloud & IT Cert Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.

Qué es la implementación continua

La implementación continua (CD) publica automáticamente en producción cada cambio que supera las pruebas de CI, sin intervención manual. La entrega continua es una variante más flexible: automatiza la implementación hasta un entorno de staging y requiere la aprobación de una persona antes de pasar a producción. Ambas prácticas se basan en la misma infraestructura de canalización. En Azure Pipelines, la CD se implementa agregando fases de implementación después de la fase de CI, dirigidas a entornos de Azure con puertas de aprobación cuando sea necesario.

Canalización de varias fases: CI + CD

Una canalización de CI/CD completa tiene al menos tres fases: Build (compilar, probar y publicar el artefacto), Deploy to Staging (implementar el artefacto en un slot que no sea de producción) y Deploy to Production (intercambiar el slot o implementar después de la aprobación). Las fases transfieren el artefacto mediante el almacenamiento de artefactos de la canalización. La fase de staging ejecuta automáticamente pruebas de integración o de humo; la fase de producción espera la aprobación manual antes de continuar.

# 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'}

Trabajos de implementación y entornos

Utilice trabajos deployment (no job normales) para las fases de implementación. Los trabajos de implementación admiten estrategias de implementación (runOnce, rolling y canary), realizan un seguimiento del historial de implementaciones por entorno y deben hacer referencia a los Entornos de Azure DevOps. Un entorno registra qué ejecuciones de canalización se han implementado en él, qué versión está activa actualmente y proporciona puertas de aprobación, comprobaciones y el estado de salud de los recursos en un único panel.

# 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

Implementación en Azure App Service

La tarea AzureWebApp@1 implementa una aplicación web en Azure App Service. Admite la implementación en un slot específico (por ejemplo, staging), así como de paquetes ZIP, imágenes de Docker o archivos JAR/WAR. Después de implementar en un slot de staging, utilice la tarea AzureAppServiceManage@0 para intercambiar el slot de staging con el de producción; este es el patrón de implementación preferido sin tiempo de inactividad para 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

Pruebas de humo en la canalización de CD

Después de implementar en staging, ejecute pruebas de humo: un conjunto mínimo de pruebas que verifica que la implementación se realizó correctamente y que la aplicación responde de forma adecuada. Normalmente, las pruebas de humo llaman a puntos de conexión de API clave y verifican los códigos de estado y el contenido de respuesta esperados. Si las pruebas de humo fallan, la canalización se detiene antes de intercambiar el slot con producción o solicitar aprobación, lo que evita que una versión defectuosa llegue a los usuarios.

# 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'

Puertas de aprobación del entorno

Agregue puertas de aprobación a los entornos de Azure DevOps para exigir una aprobación manual antes de continuar con las implementaciones. Vaya a la configuración del entorno y agregue aprobaciones; especifique los usuarios o grupos que deben aprobar. Cuando la canalización llega a un trabajo de implementación dirigido a ese entorno, se pausa y envía una notificación por correo electrónico. Los aprobadores pueden consultar los detalles de la implementación y aprobarla o rechazarla en el portal de Azure DevOps o mediante el vínculo del correo de notificación.

# 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'

Implementación en Azure Kubernetes Service

Implemente aplicaciones contenedorizadas en AKS mediante la tarea KubernetesManifest@0. Esta tarea aplica manifiestos YAML de Kubernetes al clúster e incluye compatibilidad integrada con imagePullSecrets e implementaciones canary. Conéctese al clúster de AKS mediante una conexión de servicio de Kubernetes configurada en Azure DevOps. Internamente, la tarea utiliza kubectl apply y espera a que finalice el despliegue antes de marcar el paso como correcto.

# 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

Estrategia de etiquetado de imágenes

Etiquete las imágenes de contenedor con el identificador de compilación ($(Build.BuildId)) o el SHA de la confirmación de Git ($(Build.SourceVersion)) para poder rastrear siempre un contenedor en ejecución hasta la revisión exacta del código con la que se compiló. Evite utilizar la etiqueta latest en producción: Kubernetes la almacena en caché y es posible que no descargue la nueva versión. Almacene la etiqueta específica de la imagen como variable de canalización e inyéctela en los manifiestos de Kubernetes durante la implementación mediante envsubst o 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'

Estrategias de reversión

Defina una estrategia de reversión para las implementaciones en producción, de modo que pueda recuperarse rápidamente de una versión defectuosa. En App Service, la reversión consiste en volver a intercambiar el slot de producción con la versión de staging anterior. En AKS, use kubectl rollout undo. Cree un pipeline de reversión dedicado o agregue un trabajo de reversión manual que pueda activarse desde el portal de Azure DevOps. Documente el procedimiento de reversión y practíquelo con regularidad: una reversión que no se ha probado no es una reversión.

# 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

Notificaciones y supervisión de implementaciones

Después de cada implementación en producción, ejecute automáticamente una comprobación de supervisión para confirmar que la nueva versión funciona correctamente. Use la comprobación de pipeline AzureMonitor@1 para consultar las métricas de Azure Monitor. Si las tasas de error aumentan después de la implementación, bloquee la progresión del pipeline y active una reversión. Envíe notificaciones de implementación a Microsoft Teams o Slack mediante tareas de webhook, para que el equipo sepa cuándo finaliza una implementación y qué versión está activa.

# 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

Procedimientos recomendados de CD

Siga estos procedimientos recomendados de implementación continua: implemente con frecuencia (los lotes pequeños reducen el riesgo), use indicadores de características para desacoplar la implementación de la publicación, automatice todas las puertas de calidad antes de producción, practique con un entorno de staging similar a producción para que las diferencias no oculten errores, supervise las ventanas de implementación mediante comprobaciones de estado automatizadas y tenga siempre un plan de reversión probado. Un pipeline de CD maduro convierte la implementación en un evento rutinario, en lugar de una operación de alta tensión.

Comprobación rápida

Compruebe sus conocimientos sobre los conceptos de Microsoft Azure Fundamentals (AZ-900) de esta lección.

Resumen de la lección

En esta lección ha aprendido que los pipelines YAML de varias etapas encadenan las etapas de compilación, staging y producción mediante el intercambio de artefactos; los trabajos de implementación con Environments permiten establecer puertas de aprobación y realizar un seguimiento de las implementaciones; y las pruebas de humo después de la implementación en staging evitan que versiones defectuosas lleguen a producción. A continuación, exploraremos GitHub Actions en Azure.

Preguntas frecuentes

¿La lección «Implementación continua en Azure» es gratis?

Sí — el texto completo de «Implementación continua en Azure» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cloud & IT Cert Prep, actualiza a CoddyKit PRO. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Implementación continua en Azure»?

Amplíe la canalización con una fase de implementación que envíe el artefacto de compilación a una ranura de App Service, ejecute pruebas de humo y cambie a producción tras la aprobación. Practicas Cloud & IT Cert Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cloud & IT Cert Prep?

No se requiere experiencia previa. Cloud & IT Cert Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Implementación continua en Azure»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cloud & IT Cert Prep?

Sí. Cada lección de Cloud & IT Cert Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Introducción a Azure DevOps Services
  2. Creación de una canalización de CI con Azure Pipelines
  3. Implementación continua en Azure
  4. GitHub Actions en Azure
← Volver a Cloud & IT Cert Prep