Exercice - Créer une action GitHub pour générer une image conteneur

Effectué

Dans cette unité, vous allez effectuer les tâches suivantes :

  • Créez une action GitHub pour implémenter un pipeline de build.
  • Modifiez le code du service de coupon pour déclencher le processus de construction.
  • Surveillez la progression du workflow de build en temps réel.

Créer l'action de génération

Le code YAML de cette procédure définit une action GitHub qui :

  • Se déclenche quand un commit est poussé dans le code source du service de coupons ou dans les tests unitaires de la branche main.
  • Définit des variables d’environnement spécifiques à l’étape.
  • Possède un travail ou un ensemble d’étapes qui s’exécutent sur le même exécuteur de workflow, nommé Build and push image to ACR.

Important

Les conditions de déclenchement et d’autres artefacts de GitHub Actions ou de flux de travail dépendent des applications et des environnements. Pour faciliter la compréhension, les détails sont conservés simples dans cet exemple. Les flux de travail de génération et de déploiement sont étendus aux modifications apportées au service de produit, car tous les microservices sont conservés sous un seul référentiel. Dans un scénario de production réel, chaque microservice est conservé dans son propre référentiel distinct.

Suivez les étapes suivantes pour créer une action de build pour GitHub Actions :

  1. Accédez à votre dépôt fourche dans GitHub, puis sélectionnez l’onglet Actions .

  2. Dans la Get started with GitHub Actions page, sélectionnez le set up a workflow yourself lien.

    Capture d’écran montrant l’onglet Actions dans le référentiel GitHub, mettant en évidence le lien de création de flux de travail.

  3. Dans la page suivante, collez le code YAML suivant dans l’éditeur.

    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 }} .
    
    

    Remplacez le nom de votre Registre de conteneurs Azure par le nom ACR que vous avez créé dans l’unité précédente ; par exemple, acseshop186748394.

  4. Remplacez le nom main.ymldu fichier de flux de travail azure-kubernetes-service.yml par défaut par , puis sélectionnez Commit changes.

  5. Sur l’écran Commit changes , sélectionnez Commit directly to the main branch, puis sélectionnez Commit changes.

    Vous avez terminé de créer le workflow de build pour votre pipeline CI/CD.

  6. Dans votre terminal, exécutez cette commande pour afficher les versions actuelles du service de produit stocké dans l’ACR :

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

    En remplaçant le AZURE_CONTAINER_REGISTRY par le nom de votre ACR, vous devez voir la sortie similaire à ce qui suit :

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

Déclencher la génération

Le flux de travail de génération se déclenche automatiquement dès que vous validez le fichier de flux de travail. Vous pouvez également déclencher la construction manuellement.

  1. Dans votre référentiel, sélectionnez l’onglet Actions .
  2. Sur la gauche, sous All workflows, sélectionnez le Build and deploy an app to AKS flux de travail, puis sélectionnez Run workflow.

Superviser la génération

Pour afficher une progression en temps réel de la génération :

  1. Dans votre référentiel, sélectionnez l’onglet Actions .

  2. Sélectionnez la dernière exécution répertoriée pour le flux de travail Build and deploy an app to AKS. Le nom de l’exécution est le message de validation que vous avez utilisé à l’étape précédente.

  3. Sélectionnez le buildImage poste.

    Capture d’écran montrant un flux de travail GitHub en cours.

  4. Si vous attendez quelques minutes, les étapes du travail doivent se terminer correctement.

  5. Dans votre terminal, réexécutez cette commande pour afficher les versions du service de produit stockés dans l’ACR.

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

    Vous devez voir une sortie similaire à la suivante qui montre qu’une nouvelle version d’image a été ajoutée à l’ACR à partir du flux de travail GitHub :

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