Cvičení – vytvoření dočasných prostředí pro žádosti o přijetí změn

Dokončeno

Někteří členové týmu vám řekli, že si váží toho, že si před odesláním ostatním členům týmu, aby si prošli, získali automatickou zpětnou vazbu k kódu Bicep. Teď jste se rozhodli dát přispěvatelům a recenzentům možnost nasadit a zkontrolovat kód v dočasném prostředí.

V tomto cvičení aktualizujete pracovní postup žádosti o přijetí změn a nasadíte dočasné prostředí při každém otevření žádosti o přijetí změn a znovu ho nasadíte, když se kód odešle do větve žádosti o přijetí změn. Vytvoříte také další pracovní postup, který automaticky odstraní prostředí při zavření žádosti o přijetí změn. Změny otestujete tak, že vytvoříte žádost o přijetí změn pro váš web tak, aby používala image kontejneru Dockeru.

Během tohoto procesu:

  • Aktualizujte pracovní postup žádosti o přijetí změn a nasaďte dočasné prostředí.
  • Vytvořte pracovní postup odstranění žádosti o přijetí změn, který odstraní dočasné prostředí.
  • Vytvořte žádost o přijetí změn a sledujte, jak se vytvoří dočasné prostředí.
  • Schvalte žádost o přijetí změn a sledujte, jak se dočasné prostředí odstraní.

Aktualizace pracovního postupu žádosti o přijetí změn pro nasazení dočasného prostředí

Abyste mohli začít, musíte aktualizovat pracovní postup ověření žádostí o ověření , abyste vytvořili dočasné prostředí.

  1. V terminálu editoru Visual Studio Code si prohlédněte hlavní větev úložiště.

    git checkout main
    
  2. Stáhněte si nejnovější verzi kódu z GitHubu, která zahrnuje změny, které jste sloučili v předchozím cvičení.

    git pull
    
  3. Otevřete soubor .github/workflows/pr-validation.yml v editoru Visual Studio Code.

  4. V horní části souboru pod name nastavení přidejte concurrency nastavení:

    name: pr-validation
    concurrency: ${{ github.event.number }}
    

    Toto nastavení brání spuštění více pracovních postupů pro stejnou žádost o přijetí změn ve stejnou dobu, což může způsobit nepředvídatelné výsledky při nasazování prostředků do Azure.

  5. V horní části souboru v on části, která definuje trigger, definujte permissions oddíl:

    name: pr-validation
    concurrency: ${{ github.event.number }}
    
    on: pull_request
    
    permissions:
      id-token: write
      contents: read
    
  6. permissions Pod oddíl přidejte dvě nové proměnné prostředí:

    name: pr-validation
    concurrency: ${{ github.event.number }}
    
    on: pull_request
    
    permissions:
      id-token: write
      contents: read
    
    env:
      resourceGroupName: pr_${{ github.event.number }}
      resourceGroupLocation: westus3
    

    Proměnná resourceGroupName prostředí určuje název skupiny prostředků, která se má použít pro každé dočasné prostředí. Každá skupina prostředků bude mít název pr_123, kde 123 je jedinečné číslo žádosti o přijetí změn.

    Proměnná resourceGroupLocation prostředí určuje, že vaše dočasné prostředí by se měla nasadit do oblasti Azure USA – západ 3.

  7. Definujte novou úlohu s názvem deploypod úlohou lint :

    jobs:
      lint:
        uses: ./.github/workflows/lint.yml
    
      deploy:
        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 }}
    

    Úloha nejprve zkontroluje veškerý kód na GitHub Runneru a pak se přihlásí k prostředí Azure.

    Tip

    Soubory YAML jsou citlivé na odsazení. Bez ohledu na to, jestli tento kód napíšete nebo vložíte, zkontrolujte správnost odsazení. Později v tomto cvičení uvidíte úplnou definici pracovního postupu YAML, abyste mohli ověřit, že se váš soubor shoduje.

  8. Přidejte krok pro vytvoření skupiny prostředků s názvem definovaným v proměnné prostředí:

    - uses: Azure/cli@v1
      name: Create resource group
      with:
        inlineScript: |
          az group create \
            --name ${{ env.resourceGroupName }} \
            --location ${{ env.resourceGroupLocation }}
    
  9. Po vytvoření skupiny prostředků přidejte krok pro nasazení souboru Bicep do skupiny prostředků:

    - uses: azure/arm-deploy@v1
      id: deploy
      name: Deploy Bicep file
      with:
        failOnStdErr: false
        deploymentName: ${{ github.run_number }}
        resourceGroupName: ${{ env.resourceGroupName }}
        template: ./deploy/main.bicep
        parameters: >
          environmentType=Test
    
  10. Po kroku nasazení přidejte krok pro zobrazení webové adresy dočasného prostředí v protokolu pracovního postupu:

    - name: Show website hostname
      run: |
        echo "Access the website at this address: https://${{ steps.deploy.outputs.appServiceAppHostName }}"
    
  11. Uložte provedené změny.

  12. Ověřte, že váš soubor pr-validation.yml vypadá takto:

    name: pr-validation
    concurrency: ${{ github.event.number }}
    
    on: pull_request
    
    permissions:
      id-token: write
      contents: read
    
    env:
      resourceGroupName: pr_${{ github.event.number }}
      resourceGroupLocation: westus3
    
    jobs:
      lint:
        uses: ./.github/workflows/lint.yml
    
      deploy:
        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/cli@v1
            name: Create resource group
            with:
              inlineScript: |
                az group create \
                  --name ${{ env.resourceGroupName }} \
                  --location ${{ env.resourceGroupLocation }}
          - uses: azure/arm-deploy@v1
            id: deploy
            name: Deploy Bicep file
            with:
              failOnStdErr: false
              deploymentName: ${{ github.run_number }}
              resourceGroupName: ${{ env.resourceGroupName }}
              template: ./deploy/main.bicep
              parameters: >
                environmentType=Test
          - name: Show website hostname
            run: |
              echo "Access the website at this address: https://${{ steps.deploy.outputs.appServiceAppHostName }}"
    

    Pokud tomu tak není, aktualizujte ho tak, aby odpovídal tomuto příkladu, a pak ho uložte.

  13. V terminálu editoru Visual Studio Code potvrďte provedené změny. Do vzdáleného úložiště je ještě nenasdílíte.

    git add .
    git commit -m "Update pull request validation workflow to deploy an ephemeral environment"
    

