Condividi tramite


Guida introduttiva: Creare un flusso di lavoro GitHub di convalida di build

In questa guida introduttiva si apprenderà come creare un flusso di lavoro GitHub per convalidare la compilazione del codice sorgente .NET in GitHub. La compilazione del codice .NET è uno dei passaggi di convalida più semplici che è possibile eseguire per garantire la qualità degli aggiornamenti al codice. Se il codice non viene compilato, si tratta di un semplice deterrente che indica che il codice deve essere corretto.

Prerequisiti

  • Un account GitHub.
  • Un repository del codice sorgente .NET.

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 ulteriori 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 jobs.<job_id>/steps[*]. Per altre informazioni, vedere Sintassi del flusso di lavoro per GitHub Actions.

Creare un nuovo file denominato build-validation.yml, quindi copiare e incollare il contenuto YML seguente al suo interno:

name: build

on:
  push:
  pull_request:
    branches: [ main ]
    paths:
    - '**.cs'
    - '**.csproj'

env:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  build:

    name: build-${{matrix.os}}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macOS-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: dotnet build --configuration Release --no-restore

Nella composizione del flusso di lavoro precedente:

  • name: build definisce il nome, "build" verrà visualizzato nelle notifiche di stato del flusso di lavoro.

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

    on:
      push:
      pull_request:
        branches: [ main ]
        paths:
        - '**.cs'
        - '**.csproj'
    
    • Attivato quando un push o pull_request si verifica nel ramo main in cui tutti i file modificati terminano con le estensioni di file .cs o .csproj.
  • Il nodo env definisce le variabili di ambiente denominate (env var).

    env:
      DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
    
    • Alla variabile di ambiente DOTNET_VERSION viene assegnato il valore '6.0.401'. In seguito viene fatto riferimento alla variabile di ambiente per specificare l'oggetto dotnet-version di GitHub Action actions/setup-dotnet@v3.
  • Il nodo jobs compila i passaggi da eseguire per il flusso di lavoro.

    jobs:
      build:
    
        name: build-${{matrix.os}}
        runs-on: ${{ matrix.os }}
        strategy:
          matrix:
            os: [ubuntu-latest, windows-latest, macOS-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: dotnet build --configuration Release --no-restore
    
    • Esiste un singolo processo, denominato build-<os>, dove <os> è il nome del sistema operativo da strategy/matrix. Gli elementi name e runs-on sono dinamici per ogni valore in matrix/os. Questa operazione verrà eseguita nelle versioni più recenti di Ubuntu, Windows e macOS.

    • La GitHub Action actions/setup-dotnet@v3 è necessaria per configurare .NET SDK con la versione specificata dalla variabile di ambiente DOTNET_VERSION.

    • (Facoltativamente) Potrebbero essere necessari passaggi aggiuntivi, a seconda del carico di lavoro .NET. Vengono omessi da questo esempio, ma potrebbero essere necessari altri strumenti installati per compilare le app.

      • Ad esempio, quando si compila un'applicazione WebAssembly Blazor ASP.NET Core con compilazione AoT (Ahead-of-Time) è necessario installare il carico di lavoro corrispondente prima di eseguire operazioni di ripristino/compilazione/pubblicazione.
      - name: Install WASM Tools Workload
        run: dotnet workload install wasm-tools
      

      Per altre informazioni sui carichi di lavoro .NET, vedere dotnet workload install.

    • Viene chiamato il comando dotnet restore.

    • Viene chiamato il comando dotnet build.

In questo caso, si consideri un file del flusso di lavoro come una composizione che rappresenta i vari passaggi per compilare un'applicazione. Sono disponibili molti comandi dell'interfaccia della riga di comando di .NET, la maggior parte dei quali può essere usata nel contesto di un'azione GitHub.

Creare una notifica di stato del flusso di lavoro

È comune denominazione per i repository GitHub avere un file README.md nella radice della directory del repository. Analogamente, è utile poter 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 spostamento Azioni.

  2. Tutti i flussi di lavoro del repository vengono visualizzati sul lato sinistro, selezionare il flusso di lavoro desiderato e 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 del menu Crea notifica di stato.

    GitHub: Create status badge

  4. Selezionare il pulsante Copia markdown notifica di stato.

    GitHub: Copy status badge Markdown

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

Per altre informazioni, vedere Aggiunta di una notifica di stato del flusso di lavoro.

Notifica di stato del flusso di lavoro di compilazione di esempio

Superamento Fallito Nessuno stato
GitHub: build passing badge GitHub: build failing badge GitHub: build no-status badge

Vedi anche

Passaggi successivi