Oefening: een voorbeeldtaak toevoegen aan uw werkstroom

Voltooid

U wilt een extra taak toevoegen aan uw werkstroom, zodat u kunt controleren welke wijzigingen worden aangebracht in uw Azure-omgeving.

Tijdens het proces voert u de volgende taken uit:

  • Werk het YAML-bestand van de werkstroomdefinitie bij om een nieuwe preview-taak toe te voegen.
  • Voeg een omgeving toe aan uw GitHub-opslagplaats.
  • Configureer de omgeving om een beoordeling te vereisen.
  • Werk het YAML-werkstroombestand bij om de omgeving voor de implementatietaak te gebruiken.
  • Bekijk de wat-als-resultaten en keur een werkstroomuitvoering goed.

De werkstroomdefinitie bijwerken om een preview-taak toe te voegen

Hier voegt u een nieuwe taak toe aan uw werkstroom waarmee de wat-als-bewerking wordt uitgevoerd.

  1. Open in Visual Studio Code het bestand workflow.yml in de map .github/workflows .

  2. Voeg tussen de validatie- en implementatietaken de volgende definitie toe voor de preview-taak:

    preview:
      runs-on: ubuntu-latest
      needs: [lint, validate]
      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
        name: Run what-if
        with:
          failOnStdErr: false
          resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
          template: deploy/main.bicep
          parameters: >
            environmentType=${{ env.ENVIRONMENT_TYPE }}
          additionalArguments: --what-if
    

    U ziet dat de preview-taak afhankelijk is van de geslaagde voltooiing van het lint en het valideren van taken.

  3. Werk de implementatietaak bij zodat deze afhankelijk is van de preview-taak :

    deploy:
      runs-on: ubuntu-latest
      needs: preview
      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
        name: Deploy website
        with:
          failOnStdErr: false
          deploymentName: ${{ github.run_number }}
          resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
          template: ./deploy/main.bicep
          parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
    
  4. Sla de wijzigingen in het bestand op.

Een omgeving toevoegen

  1. Ga in uw browser naar Instellingenomgevingen>.

  2. Selecteer Nieuwe omgeving.

    Schermopname van de GitHub-interface waarop de pagina Omgevingen wordt weergegeven, met de knop voor het maken van een omgeving gemarkeerd.

  3. Voer website in als de omgevingsnaam.

  4. Selecteer Omgeving configureren.

    Schermopname van de GitHub-pagina voor een nieuwe omgeving, met de details voltooid en de knop Omgeving configureren gemarkeerd.

In de installatiestappen voor deze module hebt u al een federatieve referentie gemaakt voor uw werkstroom die moet worden gebruikt wanneer deze in de omgeving wordt geïmplementeerd.

Vereiste revisorbeveiligingsregel toevoegen aan de omgeving

  1. Selecteer het vak Vereiste revisoren .

  2. Voeg uw eigen GitHub-gebruikersnaam toe aan de lijst met revisoren.

    Schermopname van de GitHub-interface waarin de websiteomgeving wordt weergegeven, met het selectievakje vereiste revisoren en het tekstvak gemarkeerd.

  3. Selecteer Beveiligingsregels opslaan.

  4. Selecteer Omgevingen om de configuratie af te sluiten.

Werkstroomdefinitie bij om een omgeving en revisor te vereisen

Hier configureert u de implementatietaak die moet worden uitgevoerd op basis van de websiteomgeving die u eerder hebt gemaakt.

  1. Open het bestand workflow.yml in Visual Studio Code.

  2. Voeg de environment parameter toe aan de implementatietaak . Stel de waarde in op Website, zodat deze overeenkomt met de naam van de omgeving die u hebt gemaakt:

    deploy:
      runs-on: ubuntu-latest
      environment: Website
      needs: preview
      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
        name: Deploy website
        with:
          failOnStdErr: false
          deploymentName: ${{ github.run_number }}
          resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
          template: ./deploy/main.bicep
          parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
    
  3. Sla het bestand op.

Uw werkstroomdefinitie controleren en doorvoeren

  1. Controleer of uw workflow.yml-bestand eruitziet als de volgende code:

    name: deploy-toy-website-test
    concurrency: toy-company
    
    on:
      push:
        branches:
          - main
    
    permissions:
      id-token: write
      contents: read
    
    env:
      AZURE_RESOURCEGROUP_NAME: ToyWebsiteTest
      ENVIRONMENT_TYPE: Test
    
    jobs:
      lint:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - name: Run Bicep linter
          run: az bicep build --file deploy/main.bicep
    
      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 }}
        - uses: azure/arm-deploy@v1
          name: Run preflight validation
          with:
            deploymentName: ${{ github.run_number }}
            resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
            template: ./deploy/main.bicep
            parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
            deploymentMode: Validate
    
      preview:
        runs-on: ubuntu-latest
        needs: [lint, validate]
        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
          name: Run what-if
          with:
            failOnStdErr: false
            resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
            template: deploy/main.bicep
            parameters: >
              environmentType=${{ env.ENVIRONMENT_TYPE }}
            additionalArguments: --what-if
    
      deploy:
        runs-on: ubuntu-latest
        environment: Website
        needs: preview
        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
          name: Deploy website
          with:
            failOnStdErr: false
            deploymentName: ${{ github.run_number }}
            resourceGroupName: ${{ env.AZURE_RESOURCEGROUP_NAME }}
            template: ./deploy/main.bicep
            parameters: environmentType=${{ env.ENVIRONMENT_TYPE }}
    

    Als uw bestand er anders uitziet, werkt u het bij zodat het overeenkomt met dit voorbeeld en slaat u het op.

  2. Voer uw wijzigingen door en push deze naar uw Git-opslagplaats door de volgende opdrachten uit te voeren in de Visual Studio Code-terminal:

    git add .
    git commit -m "Add preview job"
    git push
    

