Extensión de una canalización para usar varias plantillas

En este laboratorio, explorarás la importancia de extender una canalización a varias plantillas y cómo hacerlo mediante Azure DevOps. En este laboratorio se tratan conceptos básicos y procedimientos recomendados para crear una canalización de varias fases, crear una plantilla de variables, crear una plantilla de trabajo y crear una plantilla de fase.

Estos ejercicios duran aproximadamente 20 minutos.

Antes de comenzar

Necesitarás una suscripción a Azure, una organización de Azure DevOps y la aplicación eShopOnWeb para seguir los laboratorios.

Instrucciones

Ejercicio 1: Creación de canalizaciones YAML de varias fases

En este ejercicio, crearás una canalización YAML de varias fases en Azure DevOps.

Tarea 1: Creación de una canalización YAML principal de varias fases

  1. Ve al portal de Azure DevOps en https://aex.dev.azure.com y abre tu organización.

  2. Abre el proyecto eShopOnWeb .

  3. Ve a Canalizaciones > Canalizaciones.

  4. Haz clic en el botón Nueva canalización.

  5. Selecciona Git de Azure Repos (YAML).

  6. Selecciona el repositorio eShopOnWeb.

  7. Selecciona Canalización inicial.

  8. Reemplaza el contenido del archivo azure-pipelines.yml por el código siguiente:

    trigger:
    - main
    
    pool:
      vmImage: 'windows-latest'
    
    stages:
    - stage: Dev
      jobs:
      - job: Build
        steps:
        - script: echo Build
    - stage: Test
      jobs:
      - job: Test
        steps:
        - script: echo Test
    - stage: Production
      jobs:
      - job: Deploy
        steps:
        - script: echo Deploy
    
  9. Selecciona Guardar y ejecutar. Elige confirmar directamente en la rama principal y selecciona Guardar y ejecutar de nuevo.

  10. Verás la canalización que se ejecuta con las tres fases (Desarrollo, Pruebas y Producción) y los trabajos correspondientes. Espera hasta que finalice la canalización y vuelve a la página Canalizaciones.

    Captura de pantalla de la canalización que se ejecuta con las tres fases y los trabajos correspondientes

  11. Selecciona (Más opciones) en el lado derecho de la canalización que acabas de crear y selecciona Rename/move (Cambiar nombre/mover).

  12. Cambia el nombre de la canalización a eShopOnWeb-MultiStage-Main y selecciona Guardar.

Tarea 2: Creación de una plantilla de variables

  1. Ve a Repositorio > Archivos.

  2. Expande la carpeta .ado y haz clic en Nuevo archivo.

  3. Asigna al archivo el nombre eshoponweb-variables.yml y haz clic en Crear.

  4. Agrega el siguiente código al archivo:

    variables:
      resource-group: 'YOUR-RESOURCE-GROUP-NAME'
      location: 'centralus'
      templateFile: 'infra/webapp.bicep'
      subscriptionid: 'YOUR-SUBSCRIPTION-ID'
      azureserviceconnection: 'YOUR-AZURE-SERVICE-CONNECTION-NAME'
      webappname: 'YOUR-WEB-APP-NAME'
    
  5. Reemplaza los valores de las variables por los valores correctos de tu entorno:

    • Reemplaza YOUR-RESOURCE-GROUP-NAME por el nombre del grupo de recursos que deseas usar en este laboratorio, por ejemplo, rg-eshoponweb-multi.
    • Establece el valor de la variable location en el nombre de la región de Azure en la que quieres implementar los recursos, por ejemplo, centralus.
    • Reemplaza YOUR-SUBSCRIPTION-ID por tu identificador de suscripción a Azure.
    • Reemplaza YOUR-AZURE-SERVICE-CONNECTION-NAME por azure subs
    • Reemplaza YOUR-WEB-APP-NAME por un nombre único global de la aplicación web que se va a implementar, por ejemplo, la cadena eshoponweb-lab-multi-123456 seguida de un número aleatorio de seis dígitos.
  6. Selecciona Commit, en el cuadro de texto de comentario de “commit”, escribe [skip ci] y, luego, selecciona Commit.

    Nota: mediante la adición del comentario [skip ci] a hacer “commit”, evitarás la ejecución automática de la canalización que, en este momento, se ejecuta de forma predeterminada después de cada cambio en el repositorio.

