Ćwiczenie — używanie parametrów Bicep z wieloma środowiskami

Ukończone

Teraz, gdy potok jest wdrażany w obu środowiskach, możesz przystąpić do integracji z interfejsem API innej firmy na potrzeby przeglądów produktów.

Twój zespół witryny internetowej udostępnił Ci klucze interfejsu API i adresy URL, których witryna internetowa powinna używać do uzyskiwania dostępu do usługi. Istnieją różne wartości używane w środowiskach testowych i produkcyjnych. W tej lekcji zaktualizujesz potok, aby skonfigurować poszczególne środowiska przy użyciu poprawnych ustawień interfejsu API przeglądu produktu.

Podczas tego procesu wykonasz następujące czynności:

  • Utwórz grupy zmiennych dla każdego środowiska.
  • Zaktualizuj potok, aby wybrać prawidłową grupę zmiennych dla każdego środowiska zamiast używać parametrów szablonu.
  • Zaktualizuj plik Bicep, aby propagować ustawienia potrzebne dla interfejsu API przeglądu produktu.
  • Zaktualizuj grupę zmiennych i potok, aby ustawić wartości ustawień interfejsu API przeglądu produktu.
  • Przejrzyj wyniki potoku i zmiany w środowisku platformy Azure.

Dodawanie grup zmiennych

Ponieważ dodajesz więcej parametrów, które różnią się między poszczególnymi środowiskami, decydujesz się odejść od dodawania parametrów potoku bezpośrednio do plików YAML potoku. Zamiast tego użyjesz grupy zmiennych, aby zachować wartości dla każdego środowiska razem.

  1. W przeglądarce przejdź do pozycji Biblioteka potoków>.

    Zrzut ekranu usługi Azure DevOps przedstawiający element menu Biblioteka w kategorii Potoki.

  2. Wybierz przycisk + Grupa zmiennych.

    Zrzut ekranu przedstawiający stronę biblioteki usługi Azure DevOps i przycisk dodawania grupy zmiennych.

  3. Wprowadź wartość ToyWebsiteTest jako nazwę grupy zmiennych.

  4. Wybierz przycisk + Dodaj, aby dodać zmienne do grupy zmiennych. Utwórz dwie zmienne z następującymi ustawieniami:

    Nazwa/nazwisko Wartość
    Typ środowiska Test
    ResourceGroupName ToyWebsiteTest

    Zwróć uwagę, że nie definiujesz nazwy połączenia usługi w grupie zmiennych. Nazwy połączeń usługi mają specjalne reguły dotyczące sposobu ich określenia. W tym module użyjesz parametrów szablonu potoku.

    Zrzut ekranu przedstawiający grupę zmiennych testowych i zmienne.

  5. Wybierz pozycję Zapisz.

  6. Wybierz przycisk Wstecz w przeglądarce, aby powrócić do listy grup zmiennych.

  7. Dodaj kolejną grupę zmiennych o nazwie ToyWebsiteProduction. Utwórz dwie zmienne z następującymi ustawieniami:

    Nazwa/nazwisko Wartość
    Typ środowiska Produkcyjne
    ResourceGroupName ToyWebsiteProduction

    Zrzut ekranu przedstawiający grupę zmiennych produkcyjnych i zmienne.

    Zwróć uwagę, że nazwy zmiennych są takie same dla obu środowisk, ale wartości są różne.

  8. Zapisz grupę zmiennych produkcyjnych.

