Condividi tramite


Guida introduttiva: Creare un flusso di lavoro GitHub per pubblicare un'app

In questa guida introduttiva si apprenderà come creare un flusso di lavoro GitHub per pubblicare l'app .NET dal codice sorgente. La pubblicazione automatica dell'app .NET da GitHub in una destinazione viene definita distribuzione continua (CD). Esistono molte destinazioni possibili per pubblicare un'applicazione, in questa guida introduttiva si pubblicherà in Azure.

Prerequisiti

  • Un account GitHub.
  • Un repository di codice sorgente .NET.
  • Un account Azure con una sottoscrizione attiva. Creare un account gratuito.
  • Un'app Web di ASP.NET Core.
  • Una risorsa del servizio app di Azure.

Aggiungere il profilo di pubblicazione

Per pubblicare l'app in Azure, aprire il portale di Azure per l'istanza del servizio app dell'applicazione. Nella panoramica della risorsa selezionare Ottieni profilo di pubblicazione e salvare il file .PublishSetting localmente.

Portale di Azure, risorsa App Service: Ottieni il profilo di pubblicazione

Avvertimento

Il profilo di pubblicazione contiene informazioni riservate, ad esempio le credenziali per l'accesso alla risorsa del servizio app di Azure. Queste informazioni devono essere sempre trattate con molta attenzione.

Nel repository GitHub passare a Impostazioni e selezionare Segreti dal menu di spostamento a sinistra. Seleziona Nuovo segreto del repository per aggiungere un nuovo segreto.

GitHub/Impostazioni/Segreto: Aggiungi nuovo segreto del repository

Immettere AZURE_PUBLISH_PROFILE come Nome e incollare il contenuto XML dal profilo di pubblicazione nell'area di testo Valore . Selezionare Aggiungi segreto. Per altre informazioni, vedere Segreti crittografati.

Creare un file del flusso di lavoro

Nel repository GitHub aggiungere un nuovo file YAML alla directory .github/workflows . Scegliere un nome di file significativo, un elemento che indicherà chiaramente cosa deve fare il flusso di lavoro. Per altre informazioni, vedere File del flusso di lavoro.

Importante

GitHub richiede che i file di composizione del flusso di lavoro vengano inseriti nella directory .github/workflows .

I file del flusso di lavoro definiscono in genere una composizione di una o più azioni GitHub tramite il jobs.<job_id>/steps[*]. Per altre informazioni, vedere sintassi del flusso di lavoro per GitHub Actions.

Creare un nuovo file denominato publish-app.yml, copiare e incollare il contenuto YML seguente:

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'

Nella composizione del flusso di lavoro precedente:

  • Definisce name: publish il nome, "Publish" verrà visualizzato nei badge di stato del flusso di lavoro.

    name: publish
    
  • Il on nodo indica gli eventi che attivano il flusso di lavoro:

    on:
      push:
        branches: [ production ]
    
    • Attivato quando si verifica un push nella production branche.
  • Il env nodo definisce le variabili di ambiente denominate (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
    
    • Alla variabile AZURE_WEBAPP_NAME di ambiente viene assegnato il valore DotNetWeb.
    • Alla variabile AZURE_WEBAPP_PACKAGE_PATH di ambiente viene assegnato il valore '.'.
    • Alla variabile DOTNET_VERSION di ambiente viene assegnato il valore '6.0.401'. In seguito viene fatta riferimento alla variabile di ambiente per specificare il dotnet-version dell'actions/setup-dotnet@v3 GitHub Action.
  • Il jobs nodo compila i passaggi da eseguire per il flusso di lavoro.

    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'
    
    • Esiste un singolo processo denominato publish che verrà eseguito nella versione più recente di Ubuntu.
    • GitHub actions/setup-dotnet@v3 Action viene usato per configurare .NET SDK con la versione specificata dalla DOTNET_VERSION variabile di ambiente.
    • Viene chiamato il dotnet restore comando .
    • Viene chiamato il dotnet build comando .
    • Viene chiamato il dotnet publish comando .
    • Viene chiamato il dotnet test comando .
    • azure/webapps-deploy@v2 GitHub Action distribuisce l'app con l'oggetto e publish-profilespecificatopackage.
      • L'oggetto publish-profile viene assegnato dalla chiave segreta del repository AZURE_PUBLISH_PROFILE.

Creare un badge di stato del flusso di lavoro

Per i repository GitHub è comune avere un file README.md nella radice della directory del repository. Analogamente, è bello segnalare lo stato più recente per vari flussi di lavoro. Tutti i flussi di lavoro possono generare una notifica di stato, visivamente accattivante all'interno del file README.md . Per aggiungere la notifica relativa allo stato del flusso di lavoro:

  1. Nel repository GitHub selezionare l'opzione di navigazione Azioni.

  2. Tutti i flussi di lavoro del repository vengono visualizzati sul lato sinistro; seleziona il flusso di lavoro desiderato, quindi il pulsante con i puntini di sospensione (...).

    • Il pulsante con i puntini di sospensione (...) espande le opzioni di menu per il flusso di lavoro selezionato.
  3. Selezionare l'opzione di menu Crea badge di stato.

    GitHub: Crea un badge di stato

  4. Selezionare il pulsante Copy status badge Markdown (Copia stato markdown ).

    GitHub: Copia il Markdown del badge di stato

  5. Incollare il markdown nel file README.md , salvare il file, eseguire il commit ed eseguire il push delle modifiche.

Per ulteriori informazioni, consultare Aggiunta di un badge sullo stato del flusso di lavoro.

Notifica di stato del flusso di lavoro di pubblicazione di esempio

Effimero Fallimento Nessuno stato
GitHub: pubblica badge di approvazione GitHub: notifica di pubblicazione non riuscita GitHub: notifica di pubblicazione senza stato

Vedere anche

Passaggi successivi