Přidání pracovního postupu odstranění žádosti o přijetí změn

Vytvořili jste pracovní postup, který automaticky nasadí změny v každé žádosti o přijetí změn do dočasné skupiny prostředků. Teď nakonfigurujete druhý pracovní postup pro odstranění dočasných prostředí, když už nejsou potřeba.

  1. Ve složce .github/workflows vytvořte nový soubor s názvem pr-closed.yml.

    Snímek obrazovky editoru Visual Studio Code, který zobrazuje soubor P R uzavřený dot Y M L ve složce pracovních postupů

  2. V horní části souboru pojmenujte pracovní postup, nakonfigurujte stejný klíč souběžnosti, který jste použili v pracovním postupu ověření žádosti o přijetí změn, nakonfigurujte pracovní postup tak, aby se spustil při každém zavření žádosti o přijetí změn a umožnil pracovnímu postupu získat přístupový token:

    name: pr-closed
    concurrency: ${{ github.event.number }}
    
    on:
      pull_request:
        types: [closed]
    
    permissions:
      id-token: write
      contents: read
    
  3. Pod kódem, který jste právě zadali, definujte proměnnou prostředí pro název skupiny prostředků, která je přidružená k dočasnému prostředí žádosti o přijetí změn:

    env:
      resourceGroupName: pr_${{ github.event.number }}
    

    Název skupiny prostředků je stejný jako název, který jste použili pro pracovní postup ověření žádosti o přijetí změn.

  4. Pod kódem, který jste přidali, definujte novou úlohu s názvem removea nakonfigurujte ji tak, aby se přihlásila k Azure:

    jobs:
      remove:
        runs-on: ubuntu-latest
        steps:
          - 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 }}
    
  5. V rámci remove úlohy definujte krok pro odstranění skupiny prostředků pomocí Azure CLI a potvrďte odstranění pomocí argumentu --yes :

    - uses: Azure/cli@v1
      name: Delete resource group
      with:
        inlineScript: |
          az group delete \
            --name ${{ env.resourceGroupName }} \
            --yes
    
  6. Uložte provedené změny.

  7. Ověřte, že váš soubor pr-closed.yml vypadá takto:

    name: pr-closed
    concurrency: ${{ github.event.number }}
    
    on:
      pull_request:
        types: [closed]
    
    permissions:
      id-token: write
      contents: read
    
    env:
      resourceGroupName: pr_${{ github.event.number }}
    
    jobs:
      remove:
        runs-on: ubuntu-latest
        steps:
          - 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/cli@v1
            name: Delete resource group
            with:
              inlineScript: |
                az group delete \
                  --name ${{ env.resourceGroupName }} \
                  --yes
    

    Pokud tomu tak není, aktualizujte ho tak, aby odpovídal tomuto příkladu, a pak ho uložte.

  8. V terminálu editoru Visual Studio Code potvrďte změny a nasdílejte je do vzdáleného úložiště:

    git add .
    git commit -m 'Add pull request closed workflow'
    git push
    

Aktualizace souboru Bicep

Dále aktualizujte soubor Bicep tak, aby používal image kontejneru Dockeru pro aplikaci vašeho webu.

  1. V terminálu editoru Visual Studio Code vytvořte novou větev pro změny spuštěním následujícího příkazu:

    git checkout -b feature/container-app
    
  2. Otevřete soubor main.bicep ve složce deploy.

  3. Aktualizujte hodnotu appServiceAppLinuxFrameworkVersion proměnné:

    var appServiceAppLinuxFrameworkVersion = 'DOCKER|dockersamples/static-site:latest'
    
  4. Uložte provedené změny.

  5. Potvrďte a nasdílejte změny do úložiště Git spuštěním následujících příkazů v terminálu editoru Visual Studio Code:

    git add .
    git commit -m "Use container image for website"
    git push origin feature/container-app
    

