Cvičení – přidání fází lint a ověření do kanálu
Mluvili jste se svým týmem a rozhodli jste se dále automatizovat nasazení pomocí kanálu. Chcete získat větší jistotu v tom, co nasazujete.
V tomto cvičení přidáte do kanálu fáze ověřování. Potom spustíte linter a předběžné ověření před každým nasazením.
Během tohoto procesu:
- Aktualizujte stávající kanál, abyste přidali dvě nové fáze pro lint a ověřili kód Bicep.
- Spusťte kanál.
- Opravte všechny problémy, které váš kanál detekuje.
Aktualizace kanálu tak, aby se připravil na fáze
Nejprve je potřeba aktualizovat soubor kanálu, aby se definovala fáze. Azure Pipelines pro vás automaticky vytvoří jednu fázi, ale protože brzy přidáte další fáze, musíte kanál aktualizovat tak, aby explicitně definoval fáze.
V editoru Visual Studio Code otevřete soubor azure-pipelines.yml ve složce deploy .
Odeberte všechno v souboru z řádku 14 do dolní části souboru. Nezapomeňte také odebrat čáru
jobs:
.Do dolní části souboru přidejte následující kód:
stages: - stage: Deploy jobs: - job: Deploy steps: - task: AzureResourceManagerTemplateDeployment@3 name: Deploy displayName: Deploy to Azure inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(DeploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType)
Tip
Soubory YAML jsou citlivé na odsazení. Bez ohledu na to, jestli tento kód napíšete nebo vložíte, zkontrolujte správnost odsazení. V další části uvidíte úplnou definici kanálu YAML, abyste mohli ověřit, že se váš soubor shoduje.
Přidání fází lint a ověření do kanálu
Pod čáru
stages:
přidejte lintovou fázi:- stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file deploy/main.bicep name: LintBicepCode displayName: Run Bicep linter
Tato fáze definuje jeden krok, který spustí
az bicep build
příkaz pro lintování souboru Bicep.Pod řádky, které jste právě přidali, přidejte fázi ověření:
- stage: Validate jobs: - job: ValidateBicepCode displayName: Validate Bicep code steps: - task: AzureResourceManagerTemplateDeployment@3 name: RunPreflightValidation displayName: Run preflight validation inputs: connectedServiceName: $(ServiceConnectionName) location: $(deploymentDefaultLocation) deploymentMode: Validation resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType)
Tato fáze definuje jeden krok, který spustí předběžné ověření. Všimněte si, že tento krok obsahuje odkaz na připojení ke službě, protože proces předběžného ověření vyžaduje komunikaci s Azure.
Definice kanálu teď má tři fáze. První spustí linter v souboru Bicep, druhý provede předběžné ověření a třetí provede nasazení do Azure.
Uložte soubor.
Konfigurace linteru
Ve výchozím nastavení poskytuje linter Bicep upozornění, když zjistí problém s vaším souborem. Azure Pipelines nezachází s upozorněními linteru jako s problémy, které by měly kanál zastavit. Chcete-li toto chování přizpůsobit, vytvoříte bicepconfig.json soubor, který překonfiguruje linter.
Do složky deploy přidejte nový soubor a pojmenujte ho bicepconfig.json.
Zkopírujte do souboru následující kód:
{ "analyzers": { "core": { "enabled": true, "verbose": true, "rules": { "adminusername-should-not-be-literal": { "level": "error" }, "max-outputs": { "level": "error" }, "max-params": { "level": "error" }, "max-resources": { "level": "error" }, "max-variables": { "level": "error" }, "no-hardcoded-env-urls": { "level": "error" }, "no-unnecessary-dependson": { "level": "error" }, "no-unused-params": { "level": "error" }, "no-unused-vars": { "level": "error" }, "outputs-should-not-contain-secrets": { "level": "error" }, "prefer-interpolation": { "level": "error" }, "secure-parameter-default": { "level": "error" }, "simplify-interpolation": { "level": "error" }, "protect-commandtoexecute-secrets": { "level": "error" }, "use-stable-vm-image": { "level": "error" } } } } }
Uložte soubor.
Ověření a potvrzení definice kanálu
Ověřte, že váš soubor azure-pipelines.yml vypadá jako následující soubor:
trigger: batch: true branches: include: - main pool: vmImage: ubuntu-latest variables: - name: deploymentDefaultLocation value: westus3 stages: - stage: Lint jobs: - job: LintCode displayName: Lint code steps: - script: | az bicep build --file deploy/main.bicep name: LintBicepCode displayName: Run Bicep linter - stage: Validate jobs: - job: ValidateBicepCode displayName: Validate Bicep code steps: - task: AzureResourceManagerTemplateDeployment@3 name: RunPreflightValidation displayName: Run preflight validation inputs: connectedServiceName: $(ServiceConnectionName) location: $(deploymentDefaultLocation) deploymentMode: Validation resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType) - stage: Deploy jobs: - job: Deploy steps: - task: AzureResourceManagerTemplateDeployment@3 name: Deploy displayName: Deploy to Azure inputs: connectedServiceName: $(ServiceConnectionName) deploymentName: $(Build.BuildNumber) location: $(DeploymentDefaultLocation) resourceGroupName: $(ResourceGroupName) csmFile: deploy/main.bicep overrideParameters: > -environmentType $(EnvironmentType)
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 validation stages" git push
Hned po nasdílení změn azure Pipelines spustí nové spuštění kanálu.
Zobrazení spuštění kanálu
V prohlížeči přejděte na Pipelines.
Vyberte poslední spuštění kanálu.
Pokud je kanál stále spuštěný, počkejte, až se dokončí. I když Azure Pipelines stránku automaticky aktualizuje nejnovějším stavem, je vhodné stránku občas aktualizovat.
Všimněte si, že spuštění kanálu teď zobrazuje tři fáze, které jste definovali v souboru YAML. Všimněte si také, že fáze Lint selhala.
Výběrem fáze Lint zobrazíte její podrobnosti.
Výběrem kroku Run Bicep linter zobrazte protokol kanálu.
Všimněte si, že zobrazená chyba je podobná následující:
Chyba no-unused-params: Parametr storageAccountNameParam je deklarován, ale nikdy se nepoužívá.
Tato chyba značí, že linter v souboru Bicep zjistil porušení pravidla.
Oprava chyby linteru
Teď, když jste problém identifikovali, můžete ho opravit v souboru Bicep.
V editoru Visual Studio Code otevřete soubor main.bicep ve složce deploy .
Všimněte si, že linter Bicep také zjistil, že
storageAccountNameParam
se parametr nepoužívá. Visual Studio Code označuje nepoužitý parametr vlnovkou. Za normálních okolností by čára byla žlutá, aby označovala upozornění. Protože jste ale přizpůsobili soubor bicepconfig.json , linter zachází s kódem jako s chybou a zobrazuje řádek červeně.param storageAccountNameParam string = uniqueString(resourceGroup().id)
storageAccountNameParam
Odstraňte parametr.Uložte soubor.
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 "Remove unused parameter" git push
Azure Pipelines znovu automaticky aktivuje nové spuštění vašeho kanálu.
Opětovné zobrazení spuštění kanálu
V prohlížeči přejděte do kanálu.
Vyberte poslední spuštění.
Počkejte na dokončení spuštění kanálu. I když Azure Pipelines stránku automaticky aktualizuje nejnovějším stavem, je vhodné stránku občas aktualizovat.
Všimněte si, že fáze Lint byla úspěšně dokončena, ale teď se fáze Ověření nezdařila.
Výběrem fáze Ověření zobrazíte její podrobnosti.
Výběrem kroku Spustit předběžné ověření zobrazte protokol kanálu.
Všimněte si, že chyba zobrazená v protokolu obsahuje následující zprávu:
mystorageresourceNameSuffix není platný název účtu úložiště. Název účtu úložiště musí mít délku 3 až 24 znaků a musí obsahovat jenom číslice a malá písmena.
Tato chyba značí, že název účtu úložiště není platný.
Oprava chyby ověření
V souboru Bicep jste našli jiný problém. Tady problém vyřešíte.
V editoru Visual Studio Code otevřete soubor main.bicep ve složce deploy .
Podívejte se na definici
storageAccountName
proměnné:var appServiceAppName = 'toy-website-${resourceNameSuffix}' var appServicePlanName = 'toy-website' var applicationInsightsName = 'toywebsite' var logAnalyticsWorkspaceName = 'workspace-${resourceNameSuffix}' var storageAccountName = 'mystorageresourceNameSuffix'
Zdá se, že došlo k překlepu a interpolace řetězců nebyla správně nakonfigurovaná.
Aktualizujte proměnnou
storageAccountName
tak, aby správně používala interpolaci řetězců:var storageAccountName = 'mystorage${resourceNameSuffix}'
Uložte soubor.
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 "Fix string interpolation" git push
Zobrazení úspěšného spuštění kanálu
V prohlížeči přejděte do kanálu.
Vyberte poslední spuštění.
Počkejte na dokončení spuštění kanálu. I když Azure Pipelines stránku automaticky aktualizuje nejnovějším stavem, je vhodné stránku občas aktualizovat.
Všimněte si, že všechny tři fáze kanálu byly úspěšně dokončeny:
Teď máte kanál, který úspěšně rozpozná chyby v kódu Bicep v rané fázi procesu nasazení a pak se nasadí do Azure, pokud nedojde k žádným chybám.