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

Effectué

Dans cette unité, vous allez :

  • Créer une action GitHub pour implémenter un pipeline de build.
  • Modifier le code du service de coupons pour déclencher le workflow de génération.
  • Monitorer la progression du workflow de génération 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 à chaque étape.
  • A 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 autres artefacts de GitHub Actions ou des workflows dépendent des applications et des environnements. Pour faciliter la compréhension, les détails de cet exemple sont simplifiés. Les workflows de génération et de déploiement sont tous deux adaptés aux modifications du service des produits, car tous les microservices sont conservés dans le même référentiel. Dans un scénario de production réel, chaque micro-service est conservé dans son propre dépôt distinct.

Effectuez les étapes suivantes pour créer l’action de génération GitHub Actions :

  1. Accédez à votre référentiel dupliqué dans GitHub, sélectionnez l’onglet Actions.

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

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

  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'
    
    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 Azure Container Registry par le nom ACR que vous avez créé dans l’unité précédente ; par exemple, acseshop186748394.

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

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

    Vous avez fini de créer le workflow de génération de votre pipeline CI/CD.

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

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

    En remplaçant AZURE_CONTAINER_REGISTRY par le nom de votre ACR, vous devriez obtenir une sortie similaire à la suivante :

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

Déclencher la génération

Le flux de travail de construction 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 dépôt, sélectionnez l’onglet Actions.
  2. Sur la gauche, sous All workflows, sélectionnez le flux de travail Build and deploy an app to AKS, puis sélectionnez Run workflow.

Superviser la génération

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

  1. Dans votre dépôt, sélectionnez l’onglet Actions.

  2. Sélectionnez l'exécution la plus récente répertoriée pour le workflow Build and deploy an app to AKS. Le nom de l’exécution est le message de commit utilisé à l’étape précédente.

  3. Sélectionnez la tâche buildImage.

    Screenshot showing a GitHub workflow in progress.

  4. Si vous attendez quelques minutes, les étapes du travail devraient s'achever avec succès.

  5. Dans votre terminal, exécutez cette commande à nouveau pour afficher les versions du service produit stocké dans l'ACR.

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

    Vous devriez 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