Ejercicio: Creación de una acción de GitHub para compilar una imagen de contenedor

Completado

En esta unidad, completará las siguientes tareas:

  • Cree una acción de GitHub para implementar un pipeline de compilación.
  • Modifique el código del servicio de cupones para desencadenar el flujo de trabajo de compilación.
  • Supervise el progreso del flujo de trabajo de compilación en tiempo real.

Crear la acción de compilación

El código YAML de este procedimiento define una acción de GitHub que:

  • Se desencadena cuando se inserta una confirmación en el código fuente o las pruebas unitarias del servicio de cupones en la rama main.
  • Define variables de entorno específicas del paso.
  • Tiene un trabajo o un conjunto de pasos que se ejecutan en el mismo ejecutor de flujo de trabajo, denominado Build and push image to ACR.

Importante

Las condiciones del desencadenador y otros artefactos de flujos de trabajo o Acciones de GitHub dependen de las aplicaciones y los entornos. Para facilitar la comprensión, los detalles se mantienen sencillos en este ejemplo. Tanto la compilación como los flujos de trabajo de implementación se limitan a los cambios del servicio de producto porque todos los microservicios se mantienen en un único repositorio. En un escenario de producción real, cada microservicio se mantendría en su propio repositorio independiente.

Complete los pasos siguientes para crear la acción de compilación de GitHub Actions:

  1. Vaya al repositorio bifurcado en GitHub y seleccione la Actions pestaña.

  2. En la página Get started with GitHub Actions, seleccione el vínculo set up a workflow yourself.

    Captura de pantalla que muestra la pestaña Acciones en el repositorio de GitHub, resaltando el vínculo de creación del flujo de trabajo.

  3. En la página siguiente, pegue el siguiente código YAML en el editor.

    name: Build and deploy an app to AKS
    
    on:
      push:
        branches: ["main"]
      workflow_dispatch:
    
    env:
      # Local environment variables used later in the workflow
      AZURE_CONTAINER_REGISTRY: 'name of your Azure Container Registry'
      CONTAINER_NAME: 'productservice'
      RESOURCE_GROUP: 'rg-eshop'
      CLUSTER_NAME: 'aks-eshop'
      DEPLOYMENT_MANIFEST_PATH: './product.yml'
      DOCKER_PATH: './DockerfileProducts.acr'
    
    jobs:
      buildImage:
        permissions:
          contents: read
          id-token: write
        runs-on: ubuntu-latest
        steps:
          # Checks out the repository this file is in
          - uses: actions/checkout@v3
    
          # Logs in with your Azure credentials stored in GitHub secrets
          - name: Azure login
            uses: azure/login@v1.4.6
            with:
              creds: '${{ secrets.AZURE_CREDENTIALS }}'
    
          # Builds and pushes an image up to your Azure Container Registry
          - name: Build and push image to ACR
            run: |
              az acr build --file ${{ env.DOCKER_PATH }} --image ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.RESOURCE_GROUP }} .
    
    

    Reemplace el nombre de su instancia de Azure Container Registry por el nombre de ACR que creó en la unidad anterior; por ejemplo, acseshop186748394.

  4. Reemplace el nombre de archivo de flujo de trabajo main.yml predeterminado por azure-kubernetes-service.ymly, a continuación, seleccione Commit changes.

  5. En la Commit changes pantalla, seleccione Commit directly to the main branchy, a continuación, seleccione Commit changes.

    Ha terminado de crear el flujo de trabajo de compilación para la canalización de CI/CD.

  6. En el terminal, ejecute este comando para ver las versiones actuales del servicio de producto almacenados en ACR:

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    Al reemplazar el AZURE_CONTAINER_REGISTRY por el nombre de su ACR, debería ver una salida similar a la siguiente:

    Result
    ----------------------------------------
    v1
    

Iniciar la compilación

El flujo de trabajo de compilación se desencadena automáticamente en cuanto se confirma el archivo de flujo de trabajo. También puede desencadenar la compilación manualmente.

  1. En tu repositorio, selecciona la pestaña Actions.
  2. A la izquierda, en All workflows, seleccione el Build and deploy an app to AKS flujo de trabajo y, a continuación, seleccione Run workflow.

Supervisar la compilación

Para ver el progreso en tiempo real del proceso de compilación:

  1. En tu repositorio, selecciona la pestaña Actions.

  2. Seleccione la ejecución más reciente enumerada para el flujo de trabajo Build and deploy an app to AKS. El nombre de la ejecución es el mensaje de confirmación que usó en el paso anterior.

  3. Seleccione el buildImage puesto.

    Captura de pantalla que muestra un flujo de trabajo de GitHub en curso.

  4. Si espera unos minutos, los pasos del trabajo deberían completarse con éxito.

  5. En el terminal, vuelva a ejecutar este comando para ver las versiones del servicio de producto almacenados en ACR.

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    Debería ver una salida similar a la siguiente que muestra que se ha agregado una nueva versión de imagen al ACR desde el flujo de trabajo de GitHub:

    Result
    ----------------------------------------
    8c75edb7a349ec570bd4eac397015bc3c547186e
    v1