Ejercicio: Creación de una acción de GitHub para compilar una imagen de contenedor
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:
Vaya al repositorio bifurcado en GitHub, seleccione la pestaña Actions.
En la página Get started with GitHub Actions, seleccione el vínculo set up a workflow yourself.
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 Azure Container Registry por el nombre de ACR que creó en la unidad anterior; por ejemplo, acseshop186748394.
Reemplace el nombre de archivo main.yml del flujo de trabajo predeterminado por azure-kubernetes-service.yml y, a continuación, seleccione Commit changes.
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.
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.
- En el repositorio, seleccione la pestaña Actions.
- 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:
En el repositorio, seleccione la pestaña Actions.
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.
Seleccione el trabajo buildImage.
Si espera unos minutos, los pasos del trabajo deben completarse correctamente.
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