Gyakorlat – Bicep-üzembehelyezési művelet hozzáadása a munkafolyamathoz

Befejeződött

Létrehozott egy alapszintű munkafolyamatot, és konfigurálta az Azure- és GitHub-környezeteket a csatlakozáshoz. Most már készen áll arra, hogy üzembe helyezze a webhely Bicep-fájlját az Azure-ban a munkafolyamatból.

Ebben a gyakorlatban a következőket fogja végrehajtani:

  • Adjon hozzá egy Bicep-fájlt az adattárhoz.
  • Adjon hozzá egy munkafolyamat-lépést az adattár forráskódjának a futó fájlrendszerbe való letöltéséhez.
  • Munkafolyamat-lépés hozzáadása az Azure-ba való bejelentkezéshez.
  • Adjon hozzá egy munkafolyamat-lépést a Bicep-fájl üzembe helyezéséhez.
  • Futtassa újra a munkafolyamatot, és ellenőrizze, hogy sikeresen üzembe helyezte-e a webhelyet.

A webhely Bicep-fájljának hozzáadása a GitHub-adattárhoz

Már elkészítette a webhely Bicep-fájlját, amellyel a környezettől és a konfigurációtól függően különböző konfigurációkat helyezhet üzembe a webhely erőforrásaiban. Itt hozzáadja a Bicep-fájlt az adattárhoz.

  1. Nyissa meg a Visual Studio Code Explorert.

  2. Az adattár gyökerénél hozzon létre egy üzembe helyezési mappát.

  3. A központi telepítési mappában hozzon létre egy main.bicep nevű új fájlt. Győződjön meg arról, hogy a fájlt a központi telepítési mappában hozza létre:

    Screenshot of the Visual Studio Code Explorer, with the main dot bicep file highlighted and located in the deploy folder.

  4. Másolja a következő kódot a main.bicep fájlba:

    @description('The Azure region into which the resources should be deployed.')
    param location string = resourceGroup().location
    
    @description('The type of environment. This must be nonprod or prod.')
    @allowed([
      'nonprod'
      'prod'
    ])
    param environmentType string
    
    @description('A unique suffix to add to resource names that need to be globally unique.')
    @maxLength(13)
    param resourceNameSuffix string = uniqueString(resourceGroup().id)
    
    var appServiceAppName = 'toy-website-${resourceNameSuffix}'
    var appServicePlanName = 'toy-website-plan'
    var toyManualsStorageAccountName = 'toyweb${resourceNameSuffix}'
    
    // Define the SKUs for each component based on the environment type.
    var environmentConfigurationMap = {
      nonprod: {
        appServicePlan: {
          sku: {
            name: 'F1'
            capacity: 1
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_LRS'
          }
        }
      }
      prod: {
        appServicePlan: {
          sku: {
            name: 'S1'
            capacity: 2
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_ZRS'
          }
        }
      }
    }
    
    var toyManualsStorageAccountConnectionString = 'DefaultEndpointsProtocol=https;AccountName=${toyManualsStorageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${toyManualsStorageAccount.listKeys().keys[0].value}'
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      sku: environmentConfigurationMap[environmentType].appServicePlan.sku
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
    resource toyManualsStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
      name: toyManualsStorageAccountName
      location: location
      kind: 'StorageV2'
      sku: environmentConfigurationMap[environmentType].toyManualsStorageAccount.sku
    }
    
  5. Mentse a fájl módosításait.

  6. A Visual Studio Code terminálban futtassa ezt a kódot a módosítások szakaszához, a módosítások véglegesítéséhez és a módosítások leküldéséhez az adattárba:

    git add deploy/main.bicep
    git commit -m 'Add Bicep file'
    git push
    

A munkafolyamat lépéseinek cseréje

