Übung – Erstellen einer GitHub-Aktion zum Erstellen eines Containerimages
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.
Wechseln Sie zu Ihrem Fork-Repository in GitHub, und wählen Sie die Actions Registerkarte aus.
Wählen Sie auf der Get started with GitHub Actions Seite den set up a workflow yourself Link 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-Containerregistrierung durch den ACR-Namen, den Sie in der vorherigen Einheit erstellt haben. beispiel: acseshop186748394.
Ersetzen Sie den Standardmäßigen Namen der Workflowdatei main.yml durch azure-kubernetes-service.yml, und wählen Sie Commit changesdann aus.
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.
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 tableWenn 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.
- Wählen Sie in Ihrem Repository den Actions Tab 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 Builds
Um den Fortschritt des Builds in Echtzeit anzusehen:
Wählen Sie in Ihrem Repository den Actions Tab aus.
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.
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 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 tableDie Ausgabe sollte ähnlich wie folgt angezeigt werden, mit einer neuen Bildversion, die dem ACR aus dem GitHub-Workflow hinzugefügt wurde:
Result ---------------------------------------- 8c75edb7a349ec570bd4eac397015bc3c547186e v1

