Übung: Erstellen einer GitHub Actions-Aktion zum Erstellen eines Containerimage
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:
Wechseln Sie zu Ihrem geforkten Repository in GitHub, und wählen Sie die Actions -Registerkarte aus.
Wählen Sie auf der Seite Get started with GitHub Actions den Link set up a workflow yourself aus.
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.
Ersetzen Sie den Standarddateinamen main.yml des Workflows durch azure-kubernetes-service.yml, und wählen Sie dann Commit changes aus.
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.
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.
- Wählen Sie in Ihrem Repository die Registerkarte Actions aus.
- 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:
Wählen Sie in Ihrem Repository die Registerkarte Actions aus.
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.
Wählen Sie den buildImage -Auftrag aus.
Wenn Sie einige Minuten warten, sollten die Schritte im Auftrag erfolgreich abgeschlossen werden.
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