Tarea 3: Preparación de la canalización para usar plantillas

  1. En el portal Azure DevOps, en la página del proyecto eShopOnWeb, ve a Repositorios.

  2. En el directorio raíz del repositorio, selecciona azure-pipelines.yml que contiene la definición de la canalización eShopOnWeb-MultiStage-Main.

  3. Haz clic en el botón Editar.

  4. Reemplaza el contenido del archivo azure-pipelines.yml por el código siguiente:

    trigger:
    - main
    variables:
    - template: .ado/eshoponweb-variables.yml
       
    stages:
    - stage: Dev
      jobs:
      - template: .ado/eshoponweb-ci.yml
    - stage: Test
      jobs:
      - template: .ado/eshoponweb-cd-webapp-code.yml
    - stage: Production
      jobs:
      - job: Deploy
        steps:
        - script: echo Deploy to Production or Swap
    
  5. Selecciona Commit, en el cuadro de texto de hacer “commit”, escribe [skip ci] y, luego, selecciona Commit.

Tarea 4: Actualización de plantillas de CI/CD

  1. En el Repositorio del proyecto eShopOnWeb, selecciona el directorio .ado y selecciona el archivo eshoponweb-ci.yml.

  2. Haz clic en el botón Editar.

  3. Quita todo lo que está encima de la sección trabajos.

    #NAME THE PIPELINE SAME AS FILE (WITHOUT ".yml")
    # trigger:
    # - main
       
    resources:
      repositories:
        - repository: self
          trigger: none
       
    stages:
    - stage: Build
      displayName: Build .Net Core Solution
    
  4. Selecciona Commit, en el cuadro de texto de comentario de “commit”, escribe [skip ci] y, a continuación, selecciona Commit.

  5. En el Repositorio del proyecto eShopOnWeb, selecciona el directorio .ado y selecciona el archivo eshoponweb-cd-webapp-code.yml.

  6. Haz clic en el botón Editar.

  7. Quita todo lo que está encima de la sección trabajos.

     # NAME THE PIPELINE SAME AS FILE (WITHOUT ".yml") #
     # Trigger CD when CI executed successfully
        
     resources:
       pipelines:
         - pipeline: eshoponweb-ci
           source: eshoponweb-ci # given pipeline name
           trigger: true
        
     repositories:
       - repository: eShopSecurity
         type: git
         name: eShopSecurity/eShopSecurity # name of the project and repository
        
     variables:
       - template: eshoponweb-secure-variables.yml@eShopSecurity # name of the template and repository
        
     stages:
       - stage: Test
         displayName: Testing WebApp
         jobs:
           - deployment: Test
             pool: eShopOnWebSelfPool
             environment: Test
             strategy:
               runOnce:
                 deploy:
                   steps:
                     - script: echo Hello world! Testing environments!
        
       - stage: Deploy
         displayName: Deploy to WebApp
    
  8. Reemplaza el contenido existente del paso #download artifacts por:

        - download: current
          artifact: Website
        - download: current
          artifact: Bicep
    
  9. Selecciona Commit, en el cuadro de texto de hacer “commit”, escribe [skip ci] y, luego, selecciona Commit.

Tarea 5: Ejecución de la canalización principal

  1. Ve a Canalizaciones > Canalizaciones.

  2. Abre la canalización eShopOnWeb-MultiStage-Main.

  3. Selecciona Ejecutar canalización.

    Nota: si recibes un mensaje que indica que la canalización necesita permiso para acceder a un recurso antes de que la ejecución pueda continuar, selecciona Ver y, a continuación, selecciona Permitir y Permitir de nuevo para permitir que se ejecute la canalización.

    Nota: si se produce un error en los trabajos de la fase de implementación, ve a la página de ejecución de la canalización y selecciona Volver a ejecutar los trabajos con errores*.

  4. Espera hasta que finalice la canalización y comprueba los resultados.

    Captura de pantalla de la canalización que se ejecuta con las tres fases y los trabajos correspondientes

[!IMPORTANT] Recuerda eliminar los recursos creados en Azure Portal para evitar cargos innecesarios.

Revisión

En este laboratorio, has aprendido a ampliar una canalización en varias plantillas mediante Azure DevOps. En este laboratorio se han tratado conceptos básicos y procedimientos recomendados para crear una canalización de varias fases, crear una plantilla de variables, crear una plantilla de trabajo y crear una plantilla de fase.