Aktualizowanie szablonu potoku wdrażania w celu używania grupy zmiennych

  1. W programie Visual Studio Code otwórz plik deploy.yml .

  2. W górnej części pliku usuń resourceGroupName parametry i serviceConnectionName . Nie usuwaj environmentType parametrów lub deploymentDefaultLocation .

    parameters:
    - name: environmentType
      type: string
    - name: deploymentDefaultLocation
      type: string
      default: westus3
    
  3. Zaktualizuj zadanie, ValidateBicepCode aby zaimportować grupę zmiennych:

    - ${{ if ne(parameters.environmentType, 'Production') }}:
      - stage: Validate_${{parameters.environmentType}}
        displayName: Validate (${{parameters.environmentType}} Environment)
        jobs:
        - job: ValidateBicepCode
          displayName: Validate Bicep code
          variables:
          - group: ToyWebsite${{parameters.environmentType}}
          steps:
    
  4. Zaktualizuj zadanie, ValidateBicepCode aby automatycznie wywnioskować nazwę połączenia usługi na podstawie wartości parametru environmentType :

    - ${{ if ne(parameters.environmentType, 'Production') }}:
      - stage: Validate_${{parameters.environmentType}}
        displayName: Validate (${{parameters.environmentType}} Environment)
        jobs:
        - job: ValidateBicepCode
          displayName: Validate Bicep code
          variables:
          - group: ToyWebsite${{parameters.environmentType}}
          steps:
            - task: AzureResourceManagerTemplateDeployment@3
              name: RunPreflightValidation
              displayName: Run preflight validation
              inputs:
                connectedServiceName: ToyWebsite${{parameters.environmentType}}
                location: ${{parameters.deploymentDefaultLocation}}
                deploymentMode: Validation
                resourceGroupName: $(ResourceGroupName)
                csmFile: deploy/main.bicep
                overrideParameters: >
                  -environmentType $(EnvironmentType)
    
  5. Zaktualizuj zadanie, ValidateBicepCode aby użyć zaimportowanej grupy zmiennych, aby ustawić nazwę grupy zasobów i argumenty typu środowiska dla zadania wdrożenia:

    - ${{ if ne(parameters.environmentType, 'Production') }}:
      - stage: Validate_${{parameters.environmentType}}
        displayName: Validate (${{parameters.environmentType}} Environment)
        jobs:
        - job: ValidateBicepCode
          displayName: Validate Bicep code
          variables:
          - group: ToyWebsite${{parameters.environmentType}}
          steps:
            - task: AzureResourceManagerTemplateDeployment@3
              name: RunPreflightValidation
              displayName: Run preflight validation
              inputs:
                connectedServiceName: ToyWebsite${{parameters.environmentType}}
                location: ${{parameters.deploymentDefaultLocation}}
                deploymentMode: Validation
                resourceGroupName: $(ResourceGroupName)
                csmFile: deploy/main.bicep
                overrideParameters: >
                  -environmentType $(EnvironmentType)
    
  6. Wprowadź zmiany w zadaniu PreviewAzureChanges :

    - ${{ if eq(parameters.environmentType, 'Production') }}:
      - stage: Preview_${{parameters.environmentType}}
        displayName: Preview (${{parameters.environmentType}} Environment)
        jobs:
        - job: PreviewAzureChanges
          displayName: Preview Azure changes
          variables:
          - group: ToyWebsite${{parameters.environmentType}}
          steps:
            - task: AzureCLI@2
              name: RunWhatIf
              displayName: Run what-if
              inputs:
                azureSubscription: ToyWebsite${{parameters.environmentType}}
                scriptType: 'bash'
                scriptLocation: 'inlineScript'
                inlineScript: |
                  az deployment group what-if \
                    --resource-group $(ResourceGroupName) \
                    --template-file deploy/main.bicep \
                    --parameters environmentType=$(EnvironmentType)
    
  7. Wprowadź te same zmiany w Deploy zadaniu wdrażania:

    - stage: Deploy_${{parameters.environmentType}}
      displayName: Deploy (${{parameters.environmentType}} Environment)
      jobs:
      - deployment: DeployWebsite
        displayName: Deploy website
        variables:
        - group: ToyWebsite${{parameters.environmentType}}
        environment: ${{parameters.environmentType}}
        strategy:
          runOnce:
            deploy:
              steps:
                - checkout: self
    
                - task: AzureResourceManagerTemplateDeployment@3
                  name: DeployBicepFile
                  displayName: Deploy Bicep file
                  inputs:
                    connectedServiceName: ToyWebsite${{parameters.environmentType}}
                    deploymentName: $(Build.BuildNumber)
                    location: ${{parameters.deploymentDefaultLocation}}
                    resourceGroupName: $(ResourceGroupName)
                    csmFile: deploy/main.bicep
                    overrideParameters: >
                      -environmentType $(EnvironmentType)
                    deploymentOutputs: deploymentOutputs
    
  8. Sprawdź, czy plik deploy.yml wygląda teraz następująco:

    parameters:
    - name: environmentType
      type: string
    - name: deploymentDefaultLocation
      type: string
      default: westus3
    
    stages:
    
    - ${{ if ne(parameters.environmentType, 'Production') }}:
      - stage: Validate_${{parameters.environmentType}}
        displayName: Validate (${{parameters.environmentType}} Environment)
        jobs:
        - job: ValidateBicepCode
          displayName: Validate Bicep code
          variables:
          - group: ToyWebsite${{parameters.environmentType}}
          steps:
            - task: AzureResourceManagerTemplateDeployment@3
              name: RunPreflightValidation
              displayName: Run preflight validation
              inputs:
                connectedServiceName: ToyWebsite${{parameters.environmentType}}
                location: ${{parameters.deploymentDefaultLocation}}
                deploymentMode: Validation
                resourceGroupName: $(ResourceGroupName)
                csmFile: deploy/main.bicep
                overrideParameters: >
                  -environmentType $(EnvironmentType)
    
    - ${{ if eq(parameters.environmentType, 'Production') }}:
      - stage: Preview_${{parameters.environmentType}}
        displayName: Preview (${{parameters.environmentType}} Environment)
        jobs:
        - job: PreviewAzureChanges
          displayName: Preview Azure changes
          variables:
          - group: ToyWebsite${{parameters.environmentType}}
          steps:
            - task: AzureCLI@2
              name: RunWhatIf
              displayName: Run what-if
              inputs:
                azureSubscription: ToyWebsite${{parameters.environmentType}}
                scriptType: 'bash'
                scriptLocation: 'inlineScript'
                inlineScript: |
                  az deployment group what-if \
                    --resource-group $(ResourceGroupName) \
                    --template-file deploy/main.bicep \
                    --parameters environmentType=$(EnvironmentType)
    
    - stage: Deploy_${{parameters.environmentType}}
      displayName: Deploy (${{parameters.environmentType}} Environment)
      jobs:
      - deployment: DeployWebsite
        displayName: Deploy website
        variables:
        - group: ToyWebsite${{parameters.environmentType}}
        environment: ${{parameters.environmentType}}
        strategy:
          runOnce:
            deploy:
              steps:
                - checkout: self
    
                - task: AzureResourceManagerTemplateDeployment@3
                  name: DeployBicepFile
                  displayName: Deploy Bicep file
                  inputs:
                    connectedServiceName: ToyWebsite${{parameters.environmentType}}
                    deploymentName: $(Build.BuildNumber)
                    location: ${{parameters.deploymentDefaultLocation}}
                    resourceGroupName: $(ResourceGroupName)
                    csmFile: deploy/main.bicep
                    overrideParameters: >
                      -environmentType $(EnvironmentType)
                    deploymentOutputs: deploymentOutputs
    
                - bash: |
                    echo "##vso[task.setvariable variable=appServiceAppHostName;isOutput=true]$(echo $DEPLOYMENT_OUTPUTS | jq -r '.appServiceAppHostName.value')"
                  name: SaveDeploymentOutputs
                  displayName: Save deployment outputs into variables
                  env:
                    DEPLOYMENT_OUTPUTS: $(deploymentOutputs)
    
    - stage: SmokeTest_${{parameters.environmentType}}
      displayName: Smoke Test (${{parameters.environmentType}} Environment)
      jobs:
      - job: SmokeTest
        displayName: Smoke test
        variables:
          appServiceAppHostName: $[ stageDependencies.Deploy_${{parameters.environmentType}}.DeployWebsite.outputs['DeployWebsite.SaveDeploymentOutputs.appServiceAppHostName'] ]
        steps:
          - task: PowerShell@2
            name: RunSmokeTests
            displayName: Run smoke tests
            inputs:
              targetType: inline
              script: |
                $container = New-PesterContainer `
                  -Path 'deploy/Website.Tests.ps1' `
                  -Data @{ HostName = '$(appServiceAppHostName)' }
                Invoke-Pester `
                  -Container $container `
                  -CI
    
          - task: PublishTestResults@2
            name: PublishTestResults
            displayName: Publish test results
            condition: always()
            inputs:
              testResultsFormat: NUnit
              testResultsFiles: 'testResults.xml'
    
  9. Zapisz zmiany w pliku.

