Compartir a través de


Acciones de GitHub y .NET

En este resumen, aprenderá el rol que desempeñan las Acciones de GitHub en el desarrollo de aplicaciones .NET. Las Acciones de GitHub permiten que los repositorios de código fuente automaticen la integración continua (CI) y la entrega continua (CD). Además, las Acciones de GitHub exponen escenarios más avanzados, lo que proporciona enlaces para la automatización con revisiones de código, administración de ramas y evaluación de prioridades de problemas. Con el código fuente de .NET en GitHub, puede aprovechar las Acciones de GitHub de muchas maneras.

Acciones de GitHub

Las Acciones de GitHub representan comandos independientes, como:

  • actions/checkout: esta acción desprotegerá el repositorio en $GITHUB_WORKSPACE, para que el flujo de trabajo pueda acceder a él.
  • actions/setup-dotnet: esta acción configura un entorno de la CLI de .NET para su uso en acciones.
  • dotnet/versionsweeper: Esta acción barrió los repositorios de .NET para versiones de destino fuera de soporte técnico de .NET.

Aunque estos comandos están aislados en una sola acción, son eficaces a través de la composición del flujo de trabajo. En la composición del flujo de trabajo, se definen los eventos que desencadenan el flujo de trabajo. Una vez que se ejecuta un flujo de trabajo, hay varios trabajos que se le indica que realice. Cada trabajo define cualquier número de pasos. Los pasos delegan para Acciones de GitHub o, como alternativa, llamar a scripts de línea de comandos.

Para obtener más información, consulte Introducción a Acciones de GitHub. 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.

Acciones de GitHub personalizadas

Aunque hay un montón de Acciones de GitHub disponibles en Marketplace, puede que quiera crear la suya propia. Puede crear Acciones de GitHub que ejecutan aplicaciones .NET. Para más información, consulte Tutorial: Crear una acción Acción de GitHub con .NET

Archivo de flujo de trabajo

Las Acciones de GitHub se usan a través de un archivo de flujo de trabajo. El archivo de flujo de trabajo debe encontrarse en el directorio .github/workflows del repositorio y se espera que sea YAML (*.yml o *.yaml). Los archivos de flujo de trabajo definen la composición del flujo de trabajo. Un flujo de trabajo es un proceso automatizado configurable formado por uno o más trabajos. Para más información, consulte Sintaxis de flujo de trabajo para Acciones de GitHub.

Ejemplo de archivos de flujo de trabajo

Hay muchos ejemplos de archivos de flujo de trabajo de .NET proporcionados como tutoriales e inicios rápidos. Estos son varios buenos ejemplos de nombres de archivo de flujo de trabajo:

Archivo de flujo de trabajo

Descripción

Compila el código fuente. Si el código fuente no se compila, se producirá un error.

Realiza ejercicios de las pruebas unitarias dentro del repositorio. Para ejecutar pruebas, el código fuente debe compilarse primero; esto es realmente un flujo de trabajo de compilación y prueba (reemplazaría el flujo de trabajo build-validation.yml). Las pruebas unitarias con errores provocarán un error de flujo de trabajo.

Empaqueta y publica el código fuente en un destino.

Analiza el código para detectar vulnerabilidades de seguridad y errores de codificación. Cualquier vulnerabilidad detectada podría provocar un error.

Secretos cifrados

Para usar secretos cifrados en los archivos de flujo de trabajo, haga referencia a los secretos mediante la sintaxis de expresión de flujo de trabajo del objeto de contexto secrets.

${{ secrets.MY_SECRET_VALUE }} # The MY_SECRET_VALUE must exist in the repository as a secret

Los valores secretos nunca se imprimen en los registros. En su lugar, sus nombres se imprimen con un asterisco que representa sus valores. Por ejemplo, a medida que cada paso se ejecuta dentro de un trabajo, todos los valores que usa se generan en el registro de acciones. Los valores secretos se representan de forma similar a la siguiente:

MY_SECRET_VALUE: ***

Importante

El contexto secrets proporciona el token de autenticación de GitHub que tiene como ámbito el repositorio, la rama y la acción. Lo proporciona GitHub sin intervención del usuario:

${{ secrets.GITHUB_TOKEN }}

Para más información, consulte Uso de secretos cifrados en un flujo de trabajo.

Events

Los flujos de trabajo se desencadenan mediante muchos tipos diferentes de eventos. Además de los eventos de Webhook, que son los más comunes, también hay eventos programados y eventos manuales.

Ejemplo de evento de Webhook

En el ejemplo siguiente se muestra cómo especificar un desencadenador de eventos de webhook para un flujo de trabajo:

name: code coverage

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main, staging

jobs:
  coverage:

    runs-on: ubuntu-latest

    # steps omitted for brevity

En el flujo de trabajo anterior, los eventos push y pull_request desencadenarán la ejecución del flujo de trabajo.

Ejemplo de evento programado

En el ejemplo siguiente se muestra cómo especificar un desencadenador de eventos de webhook para un flujo de trabajo:

name: scan
on:
  schedule:
  - cron: '0 0 1 * *'
  # additional events omitted for brevity

jobs:
  build:
    runs-on: ubuntu-latest

    # steps omitted for brevity

En el flujo de trabajo anterior, el evento schedule especifica el cron de '0 0 1 * *' de los cuales desencadenará el flujo de trabajo que se ejecutará el primer día de cada mes. La ejecución de flujos de trabajo según una programación es excelente para los flujos de trabajo que tardan mucho tiempo en ejecutarse o realizar acciones que requieren menos atención.

Ejemplo de evento manual

En el ejemplo siguiente se muestra cómo especificar un desencadenador de eventos de manual para un flujo de trabajo:

name: build
on:
  workflow_dispatch:
    inputs:
      reason:
        description: 'The reason for running the workflow'
        required: true
        default: 'Manual run'
  # additional events omitted for brevity

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: 'Print manual run reason'
        if: ${{ github.event_name == 'workflow_dispatch' }}
        run: |
          echo 'Reason: ${{ github.event.inputs.reason }}'

    # additional steps omitted for brevity

En el flujo de trabajo anterior, el evento workflow_dispatch requiere un reason como entrada. GitHub ve esto y su interfaz de usuario cambia dinámicamente para pedir al usuario que proporcione el motivo para ejecutar manualmente el flujo de trabajo. steps imprimirá el motivo proporcionado por el usuario.

Para obtener más información, consulte Eventos que desencadenan flujos de trabajo.

CLI de .NET

La interfaz de la línea de comandos (CLI) de .NET es una cadena de herramientas multiplataforma que sirve para desarrollar, compilar, ejecutar y publicar aplicaciones .NET. La CLI de .NET se usa en run como parte de una persona steps dentro de un archivo de flujo de trabajo. Identificadores de comando comunes:

Para obtener más información, vea Información general sobre la CLI de .NET

Consulte también

Para obtener una visión más detallada de Acciones de GitHub con .NET, tenga en cuenta los siguientes recursos: