Ćwiczenie — publikowanie modułu w rejestrze
W swojej firmie z zabawkami publikujesz moduły Bicep w rejestrze. Zarządzasz procesem publikowania ręcznie z własnego komputera. Obecnie chcesz utworzyć proces do obsługi procesu publikowania.
W tym ćwiczeniu wykonasz następujące czynności:
- Utwórz rejestr kontenerów dla modułów Bicep.
- Dodaj etap lintowania do pipeline'u.
- Dodaj etap potoku, aby opublikować moduł w rejestrze.
- Sprawdź, czy twój pipeline działa pomyślnie.
- Sprawdź opublikowany moduł w rejestrze.
Tworzenie rejestru kontenerów
Przed opublikowaniem modułów należy utworzyć rejestr używany przez organizację. W tym miejscu utworzysz rejestr przy użyciu witryny Azure Portal.
W przeglądarce utwórz nowy rejestr kontenerów w portalu Azure.
Na karcie podstawowe wybierz docelową subskrypcję i grupę zasobów ToyReusable, którą utworzyłeś wcześniej.
Wprowadź nazwę rejestru i lokalizację znajdującą się blisko Ciebie.
Ważny
Nazwa rejestru musi być unikatowa na platformie Azure i zawierać od 5 do 50 znaków alfanumerycznych. Znacznik wyboru obok nazwy rejestru wskazuje, że wybrana nazwa jest dostępna.
W przypadku jednostki SKUwybierz pozycję Podstawowa.
Pozostaw wartości domyślne innych ustawień konfiguracji.
Wybierz pozycję Przejrzyj i utwórz.
Przejrzyj ustawienia, upewniając się, że walidacja zakończona pomyślnie , a następnie wybierz Utwórz.
Poczekaj na zakończenie wdrożenia, co zwykle trwa od 1 do 2 minut.
Gdy zostanie wyświetlony komunikat Wdrożenie zakończyło się pomyślnie, wybierz pozycję Przejdź do zasobu, aby otworzyć rejestr kontenerów.
W obszarze Omówienie rejestru kontenerów zapisz wartość ustawienia serwera logowania. Będzie to wyglądało mniej więcej tak: yourregistryname.azurecr.io.
Ta wartość będzie potrzebna wkrótce.
Dodawanie pliku metadanych modułu
W poprzedniej lekcji przedstawiono znaczenie strategii przechowywania wersji dla modułów. Nauczyłeś się także, jak używać plików metadanych modułu do określenia głównego i drugorzędnego numeru wersji modułu w potoku. W tym miejscu dodajesz plik metadanych dla modułu konta przechowywania.
W programie Visual Studio Code rozwiń folder modules/storage-account w katalogu głównym repozytorium.
Utwórz nowy plik o nazwie metadata.json.
Dodaj następującą zawartość do pliku:
{ "version": { "major": 1, "minor": 2 } }
Zwróć uwagę, że w pliku metadanych należy oddzielnie zdefiniować główne i pomocnicze numery wersji. Potok łączy te liczby wraz z numerem kompilacji potoku w kompletny numer wersji przy każdym uruchomieniu potoku.
Zapisz zmiany w pliku.
Zaktualizuj definicję rurociągu i dodaj etap lint
Repozytorium zawiera wersję roboczą pipeline'u, którego można użyć jako punktu wyjścia.
Otwórz plik pipeline.yml w folderze modules/storage-account.
Zaktualizuj wartość zmiennej środowiskowej
ModuleRegistryServer
na nazwę serwera rejestru kontenerów. Wcześniej w tym ćwiczeniu skopiowałeś tę nazwę.Jeśli na przykład serwer logowania rejestru to yourregistryname.azurecr.io, to będzie wyglądało następująco:
- name: ModuleRegistryServer value: yourregistryname.azurecr.io
Na dole pliku, przy komentarzu
# To be added
, znajduje się następująca definicja etapu lint:stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file $(ModuleFilePath) name: LintBicepCode displayName: Run Bicep linter
Dodaj etap publikacji do ciągu
Teraz możesz dodać drugi etap, aby opublikować moduł w rejestrze kontenerów.
W dolnej części pliku pipeline.yml zdefiniuj etap publikowania i dodaj krok, aby odczytać numer wersji z pliku metadata.json modułu i ustawić go jako zmienną potoku.
- 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
Krok uruchamia skrypt, który używa aplikacji wiersza polecenia jq do analizowania pliku JSON.
Poniżej utworzonego kroku dodaj krok publikowania modułu w rejestrze.
- 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)
Zwróć uwagę, że ten krok tworzy wartość argumentu
--target
dynamicznie. Łączy wartość serwera rejestru, nazwę modułu i numer wersji.Zapisz zmiany w pliku.
Zweryfikuj i zatwierdź definicję pipelina
Sprawdź, czy plik storage_account_module.yml wygląda następująco:
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)
Jeśli tak nie jest, zaktualizuj go tak, aby był zgodny z tym przykładem, a następnie zapisz go.
Zatwierdź i wypchnij zmiany do repozytorium Git, uruchamiając następujące polecenia w terminalu programu Visual Studio Code:
git add . git commit -m "Add lint and publish stages to storage account module pipeline" git push
Natychmiast po zatwierdzeniu zmian usługa Azure Pipelines uruchamia nowy potok.
Monitoruj rurociąg
W przeglądarce wybierz pozycję Pipelines>Pipelines.
Wybierz aktywne uruchomienie potoku.
Uruchomienie potoku jest wyświetlane.
Poczekaj na zakończenie przebiegu potoku. Moduł Bicep został opublikowany w rejestrze kontenerów.
Zanotuj numer kompilacji ciągu, który zawiera dzisiejszą datę i unikatowy numer poprawki.
Przejrzyj moduł w rejestrze
Opublikowany moduł można również wyświetlić w witrynie Azure Portal.
W przeglądarce przejdź do witryny Azure Portal.
Przejdź do grupy zasobów ToyReusable.
Wybierz utworzony wcześniej rejestr kontenerów.
Wybierz okienko Repozytoria z menu. Następnie wybierz repozytorium modules\storage-account, które reprezentuje moduł opublikowany przez Twój potok danych.
Zwróć uwagę, że istnieje jeden tag , który odpowiada numerowi wersji modułu opublikowanego przez przepływ danych. Wersja główna (1) i wersja pomocnicza (2) są zgodne z numerami wersji zdefiniowanymi w pliku metadata.json. Numer poprawki (20230407.3) jest zgodny z numerem budowy w potoku.
Czyszczenie zasobów
Po ukończeniu ćwiczenia możesz usunąć zasoby, aby nie zostały naliczane opłaty.
W terminalu programu Visual Studio Code uruchom następujące polecenie:
az group delete --resource-group ToyReusable --yes --no-wait
Grupa zasobów jest usuwana w tle.
Remove-AzResourceGroup -Name ToyReusable -Force
Możesz również usunąć połączenie z usługą i projekt usługi Azure DevOps.
Podłączenie usługi
- W projekcie Azure DevOps wybierz pozycję Ustawienia projektu>Połączenia usługi.
- Wybierz ToyReusable.
- W prawym górnym rogu wybierz trzy kropki dla Więcej akcji.
- Wybierz pozycję Usuń i potwierdź usunięcie.
Rejestracja aplikacji platformy Azure
- Na stronie głównej portalu wyszukaj Microsoft Entra ID i wybierz ją z listy usług Services.
- Przejdź do Zarządzanie rejestracjami aplikacji>.
- W obszarze Usunięte aplikacje wybierz wielokrotnego użytku.
- Wybierz pozycję Usuń trwale i postępuj zgodnie z monitami.
Projekt usługi Azure DevOps
- W projekcie Usługi Azure DevOps wybierz pozycję Ustawienia projektu>Przegląd.
- Z Usuń projekt wybierz Usuń.
- Wprowadź nazwę projektu i potwierdź usunięcie.