Übung: Erstellen einer GitHub Actions-Aktion zum Erstellen eines Containerimage

Abgeschlossen

In dieser Einheit führen Sie die folgenden Aufgaben aus:

  • Erstellen einer GitHub Actions-Aktion zum Implementieren einer Buildpipeline
  • Ändern des Codes des Coupondiensts, um den Buildworkflow auszulösen
  • Überwachen des Fortschritts des Buildworkflows in Echtzeit

Erstellen der Buildaktion

Der YAML-Code in dieser Prozedur definiert eine GitHub-Aktion. Für sie gilt:

  • Sie wird ausgelöst, wenn ein Commit in den Quellcode des Coupondiensts oder in Komponententests im main-Branch gepusht wird.
  • Sie definiert schrittspezifische Umgebungsvariablen.
  • Sie verfügt über einen Auftrag (eine Reihe von Schritten, die für den gleichen Workflowrunner ausgeführt werden) mit dem Namen Build and push image to ACR.

Wichtig

Triggerbedingungen und andere Artefakte von GitHub Actions oder Workflows hängen von den Apps und Umgebungen ab. Zum besseren Verständnis werden die Details hier einfach gehalten. Sowohl der Build- als auch der Bereitstellungsworkflow sind auf Änderungen des Produktdiensts beschränkt, weil alle Microservices in einem einzigen Repository gespeichert werden. In einem tatsächlichen Produktionsszenario wird jeder Microservice in einem eigenen separaten Repository gespeichert.

Führen Sie die folgenden Schritte aus, um die GitHub Actions-Buildaktion zu erstellen:

  1. Wechseln Sie zu Ihrem geforkten Repository in GitHub, und wählen Sie die Actions -Registerkarte aus.

  2. Wählen Sie auf der Seite Get started with GitHub Actions den Link set up a workflow yourself aus.

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

  3. Fügen Sie auf der nächsten Seite den folgenden YAML-Code in den Editor ein.

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

    Ersetzen Sie den Namen Ihrer Azure Container Registry durch den ACR-Namen, den Sie in der vorherigen Einheit erstellt haben, z. B. acseshop186748394.

  4. Ersetzen Sie den Standarddateinamen main.yml des Workflows durch azure-kubernetes-service.yml, und wählen Sie dann Commit changes aus.

  5. Wählen Sie auf dem Bildschirm Commit changes die Option Commit directly to the main branch aus, und wählen Sie dann Commit changes aus.

    Sie haben die Erstellung des Buildworkflows für Ihre CI/CD-Pipeline abgeschlossen.

  6. Führen Sie in Ihrem Terminal diesen Befehl aus, um die aktuellen Versionen des im ACR gespeicherten Produktdiensts anzuzeigen:

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

    Wenn Sie AZURE_CONTAINER_REGISTRY durch den Namen Ihrer ACR-Instanz ersetzen, sollte die Ausgabe ähnlich wie folgt angezeigt werden:

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

Auslösen des Builds

Der Buildworkflow wird automatisch ausgelöst, sobald Sie die Workflowdatei committen. Sie können den Build auch manuell auslösen.

  1. Wählen Sie in Ihrem Repository die Registerkarte Actions aus.
  2. Wählen Sie auf der linken Seite unter All workflows den Build and deploy an app to AKS -Workflow aus, und wählen Sie dann Run workflow aus.

Überwachen des Buildvorgangs

So zeigen Sie den Echtzeitstatus des Builds an:

  1. Wählen Sie in Ihrem Repository die Registerkarte Actions aus.

  2. Wählen Sie die letzte Workflowausführung aus, die für den Build and deploy an app to AKS-Workflow aufgeführt wird. Die im vorherigen Schritt verwendete Commitnachricht wird zum Namen der Ausführung.

  3. Wählen Sie den buildImage -Auftrag aus.

    Screenshot showing a GitHub workflow in progress.

  4. Wenn Sie einige Minuten warten, sollten die Schritte im Auftrag erfolgreich abgeschlossen werden.

  5. Führen Sie in Ihrem Terminal diesen Befehl aus, um die Versionen des im ACR gespeicherten Produktdiensts anzuzeigen.

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

    Die Ausgabe sollte ähnlich wie folgt angezeigt werden, mit einer neuen Bildversion, die dem ACR aus dem GitHub-Workflow hinzugefügt wurde:

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