Snabbstart: Skapa ett GitHub-arbetsflöde för att publicera en app

I den här snabbstarten får du lära dig hur du skapar ett GitHub-arbetsflöde för att publicera din .NET-app från källkoden. Att automatiskt publicera .NET-appen från GitHub till ett mål kallas för en kontinuerlig distribution (CD). Det finns många möjliga mål för att publicera ett program. I den här snabbstarten publicerar du till Azure.

Förutsättningar

  • Ett GitHub-konto.
  • En .NET-källkodslagringsplats.
  • Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
  • En ASP.NET Core-webbapp.
  • En Azure App Service-resurs.

Lägg till publiceringsprofil

Om du vill publicera appen till Azure öppnar du Azure-portalen för App Service-instansen av programmet. I resursöversikten väljer du Hämta publiceringsprofil och sparar *. PubliceraEtting-fil lokalt.

Azure Portal, App Service resource: Get publish profile

Varning

Publiceringsprofilen innehåller känslig information, till exempel autentiseringsuppgifter för åtkomst till din Azure App Service-resurs. Den här informationen bör alltid behandlas mycket noggrant.

I GitHub-lagringsplatsen navigerar du till Inställningar och väljer Hemligheter på den vänstra navigeringsmenyn. Välj Ny lagringsplatshemlighet för att lägga till en ny hemlighet.

GitHub / Settings / Secret: Add new repository secret

Ange AZURE_PUBLISH_PROFILE som Namn och klistra in XML-innehållet från publiceringsprofilen i textområdet Värde . Välj Add secret (Lägg till hemlighet). Mer information finns i Krypterade hemligheter.

Skapa en arbetsflödesfil

På GitHub-lagringsplatsen lägger du till en ny YAML-fil i katalogen .github/workflows . Välj ett meningsfullt filnamn, något som tydligt anger vad arbetsflödet är avsett att göra. Mer information finns i Arbetsflödesfil.

Viktigt!

GitHub kräver att arbetsflödets sammansättningsfiler placeras i katalogen .github/workflows .

Arbetsflödesfiler definierar vanligtvis en sammansättning av en eller flera GitHub-åtgärder via jobs.<job_id>/steps[*]. Mer information finns i Arbetsflödessyntax för GitHub Actions.

Skapa en ny fil med namnet publish-app.yml, kopiera och klistra in följande YML-innehåll i den:

name: publish

on:
  push:
    branches: [ production ]

env:
  AZURE_WEBAPP_NAME: DotNetWeb
  AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  publish:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: Install dependencies
      run: dotnet restore
      
    - name: Build
      run: |
        cd DotNet.WebApp
        dotnet build --configuration Release --no-restore
        dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
    - name: Test
      run: |
        cd DotNet.WebApp.Tests
        dotnet test --no-restore --verbosity normal
      
    - uses: azure/webapps-deploy@v2
      name: Deploy
      with:
        app-name: ${{ env.AZURE_WEBAPP_NAME }}
        publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
        package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'

I föregående arbetsflödessammansättning:

  • Definierar name: publish namnet, "publicera" visas i statusmärken för arbetsflödet.

    name: publish
    
  • Noden on anger de händelser som utlöser arbetsflödet:

    on:
      push:
        branches: [ production ]
    
    • Utlöses när en push inträffar på grenen production .
  • Noden env definierar namngivna miljövariabler (env var).

    env:
      AZURE_WEBAPP_NAME: DotNetWeb
      AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
      DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
    
    • Miljövariabeln AZURE_WEBAPP_NAME tilldelas värdet DotNetWeb.
    • Miljövariabeln AZURE_WEBAPP_PACKAGE_PATH tilldelas värdet '.'.
    • Miljövariabeln DOTNET_VERSION tilldelas värdet '6.0.401'. Miljövariabeln refereras senare till för att ange dotnet-versionactions/setup-dotnet@v3 GitHub-åtgärden.
  • Noden jobs skapar de steg som arbetsflödet ska utföra.

    jobs:
      publish:
    
        runs-on: ubuntu-latest
    
        steps:
        - uses: actions/checkout@v3
        - name: Setup .NET Core
          uses: actions/setup-dotnet@v3
          with:
            dotnet-version: ${{ env.DOTNET_VERSION }}
    
        - name: Install dependencies
          run: dotnet restore
          
        - name: Build
          run: |
            cd DotNet.WebApp
            dotnet build --configuration Release --no-restore
            dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
        - name: Test
          run: |
            cd DotNet.WebApp.Tests
            dotnet test --no-restore --verbosity normal
          
        - uses: azure/webapps-deploy@v2
          name: Deploy
          with:
            app-name: ${{ env.AZURE_WEBAPP_NAME }}
            publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
            package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
    
    • Det finns ett enda jobb med namnet publish som körs på den senaste versionen av Ubuntu.
    • actions/setup-dotnet@v3 GitHub-åtgärden används för att konfigurera .NET SDK med den angivna versionen från DOTNET_VERSION miljövariabeln.
    • Kommandot dotnet restore anropas.
    • Kommandot dotnet build anropas.
    • Kommandot dotnet publish anropas.
    • Kommandot dotnet test anropas.
    • azure/webapps-deploy@v2 GitHub-åtgärden distribuerar appen med angivet publish-profile och package.
      • publish-profile Tilldelas från lagringsplatsens AZURE_PUBLISH_PROFILE hemlighet.

Skapa ett statusmärke för arbetsflödet

Det är vanligt att GitHub-lagringsplatser har en README.md fil i roten i lagringsplatsens katalog. På samma sätt är det bra att rapportera den senaste statusen för olika arbetsflöden. Alla arbetsflöden kan generera ett statusmärke som är visuellt tilltalande i README.md-filen . Så här lägger du till statusikonen för arbetsflödet:

  1. Från GitHub-lagringsplatsen väljer du navigeringsalternativet Åtgärder .

  2. Alla arbetsflöden för lagringsplatser visas till vänster, välj önskat arbetsflöde och ellipsknappen (...).

    • Ellipsknappen (...) expanderar menyalternativen för det valda arbetsflödet.
  3. Välj menyalternativet Skapa statusikon .

    GitHub: Create status badge

  4. Välj knappen Kopiera statusikonen Markdown.

    GitHub: Copy status badge Markdown

  5. Klistra in Markdown i filen README.md , spara filen, checka in och push-överföra ändringarna.

Mer information finns i Lägga till ett statusmärke för arbetsflödet.

Exempel på statusmärke för publiceringsarbetsflöde

Passerar Misslyckas Ingen status
GitHub: publish passing badge GitHub: publish failing badge GitHub: publish no-status badge

Se även

Nästa steg