Vytvoření žádosti o přijetí změn

Definovali jste pracovní postupy pro automatické vytváření a správu dočasných prostředí v žádostech o přijetí změn. Teď vytvoříte další žádost o přijetí změn pro změny Bicep.

  1. V prohlížeči vyberte Kód a pak vyberte 3 větve.

    Snímek obrazovky GitHubu se seznamem větví úložiště

  2. V části Větve vedle funkce nebo aplikace typu kontejner vyberte Možnost Nová žádost o přijetí změn.

    Snímek obrazovky GitHubu s odkazem na vytvoření žádosti o přijetí změn pro větev aplikace kontejneru s lomítkem

  3. Vyberte Vytvořit žádost o přijetí změn.

Podívejte se, jak se vytvoří dočasné prostředí.

  1. Na stránce s podrobnostmi žádosti o přijetí změn počkejte, až se zobrazí položky kontroly stavu.

  2. V seznamu vedle úlohy nasazení vyberte Podrobnosti.

    Snímek obrazovky s žádostí o přijetí změn GitHubu, která zobrazuje položky kontroly stavu Je zvýrazněný odkaz Podrobnosti pro úlohu nasazení.

    Počkejte na dokončení nasazení.

  3. Vyberte Zobrazit název hostitele webu.

  4. Vyberte adresu URL v protokolu.

    Snímek obrazovky s protokolem nasazení GitHub Actions Adresa URL webu v kroku Zobrazit název hostitele webu je zvýrazněná.

    Web se načte a zobrazí zprávu Hello Docker! , která indikuje, že web běží z image kontejneru definované ve změně žádosti o přijetí změn.

    Snímek obrazovky domovské stránky webu po dokončení nasazení

  5. Volitelně otevřete Azure Portal a přejděte do dočasné skupiny prostředků prostředí.

    Zkontrolujte nasazené prostředky: účet úložiště, službu App Service a plán služby App Service.

Sloučení žádosti o přijetí změn

Teď, když jste otestovali žádost o přijetí změn, ji můžete sloučit do hlavní větve.

  1. Vyberte Žádosti o přijetí změn a vyberte image kontejneru pro žádost o přijetí změn webu .

    Snímek obrazovky GitHubu se seznamem otevřených žádostí o přijetí změn v úložišti

    Kontroly stavu prošly.

    Snímek obrazovky s žádostí o přijetí změn GitHubu ukazující, že prošly dvě kontroly stavu

  2. Vyberte Sloučit žádost o přijetí změn.

  3. Vyberte Potvrdit sloučení.

Kontrola odstranění skupiny prostředků

  1. V prohlížeči vyberte Akce a pak v levém podokně vyberte pracovní postup pro přijetí změn .

    Vidíte, že pracovní postup byl vyvolán automaticky, protože žádost o přijetí změn byla uzavřena.

    Snímek obrazovky s podoknem GitHub Actions znázorňující, že je spuštěný pracovní postup ukončení P R

  2. Vyberte pracovní postup a zkontrolujte protokol.

    Odstranění skupiny prostředků v Azure může trvat několik minut.

    Důležité

    Nemusíte čekat, až se pracovní postup dokončí. Nezapomeňte ale později otevřít Azure Portal, abyste ověřili, že se skupina prostředků dočasného prostředí úspěšně odstranila, a abyste se vyhnuli nákladům na prostředky Azure.

Vyčištění prostředků

Po dokončení modulu můžete odstranit vytvořené prostředky:

  • Tajné kódy GitHubu

    1. V úložišti GitHub přejděte do části Nastavení>Tajný kód a akce proměnných>.
    2. Vyberte tlačítko Odstranit pro každý tajný klíč úložiště a postupujte podle pokynů.
  • Úložiště GitHub

    1. Přejít na Obecné nastavení>
    2. Posuňte se do dolní části obrazovky, vyberte Odstranit toto úložiště a postupujte podle pokynů.
  • Aplikace Azure federovaných přihlašovacích údajů a instančního objektu registrace.

    1. Na domovské stránce portálu vyhledejte ID Microsoft Entra a vyberte ho ze seznamu služeb.
    2. Přejděte na Spravovat> Registrace aplikací.
    3. Ve vlastněných aplikacích vyberte toy-website-auto-review.
    4. Vyberte Odstranit a postupujte podle pokynů.
    5. Výběrem možnosti Odstraněné aplikace trvale odstraníte registraci aplikace.

    Důležité

    Je možné mít duplicitní názvy registrace aplikací a instančních objektů. Doporučujeme ověřit ID aplikace, abyste měli jistotu, že odstraňujete správný prostředek.