Gyakorlat – Lint hozzáadása és feladatok ellenőrzése a munkafolyamathoz
Beszélt a csapatával, és úgy döntött, hogy egy munkafolyamat használatával tovább automatizálja az üzembe helyezéseket. Nagyobb bizalmat szeretne kialakítani az üzembe helyezésben.
Ebben a gyakorlatban érvényesítési feladatokat fog hozzáadni a munkafolyamathoz. Ezután minden üzembe helyezés előtt futtatni fogja a linter és az elővizsgálat ellenőrzését.
A folyamat során a következő feladatokat hajtja végre:
- Frissítse a meglévő munkafolyamatot, hogy két új feladatot adjon hozzá a linthez, és ellenőrizze a Bicep-kódot.
- Futtassa a munkafolyamatot.
- Javítsa ki a munkafolyamat által észlelt problémákat.
Lint- és érvényesítési feladatok hozzáadása a munkafolyamathoz
A Visual Studio Code-ban nyissa meg a workflow.yml fájlt a .github/workflows mappában.
env:
A szakaszban módosítsa aAZURE_RESOURCEGROUP_NAME
változó értékét a következőreToyWebsiteTest
:env: AZURE_RESOURCEGROUP_NAME: ToyWebsiteTest ENVIRONMENT_TYPE: Test
jobs:
A sor alatt, adeploy
feladat fölött adjon hozzá egy új lint feladatot:jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file deploy/main.bicep
Ez a feladat meghatároz egy lépést a kód kivételéhez, és egy olyan lépést, amely a Bicep-fájl lintéséhez futtatja a
az bicep build
parancsot.Tipp.
A YAML-fájlok érzékenyek a behúzásra. Akár beírja, akár beilleszti ezt a kódot, győződjön meg arról, hogy a behúzás helyes. A gyakorlat későbbi részében megjelenik a teljes YAML-munkafolyamat-definíció, így ellenőrizheti, hogy a fájl egyezik-e.
Az imént hozzáadott sorok alatt és az üzembe helyezési feladat felett adjon hozzá egy érvényesítési feladatot:
validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run preflight validation with: deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }} deploymentMode: Validate
Ez a feladat a kód kivételének, az Azure-környezetbe való bejelentkezésnek és a
azure/arm-deploy
művelet üzembe helyezési móddal történő használatának lépéseitValidate
határozza meg.A munkafolyamat-definíció három feladatból áll. Az első lints your Bicep file, a második elvégzi az előzetes ellenőrzést, a harmadik pedig elvégzi az üzembe helyezést az Azure-ban.
runs-on
A feladat soradeploy
alatt adjon hozzá egy utasítástneeds
:deploy: runs-on: ubuntu-latest needs: [lint, validate] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure
Az
needs
utasítás azt jelzi, hogy az üzembe helyezési feladat a linttől függ, és ellenőrzi, hogy a feladatok sikeresen befejeződnek-e, mielőtt futtatható lenne.Azt is megfigyelheti, hogy a feladatok ellenőrzése és üzembe helyezése egyaránt bejelentkezik az Azure-ba, és az összes feladat kiveszi a kódot az adattárból. Ezekre a lépésekre azért van szükség, mert minden feladat egy új GitHub-futót használ.
Mentse a fájlt.
A linter konfigurálása
Alapértelmezés szerint a Bicep-linter figyelmeztetést ad, ha a fájllal kapcsolatos problémát észlel. A GitHub Actions nem kezeli a linter-figyelmeztetéseket olyan problémaként, amely leállíthatja a munkafolyamatot. A viselkedés testreszabásához létre kell hoznia egy bicepconfig.json fájlt, amely újrakonfigurálja a lintert.
Vegyen fel egy új fájlt az üzembe helyezési mappába, és nevezze el bicepconfig.json.
Másolja és illessze be a következő kódot a fájlba:
{ "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" } } } } }
Mentse a fájlt.
Az üzembe helyezési feladat konfigurálása a linterrel való együttműködéshez
Egyéni linterkonfiguráció használatakor a Bicep naplóadatokat ír, amelyeket a GitHub Actions hibaként értelmez. A viselkedés letiltásához úgy konfigurálja a arm-deploy
feladatot, hogy figyelmen kívül hagyja a szabványos hiba (stderr) naplóstreamet.
Nyissa meg a workflow.yml fájlt.
deploy
A feladat Webhely üzembe helyezése tesztlépésében állítsa a tulajdonságot afailOnStdErr
következőrefalse
:deploy: runs-on: ubuntu-latest needs: [lint, validate] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
Mentse a fájlt.
A munkafolyamat-definíció ellenőrzése és véglegesítése
Ellenőrizze, hogy a workflow.yml fájl a következő kódhoz hasonlóan néz-e ki:
name: deploy-toy-website-test concurrency: toy-company on: push: branches: - main permissions: id-token: write contents: read env: AZURE_RESOURCEGROUP_NAME: ToyWebsiteTest ENVIRONMENT_TYPE: Test jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Run Bicep linter run: az bicep build --file deploy/main.bicep validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Run preflight validation with: deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }} deploymentMode: Validate deploy: runs-on: ubuntu-latest needs: [lint, validate] steps: - uses: actions/checkout@v3 - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - uses: azure/arm-deploy@v1 name: Deploy website with: failOnStdErr: false deploymentName: ${{ github.run_number }} resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }} template: ./deploy/main.bicep parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
Ha a fájl másként néz ki, frissítse a példának megfelelően, majd mentse.
Véglegesítse és küldje le a módosításokat a Git-adattárba az alábbi parancsok futtatásával a Visual Studio Code terminálon:
git add . git commit -m "Add lint and validation jobs" git push
Ez a véglegesítés az első alkalommal, amikor leküldte ezt az adattárat, ezért előfordulhat, hogy a rendszer kérni fogja a bejelentkezést.
Windows rendszeren írja be az 1 értéket a webböngészővel történő hitelesítéshez, majd válassza az Enter lehetőséget.
MacOS rendszeren válassza az Engedélyezés lehetőséget.
Megnyílik egy böngészőablak. Előfordulhat, hogy újra be kell jelentkeznie a GitHubra. Válassza az Engedélyezés lehetőséget.
Közvetlenül a leküldés után a GitHub Actions elindít egy új munkafolyamat-futtatást.
A munkafolyamat futtatásának megtekintése
A böngészőben lépjen a Műveletek elemre.
A munkafolyamat Első véglegesítés címkével ellátott első futtatása hibaként jelenik meg. A GitHub automatikusan futtatta a munkafolyamatot az adattár létrehozásakor. Nem sikerült, mert a titkos kódok akkor még nem voltak készen. Ezt a hibát figyelmen kívül hagyhatja.
Válassza ki a munkafolyamat legutóbbi futtatását.
Figyelje meg, hogy a munkafolyamat futtatása most a YAML-fájlban definiált három feladatot jeleníti meg. A lint és az ellenőrzés feladatai párhuzamosan futnak az üzembe helyezési feladat megkezdése előtt.
Ha a munkafolyamat még fut, várjon, amíg befejeződik. Bár a munkafolyamatok automatikusan frissítik a lapot a legújabb állapottal, érdemes időnként frissíteni a lapot.
Figyelje meg, hogy a lint és az ellenőrzés feladat nem sikerült.
Válassza ki a lint feladatot a részleteinek megtekintéséhez.
Válassza a Bicep-linter futtatása lépést a munkafolyamat-napló megtekintéséhez.
A munkafolyamat-naplóban szereplő hiba tartalmaz egy linter hibaüzenetet:
Error no-unused-params: Parameter "storageAccountNameParam" is declared but never used.
Ez a hibaüzenet azt jelzi, hogy a linter szabálysértést talált a Bicep-fájlban.
A linter hiba kijavítása
Most, hogy azonosította a problémát, kijavíthatja a Bicep-fájlban.
A Visual Studio Code-ban nyissa meg a main.bicep fájlt a központi telepítési mappában.
Figyelje meg, hogy a Bicep linter azt is észlelte, hogy a
storageAccountNameParam
paraméter nincs használatban. A Visual Studio Code-ban egy hullámos vonal jelenik meg a paraméter alatt. A vonal általában sárga, hogy figyelmeztetést jelezze. Mivel azonban testre szabta a bicepconfig.json fájlt, a linter hibaként kezeli a kódot, és pirosan jeleníti meg a sort.param storageAccountNameParam string = uniqueString(resourceGroup().id)
Törölje a paramétert
storageAccountNameParam
.Mentse a fájlt.
Véglegesítse és küldje le a módosításokat a Git-adattárba az alábbi parancsok futtatásával a Visual Studio Code terminálon:
git add . git commit -m "Remove unused parameter" git push
A GitHub Actions ismét automatikusan elindítja a munkafolyamat új futtatását.
A munkafolyamat újrafuttatásának megtekintése
Nyissa meg a munkafolyamatot a böngészőben.
Válassza ki a legutóbbi futtatás lehetőséget.
Várja meg, amíg a munkafolyamat lefut. Bár a GitHub Actions automatikusan frissíti a lapot a legújabb állapottal, érdemes időnként frissíteni a lapot.
Figyelje meg, hogy a lint feladat sikeresen befejeződött, de az érvényesítési feladat továbbra is sikertelen.
Válassza ki az érvényesítési feladatot a részleteinek megtekintéséhez.
Válassza az Előzetes ellenőrzés futtatása lépést a munkafolyamat-napló megtekintéséhez.
A munkafolyamat-naplóban megjelenő hiba a következő üzenetet tartalmazza:
mystorageresourceNameSuffix is not a valid storage account name. Storage account name must be between 3 and 24 characters in length and use numbers and lower-case letters only.
Ez a hiba azt jelzi, hogy a tárfiók neve érvénytelen.
Az érvényesítési hiba javítása
Talált egy másik problémát a Bicep-fájlban. Itt kijavíthatja a problémát.
A Visual Studio Code-ban nyissa meg a main.bicep fájlt a központi telepítési mappában.
Tekintse meg a változó definícióját
storageAccountName
:var appServiceAppName = 'toy-website-${resourceNameSuffix}' var appServicePlanName = 'toy-website' var logAnalyticsWorkspaceName = 'workspace-${resourceNameSuffix}' var applicationInsightsName = 'toywebsite' var storageAccountName = 'mystorageresourceNameSuffix'
Úgy tűnik, hogy van egy elírás, és a sztring interpolációja nincs megfelelően konfigurálva.
Frissítse a változót a
storageAccountName
sztring interpolációjának helyes használatára:var storageAccountName = 'mystorage${resourceNameSuffix}'
Mentse a fájlt.
Véglegesítse és küldje le a módosításokat a Git-adattárba az alábbi parancsok futtatásával a Visual Studio Code terminálon:
git add . git commit -m "Fix string interpolation" git push
A sikeres munkafolyamat-futtatás megtekintése
Nyissa meg a munkafolyamatot a böngészőben.
Válassza ki a legutóbbi futtatás lehetőséget.
Várja meg, amíg a munkafolyamat lefut. Bár a GitHub Actions automatikusan frissíti a lapot a legújabb állapottal, érdemes időnként frissíteni a lapot.
Figyelje meg, hogy a munkafolyamat mindhárom feladata sikeresen befejeződött:
Egyes figyelmeztetések a Széljegyzetek panelen jelennek meg. Ezek a figyelmeztetések azért jelennek meg, mert a Bicep tájékoztató üzeneteket ír a munkafolyamat-naplóba. Ezeket a figyelmeztetéseket figyelmen kívül hagyhatja.
Most már van egy munkafolyamata, amely sikeresen észleli a Bicep-kód hibáit az üzembe helyezési folyamat korai szakaszában, majd üzembe helyezi az Azure-ban, ha nincsenek hibák.