Inicio rápido: Crear un flujo de trabajo de GitHub de validación de compilación

En este inicio rápido, aprenderá a crear un flujo de trabajo de GitHub para validar la compilación del código fuente de .NET en GitHub. Compilar el código de .NET es uno de los pasos de validación más básicos que puede seguir para ayudar a garantizar la calidad de las actualizaciones en el código. Si el código no se compila, es un disuasorio sencillo y debe ser un signo claro de que el código debe corregirse.

Requisitos previos

Creación de un archivo de flujo de trabajo

En el repositorio de GitHub, agregue un nuevo archivo YAML al directorio .github/workflows. Elija un nombre de archivo significativo, algo que indique claramente cuál va a ser la función del flujo de trabajo. Para más información, consulte Archivo de flujo de trabajo.

Importante

GitHub requiere que los archivos de composición del flujo de trabajo se coloquen en el directorio .github/workflows.

Normalmente, los archivos de flujo de trabajo definen una composición de una o varias Acciones de GitHub a través de jobs.<job_id>/steps[*]. Para más información, consulte Sintaxis del flujo de trabajo para Acciones de GitHub.

Cree un archivo denominado build-validation.yml y después copie y pegue dentro el siguiente contenido de YML:

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

En la composición del flujo de trabajo anterior:

  • name: build define el nombre, «build» aparecerá en las notificaciones de estado del flujo de trabajo.

    name: build
    
  • El nodo on indica los eventos que desencadenan el flujo de trabajo:

    on:
      push:
      pull_request:
        branches: [ main ]
        paths:
        - '**.cs'
        - '**.csproj'
    
    • Se desencadena cuando se produce push o pull_request en la rama main, en la que algunos archivos han cambiado, finalizando con las extensiones de archivo .cs o .csproj.
  • El nodo env define variables de entorno con nombre (env var).

    env:
      DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
    
    • A la variable de entorno DOTNET_VERSION se le asigna el valor '6.0.401'. Después, se hace referencia a la variable de entorno para especificar el dotnet-version de la acción de GitHub actions/setup-dotnet@v3.
  • El nodo jobs genera los pasos necesarios para que el flujo de trabajo se realice.

    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
    
    • Hay un único trabajo, denominado build-<os> donde <os> es el nombre del sistema operativo de strategy/matrix. Los elementos name y runs-on son dinámicos para cada valor de matrix/os. Esto se ejecutará en las versiones más recientes de Ubuntu, Windows y macOS.

    • La acción de GitHub actions/setup-dotnet@v3 se usa para configurar el SDK de .NET con la versión especificada de la variable de entorno DOTNET_VERSION.

    • (Opcionalmente) Es posible que se requieran pasos adicionales, en función de la carga de trabajo de .NET. Se omiten en este ejemplo, pero es posible que necesite herramientas adicionales instaladas para compilar las aplicaciones.

      • Por ejemplo, al compilar una aplicación WebAssembly de Blazor ASP.NET Core con compilación Ahead-of-Time (AoT), instalaría la carga de trabajo correspondiente antes de ejecutar operaciones de restauración, compilación y publicación.
      - name: Install WASM Tools Workload
        run: dotnet workload install wasm-tools
      

      Para más información sobre las cargas de trabajo de .NET, consulte dotnet workload install.

    • Se llama al comando dotnet restore.

    • Se llama al comando dotnet build.

En este caso, se debe pensar en un archivo de flujo de trabajo como una composición que representa los distintos pasos para compilar una aplicación. Hay muchos comandos de la CLI de .NET disponibles, la mayoría de los cuales se pueden usar en el contexto de una acción de GitHub.

Crear una notificación de estado del flujo de trabajo

Es habitual que los repositorios de GitHub tengan un archivo README.md en la raíz del directorio del repositorio. Del mismo modo, es deseable que se notifique el estado más reciente de varios flujos de trabajo. Todos los flujos de trabajo pueden generar notificaciones de estado, que son visualmente llamativas en el archivo README.md. Para agregar la notificación de estado del flujo de trabajo:

  1. En el repositorio de GitHub, seleccione la opción de navegación Acciones.

  2. Todos los flujos de trabajo del repositorio se muestran en el lado izquierdo, seleccione el flujo de trabajo deseado y el botón de puntos suspensivos (...).

    • El botón de puntos suspensivos (...) expande las opciones del menú del flujo de trabajo seleccionado.
  3. Seleccione la opción del menú Crear notificación de estado.

    GitHub: Create status badge

  4. Seleccione el botón Copiar notificación de estado Markdown.

    GitHub: Copy status badge Markdown

  5. Pegue Markdown en el archivo README.md, guarde el archivo, confirme y envíe los cambios.

Para más información, consulte Agregar una notificación de estado de flujo de trabajo.

Notificación de estado de flujo de trabajo de compilación de ejemplo

Correcto Con errores Sin estado
GitHub: build passing badge GitHub: build failing badge GitHub: build no-status badge

Consulte también

Pasos siguientes