Inicio rápido: Creación de un flujo de trabajo de GitHub para publicar una aplicación

En este inicio rápido, aprenderá a crear un flujo de trabajo de GitHub para publicar una aplicación de .NET desde el código fuente. La publicación automática de la aplicación .NET, desde GitHub hacia un destino, se conoce como implementación continua (CD). Hay muchos destinos posibles en los que publicar una aplicación, en este inicio rápido se publicará en Azure.

Requisitos previos

  • Una cuenta de GitHub.
  • Repositorio de código fuente de .NET.
  • Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
  • Una aplicación web de ASP.NET Core.
  • Un recurso de Azure App Service.

Agregar perfil de publicación

Para publicar la aplicación en Azure, abra Azure Portal para acceder a la instancia de App Service de la aplicación. En la Información general del recurso, seleccione Obtener perfil de publicación y guarde el archivo *.PublishSetting localmente.

Azure Portal, App Service resource: Get publish profile

Advertencia

El perfil de publicación contiene información confidencial, como las credenciales para acceder al recurso de Azure App Service. Esta información siempre debe tratarse con mucho cuidado.

En el repositorio de GitHub, vaya a Configuración y seleccione Secretos en el menú de navegación izquierdo. Seleccione Nuevo secreto de repositorio para agregar un nuevo secreto.

GitHub / Settings / Secret: Add new repository secret

Escriba AZURE_PUBLISH_PROFILE como el Nombre y pegue el contenido XML del perfil de publicación en el área de texto del Valor. Seleccione Add secret (Agregar secreto). Para más información, consulte Secretos cifrados.

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 publish-app.yml y después copie y pegue dentro el siguiente contenido de YML:

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'

En la composición del flujo de trabajo anterior:

  • name: publish define el nombre, "publicar" aparecerá en las notificaciones de estado del flujo de trabajo.

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

    on:
      push:
        branches: [ production ]
    
    • Se desencadena cuando se produce un push en la rama production.
  • El nodo env define variables de entorno con nombre (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
    
    • A la variable de entorno AZURE_WEBAPP_NAME se le asigna el valor DotNetWeb.
    • A la variable de entorno AZURE_WEBAPP_PACKAGE_PATH se le asigna el valor '.'.
    • 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:
      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'
    
    • Hay un único trabajo, denominado publish, que se ejecutará en la versión más reciente de Ubuntu.
    • 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.
    • Se llama al comando dotnet restore.
    • Se llama al comando dotnet build.
    • Se llama al comando dotnet publish.
    • Se llama al comando dotnet test.
    • La acción de GitHub azure/webapps-deploy@v2 implementa la aplicación con los publish-profile y package especificados.
      • publish-profile se asigna desde el secreto del repositorio AZURE_PUBLISH_PROFILE.

Creación de 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.

Ejemplo de la publicación de una notificación de estado de flujo de trabajo

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

Consulte también

Pasos siguientes