Aktualizowanie definicji potoku w celu uproszczenia listy parametrów

  1. Otwórz plik azure-pipelines.yml.

  2. Zaktualizuj etapy, które używają szablonów, aby usunąć resourceGroupName parametry i serviceConnectionName . Pozostaw tylko environmentType parametr .

    trigger:
      batch: true
      branches:
        include:
        - main
    
    pool:
      vmImage: ubuntu-latest
    
    stages:
    
    # Lint the Bicep file.
    - stage: Lint
      jobs: 
      - template: pipeline-templates/lint.yml
    
    # Deploy to the test environment.
    - template: pipeline-templates/deploy.yml
      parameters:
        environmentType: Test
    
    # Deploy to the production environment.
    - template: pipeline-templates/deploy.yml
      parameters:
        environmentType: Production
    
  3. Zapisz zmiany w pliku.

  4. Zatwierdź zmiany w repozytorium Git bez wypychania ich przy użyciu następujących poleceń:

    git add .
    git commit -m "Use variable groups"
    

Aktualizowanie pliku Bicep

  1. Otwórz plik main.bicep.

  2. Poniżej parametrów, które znajdują się już w pliku, dodaj następujące parametry dla nowego interfejsu API przeglądu:

    @description('The URL to the product review API.')
    param reviewApiUrl string
    
    @secure()
    @description('The API key to use when accessing the product review API.')
    param reviewApiKey string
    
  3. Zaktualizuj definicję appServiceApp zasobu, aby podać adres URL i klucz interfejsu API przeglądu aplikacji, aby kod witryny internetowej mógł ich używać:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
              value: applicationInsights.properties.InstrumentationKey
            }
            {
              name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
              value: applicationInsights.properties.ConnectionString
            }
            {
              name: 'ReviewApiUrl'
              value: reviewApiUrl
            }
            {
              name: 'ReviewApiKey'
              value: reviewApiKey
            }
          ]
        }
      }
    }
    
  4. Zapisz zmiany w pliku.

