Øvelse – Brug Bicep-parametre med flere miljøer

Fuldført

Nu, hvor din arbejdsproces udrulles i begge dine miljøer, er du klar til at integrere med tredjeparts-API'en til produktanmeldelser.

Dit webstedsteam har givet dig de API-nøgler og URL-adresser, som dit websted skal bruge til at få adgang til tjenesten. Der er forskellige værdier for dine test- og produktionsmiljøer at bruge. I dette undermodul skal du opdatere din arbejdsproces for at konfigurere hvert af dine miljøer med de korrekte indstillinger for API'en til produktgennemgang.

Under processen skal du:

  • Opret hemmeligheder til gennemsyns-API-nøgler for hvert af dine miljøer.
  • Opdater arbejdsprocessen med de korrekte input- og hemmelige værdier for hvert miljø.
  • Opdater din Bicep-fil for at overføre de indstillinger, du skal bruge til API'en til produktgennemsyn.
  • Gennemse resultaterne af arbejdsprocessen og ændringerne i dit Azure-miljø.

Tilføj hemmeligheder

Du beslutter dig for at gemme API-nøglerne i GitHub-hemmeligheder for at sikre, at de er beskyttet korrekt.

  1. Gå til Indstillinger>Hemmeligheder og variabler>Handlingeri browseren.

    Skærmbillede af GitHub, der viser menupunktet Hemmeligheder under kategorien Indstillinger.

  2. Vælg knappen Ny lagerhemmelighed.

  3. Angiv REVIEW_API_KEY_TEST som navnet på hemmeligheden, og sandkassesecretkey som værdien.

    Skærmbillede af GitHub, der viser en ny hemmelighed.

  4. Vælg Tilføj hemmelighed.

  5. Gentag processen for at tilføje en anden hemmelighed med navnet REVIEW_API_KEY_PRODUCTION som navnet på hemmeligheden, og productionsecretkey som værdien. Vælg Tilføj hemmelighed.

Opdater den deploy.yml fil for at bruge de nye indstillinger

  1. Åbn filen deploy.yml i Visual Studio Code.

  2. Opdater udløseren for arbejdsprocessen, så den indeholder nye værdier for indstillingerne for inputs og secrets:

    on:
      workflow_call:
        inputs:
          environmentType:
            required: true
            type: string
          resourceGroupName:
            required: true
            type: string
          reviewApiUrl:
            required: true
            type: string
        secrets:
          AZURE_CLIENT_ID:
            required: true
          AZURE_TENANT_ID:
            required: true
          AZURE_SUBSCRIPTION_ID:
            required: true
          reviewApiKey:
            required: true
    

    Bemærk, at du inkluderer API-URL-adresserne som input, fordi de ikke er hemmelige værdier.

  3. Opdater trinnene i validate job, så de indeholder de nye installationsparametre:

    jobs:
      validate:
         runs-on: ubuntu-latest
         steps:
         - uses: actions/checkout@v3
         - uses: azure/login@v1
           name: Sign in to Azure
           with:
            client-id: ${{ secrets.AZURE_CLIENT_ID }}
            tenant-id: ${{ secrets.AZURE_TENANT_ID }}
            subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
         - if: inputs.environmentType != 'Production'
           uses: azure/arm-deploy@v1
           name: Run preflight validation
           with:
             deploymentName: ${{ github.run_number }}
             resourceGroupName: ${{ inputs.resourceGroupName }}
             template: ./deploy/main.bicep
             parameters: >
               environmentType=${{ inputs.environmentType }}
               reviewApiUrl=${{ inputs.reviewApiUrl }}
               reviewApiKey=${{ secrets.reviewApiKey }}
             deploymentMode: Validate
         - if: inputs.environmentType == 'Production'
           uses: azure/arm-deploy@v1
           name: Run what-if
           with:
             failOnStdErr: false
             resourceGroupName: ${{ inputs.resourceGroupName }}
             template: ./deploy/main.bicep
             parameters: >
               environmentType=${{ inputs.environmentType }}
               reviewApiUrl=${{ inputs.reviewApiUrl }}
               reviewApiKey=${{ secrets.reviewApiKey }}
             additionalArguments: --what-if
    
  4. Opdater deploy job, så det indeholder de nye installationsparametre:

    deploy:
      needs: validate
      environment: ${{ inputs.environmentType }}
      runs-on: ubuntu-latest
      outputs:
        appServiceAppHostName: ${{ steps.deploy.outputs.appServiceAppHostName }}
      steps:
      - uses: actions/checkout@v3
      - uses: azure/login@v1
        name: Sign in to Azure
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
      - uses: azure/arm-deploy@v1
        id: deploy
        name: Deploy Bicep file
        with:
          failOnStdErr: false
          deploymentName: ${{ github.run_number }}
          resourceGroupName: ${{ inputs.resourceGroupName }}
          template: ./deploy/main.bicep
          parameters: >
            environmentType=${{ inputs.environmentType }}
            reviewApiUrl=${{ inputs.reviewApiUrl }}
            reviewApiKey=${{ secrets.reviewApiKey }}
    
  5. Gem ændringerne i filen.

