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

Completado

En esta unidad, realizará las siguientes tareas:

  • Crear una acción de GitHub para implementar una canalización de compilación.
  • Modificar el código del servicio de cupones para desencadenar el flujo de trabajo de compilación.
  • Supervisar 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, en este ejemplo se simplifican los detalles. Los flujos de trabajo de compilación e implementación tienen como ámbito 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 mantiene en su propio repositorio independiente.

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

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

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

    Screenshot that shows the Actions tab in the GitHub repository, highlighting the workflow creation link.

  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'
    
    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 Azure Container Registry por el nombre de ACR que creó en la unidad anterior; por ejemplo, acseshop186748394.

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

  5. En la pantalla Commit changes, seleccione Commit directly to the main branch y, 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 del producto almacenado en el ACR:

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

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

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

Desencadenamiento de 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 el repositorio, seleccione la pestaña Actions.
  2. A la izquierda, en All workflows, seleccione el flujo de trabajo Build and deploy an app to AKS y, a continuación, seleccione Run workflow.

Supervisar la compilación

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

  1. En el repositorio, seleccione la pestaña Actions.

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

  3. Seleccione el trabajo buildImage.

    Screenshot showing a GitHub workflow in progress.

  4. Si espera unos minutos, los pasos del trabajo deben completarse correctamente.

  5. En el terminal, vuelva a ejecutar este comando para ver las versiones del servicio de producto almacenados en el 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