Ćwiczenie — dodawanie akcji 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 przepływu pracy, aby pobrać kod źródłowy repozytorium do systemu plików modułu uruchamiającego.
- 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ą.
Dodawanie pliku Bicep witryny internetowej 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. W tym miejscu dodasz plik Bicep do repozytorium.
Otwórz Eksploratora programu Visual Studio Code.
W katalogu głównym repozytorium utwórz folder deploy .
W folderze deploy utwórz nowy plik o nazwie main.bicep. Upewnij się, że plik został utworzony w folderze deploy :
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ępowanie kroków 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 dodaj sekcję
permissions:
międzyon:
ijobs:
.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 na
say-hello
deploy
:jobs: deploy: runs-on: ubuntu-latest steps:
Aby usunąć
placeholder
krok z definicji przepływu pracy, usuń dwa dolne 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
Uwaga
Dobrym pomysłem jest samodzielne wpisanie tego kodu zamiast kopiowania i wklejania go z tego modułu. Zwróć uwagę na wcięcie 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 zwijanie wierszy.
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 właśnie dodanego kroku dodaj kolejny krok, aby wykonać 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:
ijobs
: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ć tak, jak w tym przykładzie:
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ę Akcje>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 pozycję 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 Portal.
W menu po lewej stronie wybierz pozycję Grupy zasobów.
Wybierz pozycję ToyWebsite.
W obszarze Przegląd wyświetl stan wdrożenia. Widać, że jedno wdrożenie zakończyło się pomyślnie.
Wybierz link 1 Powodzenie, aby wyświetlić szczegóły wdrożenia.
Zwróć uwagę, że nazwa wdrożenia jest zgodna z numerem przebiegu przepływu pracy w funkcji GitHub Actions, ponieważ zmienna
github.run_number
środowiskowa została użyta do 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 aplikacja systemu Azure i aplikacja.