Opdater workflow.yml-filen for at angive de nye indstillinger

  1. Åbn filen workflow.yml i Visual Studio Code.

  2. Tilføj de reviewApiUrl input og de reviewApiKey hemmeligheder for hvert miljø:

    name: deploy-toy-website-environments
    concurrency: toy-company
    
    on:
      push:
        branches:
          - main
      workflow_dispatch:
    
    permissions:
      id-token: write
      contents: read
    
    jobs:
    
      # Lint the Bicep file.
      lint:
        uses: ./.github/workflows/lint.yml
    
      # Deploy to the test environment.
      deploy-test:
        uses: ./.github/workflows/deploy.yml
        needs: lint
        with:
          environmentType: Test
          resourceGroupName: ToyWebsiteTest
          reviewApiUrl: https://sandbox.contoso.com/reviews
        secrets:
          AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID_TEST }}
          AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
          AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
          reviewApiKey: ${{ secrets.REVIEW_API_KEY_TEST }}
    
      # Deploy to the production environment.
      deploy-production:
        uses: ./.github/workflows/deploy.yml
        needs: deploy-test
        with:
          environmentType: Production
          resourceGroupName: ToyWebsiteProduction
          reviewApiUrl: https://api.contoso.com/reviews
        secrets:
          AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID_PRODUCTION }}
          AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
          AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
          reviewApiKey: ${{ secrets.REVIEW_API_KEY_PRODUCTION }}
    
  3. Gem ændringerne i filen.

Opdater Bicep-filen

  1. Åbn filen main.bicep.

  2. Under de parametre, der allerede findes i filen, skal du tilføje følgende parametre for den nye korrektur-API:

    @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. Opdater appServiceApp ressourcedefinition for at angive URL-adressen og nøglen til gennemsyns-API'en til programmet, så webstedets kode kan bruge dem:

    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. Gem ændringerne i filen.

  5. Bekræft og send dine ændringer til dit Git-lager ved hjælp af følgende kommandoer:

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

Gennemse udrulningsresultaterne

  1. I din browser skal du gå til dine arbejdsproceskørsler.

  2. Vælg den seneste kørsel.

  3. Vælg den seneste kørsel af arbejdsprocessen.

    Vent på, at arbejdsprocessen afbrydes midlertidigt, før udruller/udruller job. Det kan tage et par minutter, før arbejdsprocessen når dette punkt.

  4. Godkend udrulningen i produktionsmiljøet ved at vælge Gennemse udrulningerog derefter vælge Produktions og vælge Godkend og udrul.

    Vent, indtil arbejdsprocessen er færdig med at køre.

  5. Vælg Code, og vælg derefter miljøet Production.

    Bemærk, at du nu kan se flere udrulninger i miljøets historik.

  6. I din browser skal du gå til Azure Portal.

  7. Gå til ressourcegruppen ToyWebsiteProduction.

  8. Åbn Azure App Service-appen på listen over ressourcer.

    Vælg Konfiguration.

    Skærmbillede af Azure Portal, der viser appen App Service og menupunktet Konfiguration.

  9. Vælg Vis værdier.

    Skærmbillede af Azure Portal, der viser appindstillingerne for App Service og knappen til visning af værdier.

  10. Bemærk, at værdierne for indstillingerne for ReviewApiKey og ReviewApiUrl er angivet til de værdier, du har konfigureret for produktionsmiljøet.

    Skærmbillede af Azure Portal, der viser appindstillingerne for App Service og konfigurationsindstillingerne.

  11. Sammenlign de aktuelle værdier med konfigurationsindstillingerne for App Service-appen i ressourcegruppen ToyWebsiteTest. Bemærk, at værdierne er forskellige.

Ryd op i ressourcerne

Nu, hvor du har fuldført øvelsen, kan du fjerne ressourcerne, så du ikke faktureres for dem.

Kør følgende kommandoer i Visual Studio Code-terminalen:

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

Ressourcegruppen slettes i baggrunden.

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