Dela via


Distribuera en Hugo-webbplats till Azure Static Web Apps

Den här artikeln visar hur du skapar och distribuerar en Hugo-webbapp till Azure Static Web Apps. Slutresultatet är en ny Azure Static Web App med tillhörande GitHub Actions som ger dig kontroll över hur appen skapas och publiceras.

I den här tutorialen lär du dig följande:

  • Skapa en Hugo-app
  • Konfigurera Azure Static Web Apps
  • Distribuera Hugo-appen till Azure

Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.

Förutsättningar

Skapa en Hugo-app

Skapa en Hugo-app med hjälp av Cli (Hugo Command Line Interface):

  1. Följ installationsguiden för Hugo i operativsystemet.

  2. Öppna en terminal

  3. Kör Hugo CLI för att skapa en ny app.

    hugo new site static-app
    
  4. Gå till den nyligen skapade appen.

    cd static-app
    
  5. Initiera ett Git-repo.

    git init
    
  6. Kontrollera att din gren heter main.

    git branch -M main
    
  7. Lägg sedan till ett tema på webbplatsen genom att installera ett tema som en git-undermodul och sedan ange det i Hugo-konfigurationsfilen.

    git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke
    echo 'theme = "ananke"' >> config.toml
    
  8. Genomför ändringarna.

    git add -A
    git commit -m "initial commit"
    

Skicka ditt program till GitHub

Du behöver en lagringsplats på GitHub för att ansluta till Azure Static Web Apps. Följande steg visar hur du skapar en lagringsplats för din webbplats.

  1. Skapa en tom GitHub-lagringsplats (skapa inte en README) från https://github.com/new med namnet hugo-static-app.

  2. Lägg till GitHub-lagringsplatsen som en fjärranslutning till din lokala lagringsplats. Se till att lägga till ditt GitHub-användarnamn i stället för <YOUR_USER_NAME> platshållaren i följande kommando.

    git remote add origin https://github.com/<YOUR_USER_NAME>/hugo-static-app
    
  3. Skicka ditt lokala repo till GitHub.

    git push --set-upstream origin main
    

Distribuera din webbapp

Följande steg visar hur du skapar en ny statisk webbplatsapp och distribuerar den till en produktionsmiljö.

Skapa programmet

  1. Gå till Azure Portal

  2. Välj Skapa en resurs

  3. Sök efter Statiska webbappar

  4. Välj Statiska webbappar

  5. Välj Skapa

  6. På fliken Grundläggande anger du följande värden.

    Fastighet Värde
    Prenumeration Ditt Azure-prenumerationsnamn.
    resursgrupp my-hugo-group
    Namn hugo-static-app
    Typ av plan Gratis
    Region för Azure Functions API och mellanlagringsmiljöer Välj en region som är närmast dig.
    Källa GitHub (på engelska)
  7. Välj Logga in med GitHub och autentisera med GitHub.

  8. Ange följande GitHub-värden.

    Fastighet Värde
    Organisation Välj önskad GitHub-organisation.
    Lagringsplats Välj hugo-static-app.
    Filial Välj huvud.

    Anmärkning

    Om du inte ser några lagringsplatser kan du behöva auktorisera Azure Static Web Apps på GitHub. Bläddra till din GitHub-lagringsplats och gå till Inställningar Program Auktoriserade OAuth-appar, välj > och välj >. För organisationens lagringsplatser måste du vara ägare till organisationen för att bevilja behörigheterna.

  9. I avsnittet Bygginformation väljer du Hugo i listrutan Build Presets (Skapa förinställningar ) och behåller standardvärdena.

Granska och skapa

  1. Välj Granska + Skapa för att kontrollera att informationen är korrekt.

  2. Välj Skapa för att starta skapandet av apptjänstens statiska webbapp och etablera en GitHub Actions för distribution.

  3. När distributionen är klar väljer du Gå till resurs.

  4. På resursskärmen väljer du URL-länken för att öppna ditt distribuerade program. Du kan behöva vänta en minut eller två tills GitHub Actions har slutförts.

    Distribuerat program

