Gyakorlat – Lint hozzáadása és feladatok ellenőrzése a munkafolyamathoz

Befejeződött

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

  1. A Visual Studio Code-ban nyissa meg a workflow.yml fájlt a .github/workflows mappában.

  2. env: A szakaszban módosítsa a AZURE_RESOURCEGROUP_NAME változó értékét a következőreToyWebsiteTest:

    env:
      AZURE_RESOURCEGROUP_NAME: ToyWebsiteTest
      ENVIRONMENT_TYPE: Test
    
  3. jobs: A sor alatt, a deploy 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.

  4. 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éseit Validate 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.

  5. runs-on A feladat sora deploy 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.

  6. 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.

  1. Vegyen fel egy új fájlt az üzembe helyezési mappába, és nevezze el bicepconfig.json.

    Képernyőkép a Visual Studio Code Explorerről az üzembe helyezési mappában látható új fájllal.

  2. 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"
            }
          }
        }
      }
    }
    
  3. 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.

  1. Nyissa meg a workflow.yml fájlt.

  2. deploy A feladat Webhely üzembe helyezése tesztlépésében állítsa a tulajdonságot a failOnStdErr 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 }}
    
  3. Mentse a fájlt.

A munkafolyamat-definíció ellenőrzése és véglegesítése

  1. 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.

  2. 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
    
  3. 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.

  4. 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

  1. 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.

  2. Válassza ki a munkafolyamat legutóbbi futtatását.

    A GitHub Actions képernyőképe, amelyen a legújabb munkafolyamatra mutató hivatkozás van kiemelve.

    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.

  3. 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.

    Képernyőkép a GitHub Actionsben futtatott munkafolyamatról a Lint és az Validate feladatok jelentési hibájával.

  4. Válassza ki a lint feladatot a részleteinek megtekintéséhez.

  5. Válassza a Bicep-linter futtatása lépést a munkafolyamat-napló megtekintéséhez.

    A Lint-feladat munkafolyamat-naplójának képernyőképe, kiemelve a Bicep-linter futtatásának lépését.

    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.

  1. A Visual Studio Code-ban nyissa meg a main.bicep fájlt a központi telepítési mappában.

  2. 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)
    
  3. Törölje a paramétert storageAccountNameParam .

  4. Mentse a fájlt.

  5. 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

  1. Nyissa meg a munkafolyamatot a böngészőben.

  2. 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.

  3. Figyelje meg, hogy a lint feladat sikeresen befejeződött, de az érvényesítési feladat továbbra is sikertelen.

    A munkafolyamat futtatásának képernyőképe a Lint-feladat sikeres jelentéskészítési sikerével és a feladatjelentési hiba ellenőrzése funkcióval.

  4. Válassza ki az érvényesítési feladatot a részleteinek megtekintéséhez.

  5. Válassza az Előzetes ellenőrzés futtatása lépést a munkafolyamat-napló megtekintéséhez.

    Az Ellenőrzés feladat munkafolyamat-naplójának képernyőképe, amelyen ki van emelve az előzetes ellenőrzés futtatásának lépése.

    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.

  1. A Visual Studio Code-ban nyissa meg a main.bicep fájlt a központi telepítési mappában.

  2. 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.

  3. Frissítse a változót a storageAccountName sztring interpolációjának helyes használatára:

    var storageAccountName = 'mystorage${resourceNameSuffix}'
    
  4. Mentse a fájlt.

  5. 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

  1. Nyissa meg a munkafolyamatot a böngészőben.

  2. 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.

  3. Figyelje meg, hogy a munkafolyamat mindhárom feladata sikeresen befejeződött:

    Képernyőkép a GitHub Actionsben futó munkafolyamatról, amelyen mindhárom feladat sikeres volt.

    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.