Voer de werkstroom uit en controleer de wat-als-uitvoer

  1. Ga in uw browser naar de werkstroomuitvoeringen.

  2. Selecteer de meest recente uitvoering van uw werkstroom.

    Wacht totdat de werkstroom de lint-, validatie- en preview-taken heeft voltooid. Hoewel GitHub de pagina automatisch bijwerken met de meest recente status, is het een goed idee om uw pagina af en toe te vernieuwen.

  3. U ziet dat de werkstroom u vraagt om een beoordeling. Afhankelijk van hoe u uw GitHub-account instelt, ontvangt u een e-mail- of webmelding met een aanvraag om de werkstroom te controleren.

    Schermopname van de GitHub-interface waarin de werkstroomuitvoering wordt weergegeven, met de beoordelingsvereiste gemarkeerd.

    Voordat u de voortzetting van de werkstroom goedkeurt, bekijkt u de wat-als-resultaten om ervoor te zorgen dat deze voldoen aan uw verwachtingen.

  4. Selecteer de preview-taak .

  5. Selecteer de wat-als-stap uitvoeren om de wijzigingen te controleren waarop de wat-als-opdracht rapporteert.

  6. U ziet dat het werkstroomlogboek wat-als-resultaten bevat die vergelijkbaar zijn met de volgende code:

    Resource and property changes are indicated with these symbols:
      - Delete
      + Create
      ~ Modify
      = Nochange
      * Ignore
    
    The deployment will update the following scope:
    
    Scope: /subscriptions/***/resourceGroups/ToyWebsiteTest
    
      ~ Microsoft.OperationalInsights/workspaces/workspace-abcdefghijklm [2022-10-01]
        - properties.retentionInDays: 30
        - properties.sku:
    
            name: "pergb2018"
    
        - properties.workspaceCapping:
    
            dailyQuotaGb: -1.0
    
      ~ Microsoft.Web/sites/toy-website-abcdefghijklm [2022-03-01]
        + properties.siteConfig.localMySqlEnabled:   false
        + properties.siteConfig.netFrameworkVersion: "v4.6"
    
      = Microsoft.Insights/components/toywebsite [2020-02-02]
      = Microsoft.Storage/storageAccounts/mystorageabcdefghijklm [2022-09-01]
      = Microsoft.Web/serverfarms/toy-website [2022-03-01]
      * microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite
    
    Resource changes: 2 to modify, 3 no change, 1 to ignore.
    

    De wat-als-bewerking heeft een wijziging gedetecteerd in de Log Analytics-werkruimte en -websitebronnen. De gedetecteerde wijzigingen zijn echter ruis. Ze vertegenwoordigen geen echte wijzigingen in uw resource. Na verloop van tijd werkt het Azure-team om ruis te verminderen. Ondertussen kunt u de gedetecteerde wijzigingen negeren.

    Mogelijk ziet u ook een item in de wat-als-uitvoer voor het resourcetype microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite. Dit is een resource die automatisch door Application Insights wordt gemaakt. Met de wat-als-opdracht wordt gedetecteerd dat er geen wijzigingen in de resource worden aangebracht.

De werkstroomuitvoering goedkeuren

  1. Selecteer het overzicht om terug te keren naar het overzicht voor de uitvoering van de werkstroom.

    Schermopname van de GitHub-interface met het menu Samenvatting, met de pijl-terug gemarkeerd.

  2. Selecteer de knop Implementaties controleren in het beoordelingsvenster .

  3. Selecteer in het pop-upvenster Controleren in behandeling zijnde implementaties de websiteomgeving . Voer in het vak Een opmerking achterlaten de wat-als-resultaten gecontroleerd in.

  4. Selecteer Goedkeuren en implementeren.

    Schermopname van de GitHub-interface waarop de goedkeuringspagina van de werkstroom wordt weergegeven, met de knop Goedkeuren gemarkeerd.

De geslaagde implementatie observeren

  1. Nadat u de werkstroomuitvoering hebt goedgekeurd, ziet u dat de implementatietaak wordt uitgevoerd.

    Wacht tot de taak is voltooid.

  2. U ziet dat de uitvoering van de werkstroom is voltooid.