Cvičení – publikování modulu do registru
Ve vaší společnosti hraček jste publikovali moduly Bicep do registru. Proces publikování jste spustili ručně z vlastního počítače. Teď chcete vytvořit kanál pro zpracování procesu publikování.
V tomto cvičení:
- Vytvořte registr kontejneru pro moduly Bicep.
- Přidejte do pipeline fázi lint.
- Přidejte fázi zpracování pro publikování modulu do vašeho registru.
- Ověřte, že vaše potrubí běží úspěšně.
- Zkontrolujte publikovaný modul v registru.
Vytvoření registru kontejneru
Než budete moct publikovat moduly, musíte vytvořit registr, který bude vaše organizace používat. Tady pomocí webu Azure Portal vytvoříte registr.
V prohlížeči vytvoř nový registr kontejneru v Azure Portal.
Na kartě Základy vyberte cílové předplatné a ToyReusable skupinu prostředků, kterou jste vytvořili dříve.
Zadejte název registru a umístění, které je blízko vás.
Důležité
Název registru musí být v rámci Azure jedinečný a musí obsahovat 5 až 50 alfanumerických znaků. Značka zaškrtnutí vedle názvu registru označuje, že je název, který jste zvolili, k dispozici.
Vyberte základnípro SKU .
U ostatních nastavení konfigurace ponechte výchozí hodnoty.
Vyberte Zkontrolovat a vytvořit.
Zkontrolujte zobrazení Ověření úspěšné a poté vyberte Vytvořit.
Počkejte, než se nasazení dokončí, což obvykle trvá 1 až 2 minuty.
Jakmile se zobrazí zpráva Nasazení bylo úspěšné, vyberte Přejít k prostředku k otevření registru kontejneru.
V oblasti Přehled registru kontejneru si poznamenejte hodnotu nastavení přihlašovacího serveru. Bude to něco jako yourregistryname.azurecr.io.
Tuto hodnotu budete potřebovat za chvíli.
Přidání souboru metadat modulu
V předchozí lekci jste se dozvěděli o důležitosti strategie správy verzí pro moduly. Dozvěděli jste se také, jak pomocí souborů metadat modulů určit hlavní a vedlejší verzi vašeho modulu v rámci pipeline. Tady přidáte soubor metadat pro modul účtu úložiště.
V editoru Visual Studio Code rozbalte složku modules/storage-account v kořenovém adresáři úložiště.
Vytvořte nový soubor s názvem metadata.json.
Do souboru přidejte následující obsah:
{ "version": { "major": 1, "minor": 2 } }
Všimněte si, že v souboru metadat samostatně definujete čísla hlavních a podverzí. Vaše potrubí kombinuje tato čísla spolu s číslem sestavení potrubí do kompletního čísla verze při každém spuštění potrubí.
Uložte změny souboru.
Aktualizace definice kanálu a přidání fáze lint
Úložiště obsahuje koncept kanálu, který můžete použít jako výchozí bod.
Otevřete soubor pipeline.yml ve složce modules/storage-account.
Aktualizujte hodnotu proměnné prostředí
ModuleRegistryServer
na název serveru registru kontejneru. Tento název jste zkopírovali dříve v tomto cvičení.Pokud je například přihlašovací server vašeho registru yourregistryname.azurecr.io, bude vypadat takto:
- name: ModuleRegistryServer value: yourregistryname.azurecr.io
V dolní části souboru pro komentář
# To be added
s následující definicí lintovací fáze.stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file $(ModuleFilePath) name: LintBicepCode displayName: Run Bicep linter
Přidejte fázi publikování do pipeline vašich aplikací.
Teď můžete přidat druhou fázi pro publikování modulu do registru kontejneru.
V dolní části souboru pipeline.yml definujte fázi Publikace a přidejte krok ke čtení čísla verze ze souboru modulu metadata.json a nastavte ho jako proměnnou pipeliny.
- 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
Tento krok spustí skript, který k parsování souboru JSON používá aplikaci příkazového řádku jq.
Pod krokem, který jste vytvořili, přidejte krok pro publikování modulu do registru.
- 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)
Všimněte si, že tento krok vytváří hodnotu argumentu
--target
dynamicky. Kombinuje hodnotu serveru registru, název modulu a číslo verze.Uložte změny souboru.
Ověření a potvrzení definice kanálu
Ověřte, že váš soubor storage_account_module.yml vypadá jako v následujícím příkladu:
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)
Pokud tomu tak není, aktualizujte ho tak, aby odpovídal tomuto příkladu, a pak ho uložte.
Potvrďte a nasdílejte změny do úložiště Git spuštěním následujících příkazů v terminálu editoru Visual Studio Code:
git add . git commit -m "Add lint and publish stages to storage account module pipeline" git push
Ihned po odeslání Azure Pipelines spustí nový běh pipeliny.
Monitorovat potrubí
V prohlížeči vyberte Pipelines>Pipelines.
Vyberte aktivní spuštění kanálu.
Zobrazí se provoz kanálu.
Počkejte na dokončení spuštění potrubí. Modul Bicep se publikuje do vašeho registru kontejneru.
Poznamenejte si číslo verze pipeline, které zahrnuje dnešní datum a jedinečné číslo revize.
Kontrola modulu v registru
Publikovaný modul můžete zobrazit také na webu Azure Portal.
V prohlížeči přejděte na portál Azure.
Přejděte do skupiny prostředků ToyReusable.
Vyberte registr kontejneru, který jste vytvořili dříve.
V nabídce vyberte podokno Úložiště. Pak vyberte úložiště modules\storage-account, které představuje modul, který váš kanál publikoval.
Všimněte si, že existuje jediná značka , která odpovídá číslu verze modulu publikovaného vaším datovým tokem. Hlavní verze (1) a podverze (2) odpovídají číslům verzí, které jste definovali v souboru metadata.json. Číslo revize (20230407.3) odpovídá číslu buildu kanálu.
Ukliďte prostředky
Teď, když jste úkol dokončili, můžete odebrat prostředky, abyste za ně neúčtovali.
V terminálu editoru Visual Studio Code spusťte následující příkaz:
az group delete --resource-group ToyReusable --yes --no-wait
Skupina prostředků se odstraní na pozadí.
Remove-AzResourceGroup -Name ToyReusable -Force
Můžete také odebrat připojení služby a projekt Azure DevOps.
Připojení služby
- V projektu Azure DevOps vyberte Nastavení projektu>Připojení ke službě.
- Vyberte ToyReusable.
- V pravém horním rohu vyberte tři tečky pro Další možnosti.
- Vyberte Odstranit a potvrďte odstranění.
Registrace aplikace Azure
- Na domovské stránce portálu vyhledejte Microsoft Entra ID a vyberte ho ze seznamu služeb.
- Přejděte na Spravovat registrace aplikací >.
- V Odstraněné aplikace vyberte opakovaně použitelné.
- Vyberte Trvale odstranit a postupujte podle pokynů.
Projekt Azure DevOps
- V projektu Azure DevOps vyberte Nastavení projektu>Přehled.
- Z Odstranit projekt vyberte možnost Odstranit.
- Zadejte název projektu a potvrďte odstranění.