Quickstart: Een GitHub-werkstroom maken om een app te publiceren

In deze quickstart leert u hoe u een GitHub-werkstroom maakt om uw .NET-app te publiceren op basis van broncode. Het automatisch publiceren van uw .NET-app van GitHub naar een bestemming wordt een continue implementatie (CD) genoemd. Er zijn veel mogelijke bestemmingen om een toepassing te publiceren. In deze quickstart publiceert u naar Azure.

Vereisten

  • Een GitHub-account.
  • Een .NET-broncodeopslagplaats.
  • Een Azure-account met een actief abonnement. Gratis een account maken
  • Een ASP.NET Core-web-app.
  • Een Azure-app Service-resource.

Publicatieprofiel toevoegen

Als u de app naar Azure wilt publiceren, opent u Azure Portal voor het App Service-exemplaar van de toepassing. Selecteer In het resourceoverzicht het publicatieprofiel ophalen en sla het *op. PublishSetting-bestand lokaal.

Azure Portal, App Service resource: Get publish profile

Waarschuwing

Het publicatieprofiel bevat gevoelige informatie, zoals referenties voor toegang tot uw Azure-app Service-resource. Deze informatie moet altijd zorgvuldig worden behandeld.

Navigeer in de GitHub-opslagplaats naar Instellingen en selecteer Geheimen in het linkernavigatiemenu. Selecteer Nieuw opslagplaatsgeheim om een nieuw geheim toe te voegen.

GitHub / Settings / Secret: Add new repository secret

Voer AZURE_PUBLISH_PROFILE de naam in en plak de XML-inhoud van het publicatieprofiel in het tekstgebied Waarde . Selecteer Geheim toevoegen. Zie Versleutelde geheimen voor meer informatie.

Een werkstroombestand maken

Voeg in de GitHub-opslagplaats een nieuw YAML-bestand toe aan de map .github/workflows . Kies een betekenisvolle bestandsnaam, iets dat duidelijk aangeeft wat de werkstroom moet doen. Zie Werkstroombestand voor meer informatie.

Belangrijk

GitHub vereist dat werkstroomsamenstellingsbestanden in de map .github/workflows worden geplaatst.

Werkstroombestanden definiëren doorgaans een samenstelling van een of meer GitHub Action via de jobs.<job_id>/steps[*]. Zie de werkstroomsyntaxis voor GitHub Actions voor meer informatie.

Maak een nieuw bestand met de naam publish-app.yml, kopieer en plak de volgende YML-inhoud erin:

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'

In de voorgaande werkstroomsamenstelling:

  • De name: publish naam wordt gedefinieerd, 'publiceren' wordt weergegeven in werkstroomstatusbadges.

    name: publish
    
  • Het on knooppunt geeft de gebeurtenissen aan die de werkstroom activeren:

    on:
      push:
        branches: [ production ]
    
    • Geactiveerd wanneer er een push optreedt op de production vertakking.
  • Het env knooppunt definieert benoemde omgevingsvariabelen (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
    
    • De omgevingsvariabele AZURE_WEBAPP_NAME wordt de waarde DotNetWebtoegewezen.
    • De omgevingsvariabele AZURE_WEBAPP_PACKAGE_PATH wordt de waarde '.'toegewezen.
    • De omgevingsvariabele DOTNET_VERSION wordt de waarde '6.0.401'toegewezen. Er wordt later naar de omgevingsvariabele verwezen om de dotnet-versionactions/setup-dotnet@v3 GitHub Action op te geven.
  • Het jobs knooppunt bouwt de stappen uit die de werkstroom moet uitvoeren.

    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'
    
    • Er is één taak, die publish wordt uitgevoerd op de nieuwste versie van Ubuntu.
    • De actions/setup-dotnet@v3 GitHub Action wordt gebruikt om de .NET SDK in te stellen met de opgegeven versie van de DOTNET_VERSION omgevingsvariabele.
    • De dotnet restore opdracht wordt aangeroepen.
    • De dotnet build opdracht wordt aangeroepen.
    • De dotnet publish opdracht wordt aangeroepen.
    • De dotnet test opdracht wordt aangeroepen.
    • De azure/webapps-deploy@v2 GitHub Action implementeert de app met de opgegeven publish-profile en package.
      • Het publish-profile is toegewezen vanuit het AZURE_PUBLISH_PROFILE opslagplaatsgeheim.

Badge Een werkstroomstatus maken

Het is gebruikelijk dat GitHub-opslagplaatsen een README.md bestand hebben in de hoofdmap van de opslagplaatsmap. Op dezelfde manier is het handig om de meest recente status voor verschillende werkstromen te rapporteren. Alle werkstromen kunnen een statusbadge genereren, die visueel aantrekkelijk zijn in het README.md-bestand . De badge Werkstroomstatus toevoegen:

  1. Selecteer in de GitHub-opslagplaats de optie Actiesnavigatie .

  2. Alle werkstromen van de opslagplaats worden aan de linkerkant weergegeven, selecteer de gewenste werkstroom en de knop met het beletselteken (...).

    • Met de knop met het beletselteken (...) worden de menuopties voor de geselecteerde werkstroom uitgevouwen.
  3. Selecteer de menuoptie Statusbadge maken.

    GitHub: Create status badge

  4. Selecteer de markdown-knop Status kopiëren.

    GitHub: Copy status badge Markdown

  5. Plak de Markdown in het README.md bestand, sla het bestand op, voer de wijzigingen door en push deze.

Zie De badge Een werkstroomstatus toevoegen voor meer informatie.

Voorbeeld badge werkstroomstatus publiceren

Geslaagd Mislukt Geen status
GitHub: publish passing badge GitHub: publish failing badge GitHub: publish no-status badge

Zie ook

Volgende stappen