Ćwiczenie — dodaj akcję wdrożenia Bicep do przepływu pracy
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.
Otwórz Eksploratora programu Visual Studio Code.
W katalogu głównym repozytorium utwórz folder wdrożenia .
W folderze deploy utwórz nowy plik o nazwie main.bicep. Upewnij się, że utworzysz plik w folderze wdrażania .
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 }
Zapisz zmiany w pliku.
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.
W programie Visual Studio Code otwórz plik .github/workflows/workflow.yml.
W górnej części pliku między
on:
ajobs:
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.
Zmień nazwę zadania
say-hello
nadeploy
:jobs: deploy: runs-on: ubuntu-latest steps:
Aby usunąć krok
placeholder
z definicji przepływu pracy, usuń dwa ostatnie wiersze pliku.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.
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 }}
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 parametruenvironmentType
w pliku Bicep.Dodaj te zmienne i ich wartości w górnej części pliku przepływu pracy między
permissions:
ajobs
:name: deploy-toy-website on: [workflow_dispatch] permissions: id-token: write contents: read env: AZURE_RESOURCEGROUP_NAME: ToyWebsite ENVIRONMENT: nonprod jobs:
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 }}
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.
W przeglądarce otwórz przepływ pracy, wybierając pozycję Actions>deploy-toy-website.
Wybierz pozycję Uruchom przepływ pracy>Uruchom przepływ pracy.
Na liście przebiegów zostanie wyświetlony nowy przebieg przepływu pracy. Jeśli nie zostanie wyświetlona, odśwież stronę przeglądarki.
Wybierz uruchomiony przepływ pracy, aby wyświetlić szczegóły przebiegu.
Poczekaj na zakończenie przebiegu.
Wybierz zadanie wdrażania .
Wybierz pozycję Uruchom azure/arm-deploy@v1. Spowoduje to wyświetlenie szczegółów zadania.
Wybierz Uruchom azure/arm-deploy@v1 w szczegółach zadania.
Zwróć uwagę, że w tym kroku są używane zmienne środowiskowe dodane do pliku przepływu pracy.
Sprawdź pozostałe dane wyjściowe przepływu pracy.
Przepływ pracy przedstawia pomyślne wdrożenie.
Weryfikowanie wdrożenia
Przejdź do portalu Azure.
W menu po lewej stronie wybierz pozycję Grupy zasobów.
Wybierz ToyWebsite.
W Przeglądwyświetl stan wdrożenia. Widać, że jedno wdrożenie zakończyło się pomyślnie.
Aby wyświetlić szczegóły wdrożenia, wybierz link 1 Powiodło się.
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.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.