Anpassad Hugo-version

När du genererar en statisk webbapp genereras en arbetsflödesfil som innehåller publiceringskonfigurationsinställningarna för programmet. Du kan ange en specifik Hugo-version i arbetsflödesfilen genom att ange ett värde för HUGO_VERSION i env avsnittet. Följande exempelkonfiguration visar hur du ställer in Hugo på en viss version.

jobs:
  build_and_deploy_job:
    if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
    runs-on: ubuntu-latest
    name: Build and Deploy Job
    steps:
      - uses: actions/checkout@v3
        with:
          submodules: true
      - name: Build And Deploy
        id: builddeploy
        uses: Azure/static-web-apps-deploy@v1
        with:
          azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
          repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for GitHub integrations (i.e. PR comments)
          action: "upload"
          ###### Repository/Build Configurations - These values can be configured to match you app requirements. ######
          # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
          app_location: "/" # App source code path
          api_location: "api" # Api source code path - optional
          output_location: "public" # Built app content directory - optional
          ###### End of Repository/Build Configurations ######
        env:
          HUGO_VERSION: 0.58.0

Alternativ distribution med SWA CLI

Om ditt Hugo-program har beroenden som kräver ytterligare installation, till exempel GoLang-moduler, kan du använda Azure Static Web Apps CLI för distribution direkt. Nedan visas ett exempel på ett GitHub Actions-arbetsflöde som installerar CLI och distribuerar ditt program:

jobs:
   build_and_deploy_job:
      runs-on: ubuntu-latest
      name: Build and Deploy with SWA CLI
      steps:
         - name: Checkout code
            uses: actions/checkout@v3
            with:
               submodules: true

         - name: Install SWA CLI
            run: npm install -g @azure/static-web-apps-cli

         - name: Build Hugo site
            run: |
               # Install Hugo modules
               hugo mod get

               # Minify the supported output formats
               hugo --minify

         - name: Deploy with SWA CLI
            env:
               AZURE_STATIC_WEB_APPS_API_TOKEN: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
            run: |
               swa deploy ./public --api-location ./api --env production

Det här arbetsflödet skapar Hugo-webbplatsen och distribuerar den med hjälp av Azure Static Web Apps CLI. Det förutsätter go.mod att filen finns i rotkatalogen i projektet för att hantera beroenden och modulkonfigurationer.

Använda Git Info-funktionen i ditt Hugo-program

Om ditt Hugo-program använder Git Info-funktionen, använder den standard arbetsflödesfil som skapats för den statiska webbappen checkout GitHub Action för att hämta en shallow version av din Git-lagringsplats, med ett standarddjup på 1. I det här scenariot ser Hugo att alla dina innehållsfiler kommer från en enda incheckning, så de har samma författare, tidsstämpel för senaste ändring och andra .GitInfo variabler.

Uppdatera arbetsflödesfilen för att hämta din fullständiga Git-historik genom att lägga till en ny parameter under actions/checkout steget för att ange fetch-depth till 0 (ingen gräns):

      - uses: actions/checkout@v3
        with:
          submodules: true
          fetch-depth: 0

Om du hämtar hela historiken ökar byggtiden för ditt GitHub Actions-arbetsflöde, men dina .Lastmod variabler och .GitInfo variabler är korrekta och tillgängliga för var och en av dina innehållsfiler.

Rensa resurser

Om du inte kommer att fortsätta att använda det här programmet kan du ta bort Azure Static Web App-resursen genom följande steg:

  1. Öppna Azure-portalen
  2. I det övre sökfältet söker du efter ditt program efter det namn som du angav tidigare
  3. Klicka på appen
  4. Klicka på knappen Ta bort
  5. Klicka på Ja för att bekräfta borttagningsåtgärden

Nästa steg