Aktualizowanie grup zmiennych

  1. W przeglądarce przejdź do pozycji Biblioteka potoków>i otwórz grupy zmiennych ToyWebsiteTest.

  2. Dodaj następujące zmienne:

    Nazwa/nazwisko Wartość
    ReviewApiKey sandboxsecretkey
    ReviewApiUrl https://sandbox.contoso.com/reviews
  3. Wybierz ikonę kłódki obok zmiennej ReviewApiKey . Ten krok informuje usługę Azure Pipelines o bezpiecznym traktowaniu wartości zmiennej.

    Zrzut ekranu przedstawiający grupę zmiennych testowych i przycisk zmiennej tajnej.

  4. Zapisz grupę zmiennych.

    Zrzut ekranu przedstawiający grupę zmiennych testowych ze zaktualizowanymi zmiennymi.

  5. Zaktualizuj grupę zmiennych ToyWebsiteProduction , aby dodać podobny zestaw zmiennych:

    Nazwa/nazwisko Wartość
    ReviewApiKey productionsecretkey
    ReviewApiUrl https://api.contoso.com/reviews

    Pamiętaj, aby wybrać ikonę kłódki obok zmiennej ReviewApiKey .

    Zrzut ekranu przedstawiający grupę zmiennych produkcyjnych ze zaktualizowanymi zmiennymi.

  6. Zapisz grupę zmiennych.

