Übung – Erstellen einer GitHub-Aktion zum Erstellen eines Containerimages

Abgeschlossen

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

  • Erstellen Sie eine GitHub-Aktion, um eine Buildpipeline zu implementieren.
  • Ändern Sie den Coupondienstcode, um den Buildworkflow auszulösen.
  • Überwachen Sie den Fortschritt des Buildworkflows in Echtzeit.

Erstellen der Buildaktion

Der YAML-Code in dieser Prozedur definiert eine GitHub-Aktion, die:

  • Sie wird ausgelöst, wenn ein Commit in den Quellcode des Coupondiensts oder in Komponententests im main-Branch gepusht wird.
  • Definiert schrittspezifische Umgebungsvariablen.
  • Verfügt über einen Auftrag oder eine Reihe von Schritten, die auf demselben Workflowläufer ausgeführt werden, mit dem Namen Build and push image to ACR.

Von Bedeutung

Triggerbedingungen und andere Artefakte von GitHub-Aktionen oder -Workflows hängen von den Apps und Umgebungen ab. Um das Verständnis zu erleichtern, werden Details in diesem Beispiel einfach gehalten. Sowohl der Build- als auch die Bereitstellungs-Workflows sind auf Änderungen in den Produktdiensten beschränkt, da alle Microservices in einem einzigen Repository verwaltet werden. In einem tatsächlichen Produktionsszenario würde jeder Microservice in einem eigenen separaten Repository aufbewahrt.

Führen Sie die folgenden Schritte aus, um die Build-Aktion in GitHub Actions zu erstellen.

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

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

    Screenshot der Registerkarte

  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-Containerregistrierung durch den ACR-Namen, den Sie in der vorherigen Einheit erstellt haben. beispiel: acseshop186748394.

  4. Ersetzen Sie den Standardmäßigen Namen der Workflowdatei main.yml durch azure-kubernetes-service.yml, und wählen Sie Commit changesdann aus.

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

    Sie haben das Erstellen 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 die AZURE_CONTAINER_REGISTRY durch den Namen Ihres ACR 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 übernehmen. Sie können den Build auch manuell auslösen.

  1. Wählen Sie in Ihrem Repository den Actions Tab 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 Builds

Um den Fortschritt des Builds in Echtzeit anzusehen:

  1. Wählen Sie in Ihrem Repository den Actions Tab aus.

  2. Wählen Sie die neueste Workflowausführung aus, die für den Build and deploy an app to AKS Workflow aufgeführt ist. Der Name der Ausführung ist die Commit-Nachricht, die Sie im vorherigen Schritt verwendet haben.

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

    Screenshot eines ausgeführten GitHub-Workflows.

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

  5. Führen Sie in Ihrem Terminal diesen Befehl erneut 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