Ezután frissítse a munkafolyamat-definíciót a Bicep-fájl Azure-ban való üzembe helyezéséhez.

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

  2. A fájl tetején adjon on:jobs:hozzá egy szakaszt permissions: .

    name: deploy-toy-website
    
    on: [workflow_dispatch]
    
    permissions:
      id-token: write
      contents: read
    
    jobs:
    

    Ez a módosítás lehetővé teszi, hogy a munkafolyamat számítási feladatok identitását használja.

  3. Nevezze át a feladatot a say-hello következőre deploy:

    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
    
  4. Ha el szeretné távolítani a lépést a placeholder munkafolyamat-definícióból, törölje a fájl alsó két sorát.

  5. Első lépésként hozzáad egy feladatot, amely ellenőrzi a kódot a futó fájlrendszerében. Adjon hozzá egy új lépést a fájl alján:

    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
    

    Feljegyzés

    Érdemes ezt a kódot begépelni ahelyett, hogy ebből a modulból másolja és illeszti be. Ügyeljen a fájl behúzására. Ha a behúzás nem megfelelő, a YAML-fájl érvénytelen lesz. A Visual Studio Code hullámos vonalak megjelenítésével jelzi a hibákat.

  6. Az imént hozzáadott lépés alatt adjon hozzá egy feladatot, amellyel bejelentkezhet az Azure-környezetbe. Ez a feladat a korábban definiált titkos kulcsokat használja a számítási feladatok identitásának használatával történő bejelentkezéshez:

    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - uses: azure/login@v1
          with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
  7. Az imént hozzáadott lépés alatt adjon hozzá egy újabb lépést a Bicep-telepítés végrehajtásához:

    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - uses: azure/login@v1
          with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
        - uses: azure/arm-deploy@v1
          with:
            deploymentName: ${{ github.run_number }}
            resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
            template: ./deploy/main.bicep
            parameters: environmentType=${{ env.ENVIRONMENT }}
    

    Figyelje meg, hogy ez a feladat az github.run_number alapértelmezett környezeti változót használja az Üzembe helyezés elnevezéséhez az Azure-ban. Környezeti változókat is használ az erőforráscsoport nevére és a environmentType Bicep-fájlban lévő paraméterre.

  8. Adja hozzá ezeket a változókat és értékeiket a munkafolyamat-fájl tetején, a következők közöttpermissions::jobs

    name: deploy-toy-website
    
    on: [workflow_dispatch]
    
    permissions:
      id-token: write
      contents: read
    
    env:
        AZURE_RESOURCEGROUP_NAME: ToyWebsite
        ENVIRONMENT: nonprod
    
    jobs:
    
  9. Mentse a fájl módosításait. A fájlnak ehhez a példához kell hasonlítania:

    name: deploy-toy-website
    
    on: [workflow_dispatch]
    
    permissions:
      id-token: write
      contents: read
    
    env:
        AZURE_RESOURCEGROUP_NAME: ToyWebsite
        ENVIRONMENT: nonprod
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - uses: azure/login@v1
          with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
        - uses: azure/arm-deploy@v1
          with:
            deploymentName: ${{ github.run_number }}
            resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
            template: ./deploy/main.bicep
            parameters: environmentType=${{ env.ENVIRONMENT }}
    
  10. A Visual Studio Code terminálon szakaszolja a módosításokat, véglegesítse őket az adattárban, és küldje el őket az Azure-adattárakba:

    git add .
    git commit -m 'Add Azure CLI tasks to workflow'
    git push
    

A munkafolyamat futtatása

Most már készen áll a munkafolyamat futtatására!

  1. A böngészőben nyissa meg a munkafolyamatot az Actions deploy-toy-website (Műveletek>üzembe helyezési webhely) lehetőség kiválasztásával.

  2. Válassza a Munkafolyamat>futtatása munkafolyamat futtatása lehetőséget.

  3. A munkafolyamat új futtatása megjelenik a futtatások listájában. Ha nem jelenik meg, frissítse a böngészőlapot.

  4. Válassza ki a futó munkafolyamatot a futtatás részleteinek megtekintéséhez.

    Várja meg, amíg a futtatás befejeződik.

  5. Válassza ki az üzembe helyezési feladatot.

    Screenshot of the GitHub interface showing the run page, with the deploy job highlighted.

  6. Válassza az Azure/arm-deploy@v1 futtatása lehetőséget. Ez megjeleníti a tevékenység részleteit.

  7. Válassza az Azure/arm-deploy@v1 futtatása lehetőséget a feladat részletei között.

    Screenshot of the GitHub interface showing the workflow log, with the 'environment variables' highlighted.

    Figyelje meg, hogy ez a lépés a munkafolyamat-fájlhoz hozzáadott környezeti változókat használja.

  8. Vizsgálja meg a munkafolyamat többi kimenetét.

    A munkafolyamat sikeres üzembe helyezést mutat.

Az üzemelő példány ellenőrzése

  1. Nyissa meg az Azure Portalt.

  2. A bal oldali menüben válassza az Erőforráscsoportok elemet.

  3. Válassza a ToyWebsite lehetőséget.

  4. Az Áttekintésben tekintse meg az üzembe helyezés állapotát. Láthatja, hogy egy üzembe helyezés sikeres volt.

    Screenshot of the Azure portal that shows the resource group with one successful deployment.

  5. Az üzembe helyezés részleteinek megtekintéséhez kattintson az 1 Sikeres hivatkozásra.

    Screenshot of the Azure portal that shows the resource group deployment history, with the deployment highlighted.

    Figyelje meg, hogy az üzembe helyezés neve megegyezik a munkafolyamat Futtatási számával a GitHub Actionsben, mivel a github.run_number környezeti változóval nevezte el az üzembe helyezést.

  6. Az üzembe helyezett erőforrások megtekintéséhez válassza ki az üzembe helyezést. Az üzembe helyezés kibontásához és további részletek megtekintéséhez válassza az Üzembe helyezés részletei lehetőséget. Ebben az esetben van egy tárfiók, egy Azure-alkalmazás Service-csomag és egy alkalmazás.

    Screenshot of the Azure portal that shows the resource group deployment details, with the App Service resources highlighted.