Dodawanie zmiennych interfejsu API przeglądu do grup zmiennych

  1. W programie Visual Studio Code otwórz plik deploy.yml .

  2. W zadaniu ValidateBicepCode dodaj wartości parametrów interfejsu API przeglądu do zadania wdrażania:

    - ${{ if ne(parameters.environmentType, 'Production') }}:
      - stage: Validate_${{parameters.environmentType}}
        displayName: Validate (${{parameters.environmentType}} Environment)
        jobs:
        - job: ValidateBicepCode
          displayName: Validate Bicep code
          variables:
          - group: ToyWebsite${{parameters.environmentType}}
          steps:
            - task: AzureResourceManagerTemplateDeployment@3
              name: RunPreflightValidation
              displayName: Run preflight validation
              inputs:
                connectedServiceName: ToyWebsite${{parameters.environmentType}}
                location: ${{parameters.deploymentDefaultLocation}}
                deploymentMode: Validation
                resourceGroupName: $(ResourceGroupName)
                csmFile: deploy/main.bicep
                overrideParameters: >
                  -environmentType $(EnvironmentType)
                  -reviewApiUrl $(ReviewApiUrl)
                  -reviewApiKey $(ReviewApiKey)
    
  3. Wprowadź tę samą zmianę w PreviewAzureChanges zadaniu:

    - ${{ if eq(parameters.environmentType, 'Production') }}:
      - stage: Preview_${{parameters.environmentType}}
        displayName: Preview (${{parameters.environmentType}} Environment)
        jobs:
        - job: PreviewAzureChanges
          displayName: Preview Azure changes
          variables:
          - group: ToyWebsite${{parameters.environmentType}}
          steps:
            - task: AzureCLI@2
              name: RunWhatIf
              displayName: Run what-if
              inputs:
                azureSubscription: ToyWebsite${{parameters.environmentType}}
                scriptType: 'bash'
                scriptLocation: 'inlineScript'
                inlineScript: |
                  az deployment group what-if \
                    --resource-group $(ResourceGroupName) \
                    --template-file deploy/main.bicep \
                    --parameters environmentType=$(EnvironmentType) \
                                 reviewApiUrl=$(ReviewApiUrl) \
                                 reviewApiKey=$(ReviewApiKey)
    

    Ważne

    Pamiętaj, aby dodać ukośnik odwrotny (\) na końcu wiersza, który ustawia environmentType wartość parametru i w kolejnym wierszu. Znak \ wskazuje, że dalsze wiersze są częścią tego samego polecenia interfejsu wiersza polecenia platformy Azure.

  4. Wprowadź tę samą zmianę w Deploy zadaniu:

    - stage: Deploy_${{parameters.environmentType}}
      displayName: Deploy (${{parameters.environmentType}} Environment)
      jobs:
      - deployment: DeployWebsite
        displayName: Deploy website
        variables:
        - group: ToyWebsite${{parameters.environmentType}}
        environment: ${{parameters.environmentType}}
        strategy:
          runOnce:
            deploy:
              steps:
                - checkout: self
    
                - task: AzureResourceManagerTemplateDeployment@3
                  name: DeployBicepFile
                  displayName: Deploy Bicep file
                  inputs:
                    connectedServiceName: ToyWebsite${{parameters.environmentType}}
                    deploymentName: $(Build.BuildNumber)
                    location: ${{parameters.deploymentDefaultLocation}}
                    resourceGroupName: $(ResourceGroupName)
                    csmFile: deploy/main.bicep
                    overrideParameters: >
                      -environmentType $(EnvironmentType)
                      -reviewApiUrl $(ReviewApiUrl)
                      -reviewApiKey $(ReviewApiKey)
                    deploymentOutputs: deploymentOutputs
    
  5. Sprawdź, czy plik deploy.yml wygląda teraz następująco:

    parameters:
    - name: environmentType
      type: string
    - name: deploymentDefaultLocation
      type: string
      default: westus3
    
    stages:
    
    - ${{ if ne(parameters.environmentType, 'Production') }}:
      - stage: Validate_${{parameters.environmentType}}
        displayName: Validate (${{parameters.environmentType}} Environment)
        jobs:
        - job: ValidateBicepCode
          displayName: Validate Bicep code
          variables:
          - group: ToyWebsite${{parameters.environmentType}}
          steps:
            - task: AzureResourceManagerTemplateDeployment@3
              name: RunPreflightValidation
              displayName: Run preflight validation
              inputs:
                connectedServiceName: ToyWebsite${{parameters.environmentType}}
                location: ${{parameters.deploymentDefaultLocation}}
                deploymentMode: Validation
                resourceGroupName: $(ResourceGroupName)
                csmFile: deploy/main.bicep
                overrideParameters: >
                  -environmentType $(EnvironmentType)
                  -reviewApiUrl $(ReviewApiUrl)
                  -reviewApiKey $(ReviewApiKey)
    
    - ${{ if eq(parameters.environmentType, 'Production') }}:
      - stage: Preview_${{parameters.environmentType}}
        displayName: Preview (${{parameters.environmentType}} Environment)
        jobs:
        - job: PreviewAzureChanges
          displayName: Preview Azure changes
          variables:
          - group: ToyWebsite${{parameters.environmentType}}
          steps:
            - task: AzureCLI@2
              name: RunWhatIf
              displayName: Run what-if
              inputs:
                azureSubscription: ToyWebsite${{parameters.environmentType}}
                scriptType: 'bash'
                scriptLocation: 'inlineScript'
                inlineScript: |
                  az deployment group what-if \
                    --resource-group $(ResourceGroupName) \
                    --template-file deploy/main.bicep \
                    --parameters environmentType=$(EnvironmentType) \
                                 reviewApiUrl=$(ReviewApiUrl) \
                                 reviewApiKey=$(ReviewApiKey)
    
    - stage: Deploy_${{parameters.environmentType}}
      displayName: Deploy (${{parameters.environmentType}} Environment)
      jobs:
      - deployment: DeployWebsite
        displayName: Deploy website
        variables:
        - group: ToyWebsite${{parameters.environmentType}}
        environment: ${{parameters.environmentType}}
        strategy:
          runOnce:
            deploy:
              steps:
                - checkout: self
    
                - task: AzureResourceManagerTemplateDeployment@3
                  name: DeployBicepFile
                  displayName: Deploy Bicep file
                  inputs:
                    connectedServiceName: ToyWebsite${{parameters.environmentType}}
                    deploymentName: $(Build.BuildNumber)
                    location: ${{parameters.deploymentDefaultLocation}}
                    resourceGroupName: $(ResourceGroupName)
                    csmFile: deploy/main.bicep
                    overrideParameters: >
                      -environmentType $(EnvironmentType)
                      -reviewApiUrl $(ReviewApiUrl)
                      -reviewApiKey $(ReviewApiKey)
                    deploymentOutputs: deploymentOutputs
    
                - bash: |
                    echo "##vso[task.setvariable variable=appServiceAppHostName;isOutput=true]$(echo $DEPLOYMENT_OUTPUTS | jq -r '.appServiceAppHostName.value')"
                  name: SaveDeploymentOutputs
                  displayName: Save deployment outputs into variables
                  env:
                    DEPLOYMENT_OUTPUTS: $(deploymentOutputs)
    
    - stage: SmokeTest_${{parameters.environmentType}}
      displayName: Smoke Test (${{parameters.environmentType}} Environment)
      jobs:
      - job: SmokeTest
        displayName: Smoke test
        variables:
          appServiceAppHostName: $[ stageDependencies.Deploy_${{parameters.environmentType}}.DeployWebsite.outputs['DeployWebsite.SaveDeploymentOutputs.appServiceAppHostName'] ]
        steps:
          - task: PowerShell@2
            name: RunSmokeTests
            displayName: Run smoke tests
            inputs:
              targetType: inline
              script: |
                $container = New-PesterContainer `
                  -Path 'deploy/Website.Tests.ps1' `
                  -Data @{ HostName = '$(appServiceAppHostName)' }
                Invoke-Pester `
                  -Container $container `
                  -CI
    
          - task: PublishTestResults@2
            name: PublishTestResults
            displayName: Publish test results
            condition: always()
            inputs:
              testResultsFormat: NUnit
              testResultsFiles: 'testResults.xml'
    
  6. Zatwierdź i wypchnij zmiany do repozytorium Git przy użyciu następujących poleceń:

    git add .
    git commit -m "Add new review API settings to Bicep file and pipeline"
    git push
    

