Ćwiczenie — dodaj akcję wdrożenia Bicep do przepływu pracy

Ukończone

Utworzono podstawowy przepływ pracy i skonfigurowano środowiska platformy Azure i usługi GitHub w celu nawiązania połączenia. Teraz możesz wdrożyć plik Bicep witryny internetowej na platformie Azure z poziomu przepływu pracy.

W tym ćwiczeniu wykonasz następujące czynności:

  • Dodaj plik Bicep do repozytorium.
  • Dodaj krok w przepływie pracy, aby pobrać kod źródłowy repozytorium do systemu plików runnera.
  • Dodaj krok przepływu pracy, aby zalogować się na platformie Azure.
  • Dodaj krok przepływu pracy, aby wdrożyć plik Bicep.
  • Uruchom ponownie przepływ pracy i sprawdź, czy pomyślnie wdrożono witrynę internetową.

Dodaj plik Bicep swojej witryny do repozytorium GitHub

Masz już przygotowany plik Bicep witryny internetowej, którego można użyć do wdrożenia różnych konfiguracji zasobów witryny internetowej w zależności od środowiska i konfiguracji. Tutaj dodasz swój plik Bicep do repozytorium.

  1. Otwórz Eksploratora programu Visual Studio Code.

  2. W katalogu głównym repozytorium utwórz folder wdrożenia .

  3. W folderze deploy utwórz nowy plik o nazwie main.bicep. Upewnij się, że utworzysz plik w folderze wdrażania .

    Zrzut ekranu eksploratora programu Visual Studio Code z wyróżnionym głównym plikiem kropki bicep i znajdującym się w folderze deploy.

  4. Skopiuj następujący kod do pliku main.bicep:

    @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@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: environmentConfigurationMap[environmentType].appServicePlan.sku
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
    resource toyManualsStorageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
      name: toyManualsStorageAccountName
      location: location
      kind: 'StorageV2'
      sku: environmentConfigurationMap[environmentType].toyManualsStorageAccount.sku
    }
    
  5. Zapisz zmiany w pliku.

  6. W terminalu programu Visual Studio Code uruchom ten kod, aby przygotować zmiany, zatwierdzić zmiany i wypchnąć zmiany do repozytorium:

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

Zastąp kroki przepływu pracy

Następnie zaktualizuj definicję przepływu pracy, aby wdrożyć plik Bicep na platformie Azure.

  1. W programie Visual Studio Code otwórz plik .github/workflows/workflow.yml.

  2. W górnej części pliku między on: a jobs:dodaj sekcję permissions:.

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

    Ta zmiana umożliwia przepływowi pracy używanie tożsamości obciążenia.

  3. Zmień nazwę zadania say-hello na deploy:

    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
    
  4. Aby usunąć krok placeholder z definicji przepływu pracy, usuń dwa ostatnie wiersze pliku.

  5. W pierwszym kroku dodasz zadanie w celu wyewidencjonowania kodu w systemie plików modułu uruchamiającego. Dodaj nowy krok w dolnej części pliku:

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

    Notatka

    Dobrym pomysłem jest samodzielne wpisanie tego kodu zamiast kopiowania i wklejania go z tego modułu. Zwróć uwagę na wcięcie w pliku. Jeśli wcięcie nie jest poprawne, plik YAML nie będzie prawidłowy. Program Visual Studio Code wskazuje błędy, wyświetlając faliste linie.

  6. Poniżej właśnie dodanego kroku dodaj zadanie, aby zalogować się do środowiska platformy Azure. To zadanie używa wpisów tajnych zdefiniowanych wcześniej do logowania przy użyciu tożsamości obciążenia:

    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. Poniżej kroku, który właśnie dodałeś, dodaj kolejny krok, aby przeprowadzić wdrożenie Bicep:

    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 }}
    

    Zwróć uwagę, że to zadanie używa domyślnej zmiennej środowiskowej github.run_number, aby nazwać wdrożenie na platformie Azure. Używa również zmiennych środowiskowych dla nazwy grupy zasobów i parametru environmentType w pliku Bicep.

  8. Dodaj te zmienne i ich wartości w górnej części pliku przepływu pracy między permissions: a jobs:

    name: deploy-toy-website
    
    on: [workflow_dispatch]
    
    permissions:
      id-token: write
      contents: read
    
    env:
        AZURE_RESOURCEGROUP_NAME: ToyWebsite
        ENVIRONMENT: nonprod
    
    jobs:
    
  9. Zapisz zmiany w pliku. Plik powinien wyglądać następująco:

    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. W terminalu programu Visual Studio Code przygotuj zmiany, zatwierdź je w repozytorium i wypchnij je do usługi Azure Repos:

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

Uruchamianie przepływu pracy

Teraz możesz uruchomić przepływ pracy.

  1. W przeglądarce otwórz przepływ pracy, wybierając pozycję Actions>deploy-toy-website.

  2. Wybierz pozycję Uruchom przepływ pracy>Uruchom przepływ pracy.

  3. Na liście przebiegów zostanie wyświetlony nowy przebieg przepływu pracy. Jeśli nie zostanie wyświetlona, odśwież stronę przeglądarki.

  4. Wybierz uruchomiony przepływ pracy, aby wyświetlić szczegóły przebiegu.

    Poczekaj na zakończenie przebiegu.

  5. Wybierz zadanie wdrażania .

    Zrzut ekranu interfejsu usługi GitHub przedstawiający stronę uruchamiania z wyróżnionym zadaniem wdrażania.

  6. Wybierz pozycję Uruchom azure/arm-deploy@v1. Spowoduje to wyświetlenie szczegółów zadania.

  7. Wybierz Uruchom azure/arm-deploy@v1 w szczegółach zadania.

    Zrzut ekranu interfejsu usługi GitHub przedstawiający dziennik przepływu pracy z wyróżnioną pozycją

    Zwróć uwagę, że w tym kroku są używane zmienne środowiskowe dodane do pliku przepływu pracy.

  8. Sprawdź pozostałe dane wyjściowe przepływu pracy.

    Przepływ pracy przedstawia pomyślne wdrożenie.

Weryfikowanie wdrożenia

  1. Przejdź do portalu Azure.

  2. W menu po lewej stronie wybierz pozycję Grupy zasobów.

  3. Wybierz ToyWebsite.

  4. W Przeglądwyświetl stan wdrożenia. Widać, że jedno wdrożenie zakończyło się pomyślnie.

    Zrzut ekranu witryny Azure Portal przedstawiający grupę zasobów z jednym pomyślnym wdrożeniem.

  5. Aby wyświetlić szczegóły wdrożenia, wybierz link 1 Powiodło się.

    Zrzut ekranu portalu Azure przedstawiający historię wdrażania grupy zasobów, z wyraźnie wyróżnionym wdrożeniem.

    Zwróć uwagę, że nazwa wdrożenia jest zgodna z numerem uruchomienia przepływu pracy w funkcji GitHub Actions, ponieważ użyto zmiennej środowiskowej github.run_number w celu nadania nazwy wdrożenia.

  6. Aby sprawdzić, które zasoby zostały wdrożone, wybierz wdrożenie. Aby rozwinąć wdrożenie i wyświetlić więcej szczegółów, wybierz pozycję Szczegóły wdrożenia. W takim przypadku istnieje konto magazynu, plan usługi Azure App Service i aplikacja.

    Zrzut ekranu portalu Azure przedstawiający szczegóły wdrożenia grupy zasobów z wyróżnionymi zasobami usługi App Service.