Übung: Veröffentlichen eines Moduls in einer Registrierung
In Ihrem Spielzeugunternehmen haben Sie Ihre Bicep-Module bisher in einer Registrierung veröffentlicht. Sie haben den Veröffentlichungsprozess manuell auf Ihrem eigenen Computer durchgeführt. Nun möchten Sie eine Pipeline für den Veröffentlichungsprozess erstellen.
In dieser Übung führen Sie die folgenden Schritte aus:
- Erstellen Sie eine Containerregistrierung für Ihre Bicep-Module.
- Fügen Sie der Pipeline eine Lintphase hinzu.
- Fügen Sie eine Pipelinephase hinzu, um das Modul in Ihrer Registrierung zu veröffentlichen.
- Stellen Sie sicher, dass Ihre Pipeline erfolgreich ausgeführt wird.
- Überprüfen Sie das veröffentlichte Modul in Ihrer Registrierung.
Erstellen einer Containerregistrierung
Sie müssen eine Registrierung für Ihre Organisation erstellen, um Module veröffentlichen zu können. Hier verwenden Sie das Azure-Portal zum Erstellen einer Registrierung.
Erstellen Sie in Ihrem Browser im Azure-Portal eine neue Containerregistrierung.
Wählen Sie auf der Registerkarte Grundlagen das Zielabonnement und die zuvor erstellte Ressourcengruppe ToyReusable aus.
Geben Sie einen Namen für die Registrierung und einen Standort in der Nähe ein.
Wichtig
Der Registrierungsname muss innerhalb von Azure eindeutig sein und aus 5 bis 50 alphanumerischen Zeichen bestehen. Das Häkchen neben dem Registrierungsnamen zeigt an, dass der von Ihnen ausgewählte Name verfügbar ist.
Wählen Sie unter SKU die Option Basic aus.
Ändern Sie die Standardwerte der anderen Konfigurationseinstellungen nicht.
Klicken Sie auf Überprüfen + erstellen.
Vergewissern Sie sich, dass für die Einstellungen Überprüfung erfolgreich angezeigt wird, und wählen Sie dann Erstellen aus.
Warten Sie, bis die Bereitstellung abgeschlossen ist (in der Regel 1-2 Minuten).
Wenn die Nachricht Bereitstellung erfolgreich angezeigt wird, wählen Sie Zu Ressource wechseln aus, um die Containerregistrierung zu öffnen.
Notieren Sie sich den Wert der Einstellung Anmeldeserver, die im Bereich Übersicht der Containerregistrierung angezeigt wird. Sie wird yourregistryname.azurecr.io ähnlich sein.
Sie benötigen diesen Wert in Kürze.
Hinzufügen einer Modulmetadatendatei
In der vorherigen Lerneinheit haben Sie gelernt, wie wichtig es ist, eine Strategie für die Versionsverwaltung Ihrer Module zu haben. Sie haben auch gelernt, wie Sie Modulmetadatendateien verwenden können, um die Haupt- und Nebenversionsnummer Ihres Moduls innerhalb einer Pipeline anzugeben. Hier fügen Sie eine Metadatendatei für Ihr Speicherkontomodul hinzu.
Erweitern Sie in Visual Studio Code den Ordner modules/storage-account im Stammverzeichnis Ihres Repositorys.
Erstellen Sie eine neue Datei mit dem Namen metadata.json.
Fügen Sie der Datei Folgendes hinzu:
{ "version": { "major": 1, "minor": 2 } }
Beachten Sie, dass Sie die Haupt- und Nebenversionsnummern in der Metadatendatei separat definieren. Ihre Pipeline kombiniert diese Zahlen zusammen mit der Buildnummer der Pipeline bei jeder Pipelineausführung in einer vollständigen Versionsnummer.
Speichern Sie die geänderte Datei.
Aktualisieren der Pipelinedefinition und Hinzufügen einer Lintphase
Ihr Repository enthält einen Entwurf einer Pipeline, die Sie als Startpunkt verwenden können.
Öffnen Sie die pipeline.yml-Datei im Ordner modules/storage-account.
Aktualisieren Sie den Wert der Umgebungsvariablen
ModuleRegistryServer
auf den Servernamen der Containerregistrierung. Sie haben diesen Namen vorhin in dieser Übung kopiert.Wenn der Anmeldeserver Ihrer Registrierung beispielsweise yourregistryname.azurecr.io ist, sieht er wie folgt aus:
- name: ModuleRegistryServer value: yourregistryname.azurecr.io
Am unteren Rand der Datei für den Kommentar
# To be added
mit der folgenden Definition für die Lintphase:stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file $(ModuleFilePath) name: LintBicepCode displayName: Run Bicep linter
Hinzufügen einer Veröffentlichungsstufe zur Pipeline
Jetzt können Sie eine zweite Phase zum Veröffentlichen des Moduls in Ihre Containerregistrierung hinzufügen.
Definieren Sie unten in der Datei pipeline.yml die Veröffentlichungsphase, und fügen Sie einen Schritt hinzu, um die Versionsnummer aus der metadata.json-Datei Ihres Moduls zu lesen und als Pipelinevariable festzulegen.
- stage: Publish jobs: - job: Publish steps: - script: | majorMinorVersionNumber=$(jq '(.version.major | tostring) + "." + (.version.minor | tostring)' $(ModuleMetadataFilePath) -r ) versionNumber="$majorMinorVersionNumber.$(Build.BuildNumber)" echo "##vso[task.setvariable variable=ModuleVersion;]$versionNumber" name: GetModuleVersionNumber displayName: Get module version number
Der Schritt führt ein Skript aus, das die „jq“-Befehlszeilenanwendung verwendet, um die JSON-Datei zu analysieren.
Fügen Sie unter dem gerade erstellten Schritt einen Schritt hinzu, um das Modul in der Registrierung zu veröffentlichen.
- task: AzureCLI@2 name: Publish displayName: Publish module inputs: azureSubscription: $(ServiceConnectionName) scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az bicep publish \ --target 'br:$(ModuleRegistryServer)/$(ModuleName):$(ModuleVersion)' \ --file $(ModuleFilePath)
Beachten Sie, dass dieser Schritt den Wert des Arguments
--target
dynamisch erstellt. Er kombiniert den Wert des Registrierungsservers, den Modulnamen und die Versionsnummer.Speichern Sie die geänderte Datei.
Überprüfen und Committen Ihrer Pipelinedefinition
Stellen Sie sicher, dass die Datei storage_account_module.yml wie im folgenden Beispiel aussieht:
trigger: batch: true branches: include: - main paths: include: - 'modules/storage-account/**' variables: - name: ServiceConnectionName value: ToyReusable - name: ModuleName value: storage-account - name: ModuleRegistryServer value: yourregistryname.azurecr.io - name: ModuleFilePath value: modules/storage-account/main.bicep - name: ModuleMetadataFilePath value: modules/storage-account/metadata.json pool: vmImage: ubuntu-latest stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file $(ModuleFilePath) name: LintBicepCode displayName: Run Bicep linter - stage: Publish jobs: - job: Publish steps: - script: | majorMinorVersionNumber=$(jq '(.version.major | tostring) + "." + (.version.minor | tostring)' $(ModuleMetadataFilePath) -r ) versionNumber="$majorMinorVersionNumber.$(Build.BuildNumber)" echo "##vso[task.setvariable variable=ModuleVersion;]$versionNumber" name: GetModuleVersionNumber displayName: Get module version number - task: AzureCLI@2 name: Publish displayName: Publish module inputs: azureSubscription: $(ServiceConnectionName) scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az bicep publish \ --target 'br:$(ModuleRegistryServer)/$(ModuleName):$(ModuleVersion)' \ --file $(ModuleFilePath)
Falls nicht, aktualisieren Sie sie entsprechend diesem Beispiel und speichern sie.
Committen und pushen Sie Ihre Änderungen in Ihr Git-Repository, indem Sie die folgenden Befehle im Visual Studio Code-Terminal ausführen:
git add . git commit -m "Add lint and publish stages to storage account module pipeline" git push
Unmittelbar nach dem Pushen startet Azure Pipelines eine neue Pipelineausführung.
Überwachen der Pipeline
Wählen Sie in Ihrem Browser Pipelines>Pipelines aus.
Wählen Sie die aktive Pipelineausführung aus.
Die Pipelineausführung wird angezeigt.
Warten Sie, bis die Pipelineausführung abgeschlossen ist. Das Bicep-Modul wird in Ihrer Containerregistrierung veröffentlicht.
Notieren Sie die Buildnummer der Pipeline, die das heutige Datum und eine eindeutige Revisionsnummer enthält.
Anzeigen des Moduls in der Registrierung
Sie können das veröffentlichte Modul auch im Azure-Portal anzeigen.
Navigieren Sie in Ihrem Browser zum Azure-Portal.
Wechseln Sie zur Ressourcengruppe ToyReusable.
Wählen Sie die zuvor erstellte Containerregistrierung aus.
Wählen Sie den Bereich Repositorys aus dem Menü aus. Wählen Sie dann das Repository modules\storage-account aus, das das Modul darstellt, das Ihre Pipeline veröffentlicht hat.
Beachten Sie, dass es ein einzelnes Tag gibt, das der Versionsnummer des Moduls entspricht, das Ihre Pipeline veröffentlicht hat. Die Hauptversion (1) und die Nebenversion (2) entsprechen den Versionsnummern, die Sie in der Datei metadata.json definiert haben. Die Revisionsnummer (20230407.3) entspricht der Buildnummer der Pipeline.
Bereinigen der Ressourcen
Nachdem Sie die Übung abgeschlossen haben, können Sie die Ressourcen entfernen, damit Ihnen dafür keine Gebühren berechnet werden.
Führen Sie im Visual Studio Code-Terminal den folgenden Befehl aus:
az group delete --resource-group ToyReusable --yes --no-wait
Die Ressourcengruppe wird im Hintergrund gelöscht.
Remove-AzResourceGroup -Name ToyReusable -Force
Sie können auch die Dienstverbindung und das Azure DevOps-Projekt entfernen.
Dienstverbindung
- Wählen Sie im Azure DevOps-Projekt Projekteinstellungen>Dienstverbindungen aus.
- Wählen Sie ToyReusable aus.
- Wählen Sie in der oberen rechten Ecke die drei Punkte für Weitere Aktionen aus.
- Wählen Sie Löschen aus, und bestätigen Sie den Löschvorgang.
Azure-App-Registrierung
- Suchen Sie auf der Startseite des Portals nach Microsoft Entra-ID, und wählen Sie sie aus der Liste der Dienste aus.
- Wechseln Sie zu Verwalten>App-Registrierungen.
- Wählen Sie unter Gelöschte Anwendungen die Option toy-reusable aus.
- Wählen Sie Endgültig löschen aus, und folgen Sie den Eingabeaufforderungen.
Azure DevOps-Projekt
- Wählen Sie im Azure DevOps-Projekt Projekteinstellungen>Übersicht aus.
- Wählen Sie unter Projekt löschen die Option Löschen aus.
- Geben Sie den Projektnamen ein, und bestätigen Sie den Löschvorgang.