Przeglądanie wyników wdrożenia

  1. W przeglądarce przejdź do pozycji Potoki.

  2. Wybierz najnowszy przebieg potoku.

    Poczekaj na wstrzymanie potoku przed etapem Wdrażanie (środowisko produkcyjne). Osiągnięcie tego punktu przez potok może potrwać kilka minut.

  3. Jeśli zostanie wyświetlony monit o udzielenie uprawnień dostępu do zasobu, wybierz pozycję Wyświetl , a następnie wybierz pozycję Zezwól.

  4. Zatwierdź wdrożenie w środowisku produkcyjnym, wybierając pozycję Przejrzyj>zatwierdź.

    Poczekaj na zakończenie działania potoku.

  5. Wybierz pozycję Środowiska potoków>.

  6. Wybierz środowisko produkcyjne.

    Zauważ, że w historii środowiska jest teraz widocznych wiele wdrożeń.

  7. W przeglądarce przejdź do witryny Azure Portal.

  8. Przejdź do grupy zasobów ToyWebsiteProduction .

  9. Na liście zasobów otwórz aplikację usługi aplikacja systemu Azure Service.

    Wybierz pozycję Konfiguracja.

    Zrzut ekranu witryny Azure Portal przedstawiający aplikację usługi App Service i element menu Konfiguracja.

  10. Wybierz pozycję Pokaż wartości.

    Zrzut ekranu witryny Azure Portal przedstawiający ustawienia aplikacji usługi App Service i przycisk przedstawiający wartości.

  11. Zwróć uwagę, że wartości lokacji produkcyjnej dla ustawień ReviewApiKey i ReviewApiUrl są ustawione na wartości skonfigurowane w grupie zmiennych produkcyjnych.

    Zrzut ekranu witryny Azure Portal przedstawiający ustawienia aplikacji usługi App Service i ustawienia konfiguracji.

  12. Porównaj bieżące wartości z ustawieniami konfiguracji aplikacji usługi App Service w grupie zasobów ToyWebsiteTest . Zwróć uwagę, że wartości są różne.

Oczyszczanie zasobów

Po ukończeniu ćwiczenia możesz usunąć zasoby, aby nie były naliczane opłaty.

W terminalu programu Visual Studio Code uruchom następujące polecenia:

az group delete --resource-group ToyWebsiteTest --yes --no-wait
az group delete --resource-group ToyWebsiteProduction --yes --no-wait

Grupa zasobów jest usuwana w tle.

Remove-AzResourceGroup -Name ToyWebsiteTest -Force
Remove-AzResourceGroup -Name ToyWebsiteProduction -Force