Nasazení statického webu ve službě Azure Storage pomocí pracovního postupu GitHub Actions

Začněte pracovat s GitHub Actions pomocí pracovního postupu pro nasazení statického webu do účtu úložiště Azure. Jakmile nastavíte pracovní postup GitHub Actions, budete moct web automaticky nasadit do Azure z GitHubu, když provedete změny kódu webu.

Poznámka:

Pokud používáte Azure Static Web Apps, nemusíte ručně nastavovat pracovní postup GitHub Actions. Azure Static Web Apps automaticky vytvoří pracovní postup GitHub Actions za vás.

Požadavky

Předplatné Azure a účet GitHubu.

Poznámka:

Běžně se používá síť pro doručování obsahu (CDN) ke snížení latence pro uživatele po celém světě a ke snížení počtu transakcí do vašeho účtu úložiště. Nasazení statického obsahu do cloudové služby úložiště může snížit potřebu potenciálně nákladné výpočetní instance. Další informace naleznete v tématu Model Hostování statického obsahu.

Generování přihlašovacích údajů pro nasazení

Pomocí příkazu az ad sp create-for-rbac v Azure CLI vytvořte instanční objekt. Spusťte tento příkaz pomocí Azure Cloud Shellu na webu Azure Portal nebo výběrem tlačítka Vyzkoušet .

az ad sp create-for-rbac --name "myML" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
                            --json-auth

--json-auth Parametr je k dispozici ve verzích >Azure CLI = 2.51.0. Verze před tímto použitím --sdk-auth s upozorněním na vyřazení.

V předchozím příkladu nahraďte zástupné symboly ID vašeho předplatného, názvem skupiny prostředků a názvem aplikace. Výstupem je objekt JSON s přihlašovacími údaji pro přiřazení role, které poskytují přístup k vaší aplikaci App Service podobně jako v následujícím příkladu. Zkopírujte tento objekt JSON pro pozdější použití.

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

Konfigurace tajných kódů GitHubu

  1. Na GitHubu přejděte do svého úložiště.

  2. V navigační nabídce přejděte na Nastavení.

  3. Vyberte Akce tajných kódů zabezpečení > a proměnných>.

    Screenshot of adding a secret

  4. Vyberte Nový tajný klíč úložiště.

  5. Celý výstup JSON z příkazu Azure CLI vložte do pole hodnoty tajného kódu. Dejte tajnému názvu AZURE_CREDENTIALS.

  6. Vyberte Add secret (Přidat tajný kód).

Přidání pracovního postupu

  1. Přejděte na Akce pro úložiště GitHub.

    GitHub Actions menu item

  2. Vyberte Nastavit pracovní postup sami.

  3. Odstraňte všechno za oddílem on: souboru pracovního postupu. Váš zbývající pracovní postup může například vypadat takto.

    name: CI
    
    on:
        push:
            branches: [ main ]
    
  4. Přejmenujte pracovní postup Blob storage website CI a přidejte akce rezervace a přihlášení. Tyto akce si prohlédnou kód webu a ověří se v Azure pomocí tajného kódu GitHubu AZURE_CREDENTIALS , který jste vytvořili dříve.

    name: Blob storage website CI
    
    on:
        push:
            branches: [ main ]
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - uses: azure/login@v1
          with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
    
  5. Pomocí akce Azure CLI nahrajte kód do úložiště objektů blob a vyprázdněte koncový bod CDN. Nahraďte az storage blob upload-batchzástupný text názvem vašeho účtu úložiště. Skript se nahraje do kontejneru $web . Nahraďte az cdn endpoint purgezástupné symboly názvem profilu CDN, názvem koncového bodu CDN a skupinou prostředků. Chcete-li urychlit vyprázdnění CDN, můžete přidat --no-wait možnost do az cdn endpoint purge. Pokud chcete zvýšit zabezpečení, můžete také přidat --account-key možnost s klíčem účtu úložiště.

        - name: Upload to blob storage
          uses: azure/CLI@v1
          with:
            inlineScript: |
                az storage blob upload-batch --account-name <STORAGE_ACCOUNT_NAME>  --auth-mode key -d '$web' -s .
        - name: Purge CDN endpoint
          uses: azure/CLI@v1
          with:
            inlineScript: |
               az cdn endpoint purge --content-paths  "/*" --profile-name "CDN_PROFILE_NAME" --name "CDN_ENDPOINT" --resource-group "RESOURCE_GROUP"
    
  6. Dokončete pracovní postup přidáním akce pro odhlášení z Azure. Tady je dokončený pracovní postup. Soubor se zobrazí ve .github/workflows složce úložiště.

    name: Blob storage website CI
    
    on:
        push:
            branches: [ main ]
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
        - uses: azure/login@v1
          with:
              creds: ${{ secrets.AZURE_CREDENTIALS }}
    
        - name: Upload to blob storage
          uses: azure/CLI@v1
          with:
            inlineScript: |
                az storage blob upload-batch --account-name <STORAGE_ACCOUNT_NAME> --auth-mode key -d '$web' -s .
        - name: Purge CDN endpoint
          uses: azure/CLI@v1
          with:
            inlineScript: |
               az cdn endpoint purge --content-paths  "/*" --profile-name "CDN_PROFILE_NAME" --name "CDN_ENDPOINT" --resource-group "RESOURCE_GROUP"
    
      # Azure logout
        - name: logout
          run: |
                az logout
          if: always()
    

Kontrola nasazení

  1. Přejděte na Akce pro úložiště GitHub.

  2. Otevřete první výsledek a prohlédněte si podrobné protokoly spuštění pracovního postupu.

    Log of GitHub Actions run

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

Pokud už statický web a úložiště GitHub nepotřebujete, vyčistěte prostředky, které jste nasadili, odstraněním skupiny prostředků a úložiště GitHub.

Další kroky