Implementación de App Service con Acciones de GitHub

Comience a usar Acciones de GitHub para automatizar el flujo de trabajo e implementarlo en Azure App Service desde GitHub.

Requisitos previos

Configuración de la implementación de Acciones de GitHub al crear la aplicación

La implementación de Acciones de GitHub se integra en el asistente de creación de aplicaciones predeterminado. Solo tiene que establecer Implementación continua en Habilitar en la pestaña Implementación y configurar la organización, el repositorio y la rama que desee.

A screenshot showing how to enable GitHub Actions deployment in the App Service create wizard.

Al habilitar la implementación continua, el asistente de creación de aplicaciones selecciona automáticamente el método de autenticación en función de la selección de autenticación básica y configura la aplicación y el repositorio de GitHub en consecuencia:

Selección de autenticación básica Método de autenticación
Deshabilitar Identidad asignada por el usuario (OpenID Connect)
Habilitar Autenticación básica

Nota:

Si recibe un error al crear la aplicación diciendo que la cuenta de Azure no tiene determinados permisos, es posible que no tenga los permisos necesarios para crear y configurar la identidad asignada por el usuario. Para obtener una alternativa, consulte Configuración de la implementación de Acciones de GitHub desde el centro de implementación.

Configuración de la implementación de Acciones de GitHub desde el centro de implementación

Para una aplicación existente, puede empezar a trabajar rápidamente con Acciones de GitHub con el centro de implementación de App Service. Este método llave en mano genera automáticamente un archivo de flujo de trabajo de Acciones de GitHub basado en la pila de aplicaciones y lo confirma en el repositorio de GitHub.

El centro de implementación también le permite configurar fácilmente la autenticación de OpenID Connect más segura con la opción identidad asignada por el usuario.

Si la cuenta de Azure tiene los permisos necesarios, puede seleccionar crear una identidad asignada por el usuario. De lo contrario, puede seleccionar una identidad administrada asignada por el usuario existente en la lista desplegable Identidad. Puede trabajar con el administrador de Azure para crear una identidad administrada asignada por el usuario con el rol Colaborador del sitio web.

Para más información, consulte Implementación continua en Azure App Service.

Configuración manual de un flujo de trabajo de Acciones de GitHub

También puede implementar un flujo de trabajo sin usar el centro de implementación.

  1. Genere las credenciales de implementación
  2. Configuración del secreto de GitHub
  3. Adición del archivo de flujo de trabajo al repositorio de GitHub

1. Genere las credenciales de implementación.

La manera recomendada de autenticarse con instancias de Azure App Service para Acciones de GitHub es con una identidad administrada definida por el usuario y la forma más sencilla de hacerlo es configurando la implementación de Acciones de GitHub directamente en el portal en su lugar y seleccionando identidad administrada asignada por el usuario.

Nota:

La autenticación mediante una identidad administrada asignada por el usuario está actualmente en versión preliminar.

Como alternativa, puede autenticarse con una entidad de servicio, OpenID Connect o un perfil de publicación.

Nota:

El perfil de publicación requiere que se habilite la autenticación básica.

Un perfil de publicación es una credencial de nivel de aplicación. Configure el perfil de publicación como secreto de GitHub.

  1. En Azure Portal, vaya a la aplicación de App Service.

  2. En la página de Información general, seleccione Obtener perfil de publicación.

  3. Guarde el archivo descargado. Usará el contenido del archivo para crear un secreto de GitHub.

Nota:

Desde octubre de 2020, las aplicaciones web de Linux necesitan que la configuración de la aplicación WEBSITE_WEBDEPLOY_USE_SCM esté establecida en trueantes de descargar el perfil de publicación. Este paso dejará de ser un requisito en el futuro.

2. Configuración del secreto de GitHub

En GitHub, examine el repositorio. Seleccione Configuración > Seguridad > Secretos y variables > Acciones > Nuevo secreto del repositorio.

Para usar las credenciales de nivel de aplicación, pegue el contenido del archivo del perfil de publicación descargado en el campo de valor del secreto. Asigne al secreto el siguiente nombre: AZURE_WEBAPP_PUBLISH_PROFILE.

Al configurar el archivo de flujo de trabajo de GitHub más adelante, usará la AZURE_WEBAPP_PUBLISH_PROFILE en la acción Implementar aplicación web de Azure. Por ejemplo:

- uses: azure/webapps-deploy@v2
  with:
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

3. Adición del archivo de flujo de trabajo al repositorio de GitHub

Un archivo YAML (.yml) define un flujo de trabajo en la ruta de acceso /.github/workflows/ de su repositorio de GitHub. En esta definición se incluyen los diversos pasos y parámetros que componen el flujo de trabajo.

Como mínimo, el archivo de flujo de trabajo tendría los siguientes pasos diferenciados:

  1. Autentíquese con App Service mediante el secreto de GitHub que creó.
  2. Cree la aplicación web.
  3. Implemente la aplicación web.

Para implementar el código en una aplicación de App Service, use la acción azure/webapps-deploy@v3. La acción requiere el nombre de la aplicación web en app-name y, en función de la pila de lenguaje, la ruta de acceso de un *.zip, *.war, *.jar o carpeta para implementar en package. Para obtener una lista completa de las posibles entradas para la acción azure/webapps-deploy@v3, consulte la definición de action.yml.

En los siguientes ejemplos se muestra la parte del flujo de trabajo que compila la aplicación web en los diversos lenguajes admitidos.

La entrada publish-profile debe hacer referencia al secreto de GitHub AZURE_WEBAPP_PUBLISH_PROFILE que creó anteriormente.

name: .NET Core CI

on: [push]

env:
  AZURE_WEBAPP_NAME: my-app-name    # set this to your application's name
  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root
  DOTNET_VERSION: '6.0.x'           # set this to the dot net version to use

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Checkout the repo
      - uses: actions/checkout@main
      
      # Setup .NET Core SDK
      - name: Setup .NET Core
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: ${{ env.DOTNET_VERSION }} 
      
      # Run dotnet build and publish
      - name: dotnet build and publish
        run: |
          dotnet restore
          dotnet build --configuration Release
          dotnet publish -c Release --property:PublishDir='${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp' 
          
      # Deploy to Azure Web apps
      - name: 'Run Azure webapp deploy action using publish profile credentials'
        uses: azure/webapps-deploy@v3
        with: 
          app-name: ${{ env.AZURE_WEBAPP_NAME }} # Replace with your app name
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE  }} # Define secret variable in repository settings as per action documentation
          package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/myapp'

Pasos siguientes

Consulte las referencias en flujos de trabajo y Acciones de GitHub de Azure: