Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.
GitHub AE is currently under limited release.

Desplegar con GitHub Actions

Aprende a controlar los despliegues con características como ambientes y concurrencia.

Introducción

GitHub Actions ofrece características que te permiten controlar los despliegues. Puede:

  • Activar flujos de trabajo con eventos diversos.
  • Configura ambientes para establecer reglas antes de que un job pueda proceder y para limitar el acceso a los secretos.
  • Utiliza la concurrencia para controlar la cantidad de despliegues que se ejecutan al mismo tiempo.

Para más información sobre la implementación continua, vea "Acerca de la implementación continua".

Prerrequisitos

Debes estar familiarizado con la sintaxis de las GitHub Actions. Para más información, vea "Más información sobre GitHub Actions".

Activar tu despliegue

Puedes utilizar varios eventos para activar tu flujo de trabajo de despliegue. Algunos de los más comunes son: pull_request, push y workflow_dispatch.

Por ejemplo, un flujo de trabajo con los siguientes activadores se ejecuta en cualquier momento:

  • Hay una inserción en la rama main.
  • Una solicitud de incorporación de cambios dirigida a la rama main se ha abierto, sincronizado o vuelto a abrir.
  • Alguien lo activó manualmente.
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  workflow_dispatch:

Para más información, vea "Eventos que desencadenan flujos de trabajo".

Utilizar ambientes

Los entornos se usan para describir un destino de implementación general como production, staging o development. Cuando se despliega un flujo de trabajo de GitHub Actions en un ambiente, dicho ambiente se desplegará en la página principal del repositorio. Puedes utilizar ambientes para que requieran la aprobación para que un job proceda, restringir qué ramas pueden activar un flujo de trabajo o limitar el acceso a los secretos. Para obtener más información sobre la creación de entornos, consulte"Uso de entornos para la implementación".

Utilizar la concurrencia

La concurrencia se asegura de que solo un job o flujo de trabajo que utilice el mismo grupo de concurrencia se ejecute al mismo tiempo. Puedes utilizar la concurrencia para que un ambiente tenga un máximo de un despliegue en progreso y un despliegue pendiente a la vez.

Nota: concurrency y environment no están conectados. El valor de concurrencia puede ser cualquier secuencia; no necesita ser un nombre de ambiente. Adicionalmente, si otro flujo de trabajo utiliza el mismo ambiente pero no especifica una concurrencia, este no estará sujeto a ninguna regla de concurrencia.

Por ejemplo, cuando se ejecuta el siguiente flujo de trabajo, se pausará con el estado pending si cualquier trabajo o flujo de trabajo que utiliza el grupo de simultaneidad production está en curso. También cancelará cualquier trabajo o flujo de trabajo que use el grupo de simultaneidad production y tenga el estado pending. Esto significa que habrá un máximo de un trabajo o flujo de trabajo en ejecución, y un trabajo o flujo de trabajo pendiente que utilice el grupo de simultaneidad production.

name: Deployment

concurrency: production

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: deploy
        # ...deployment-specific steps

También puedes especificar la concurrencia a nivel del job. Esto permitirá que los demás trabajos del flujo de trabajo continúen aunque el trabajo simultáneo sea pending.

name: Deployment

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: production
    concurrency: production
    steps:
      - name: deploy
        # ...deployment-specific steps

También puede usar cancel-in-progress para cancelar cualquier trabajo o flujo de trabajo actualmente en ejecución en el mismo grupo de simultaneidad.

name: Deployment

concurrency: 
  group: production
  cancel-in-progress: true

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: deploy
        # ...deployment-specific steps

Para obtener instrucciones sobre cómo escribir pasos específicos de la implementación, vea "Búsqueda de ejemplos de implementación".

Visualización del historial de implementación

Cuando se despliega un flujo de trabajo de GitHub Actions en un ambiente, dicho ambiente se desplegará en la página principal del repositorio. Para más información sobre cómo ver las implementaciones en los entornos, vea "Visualización del historial de implementación".

Monitorear las ejecuciones de flujo de trabajo

Cada ejecución de flujo de trabajo genera una gráfica en tiempo real que ilustra el progreso de la misma. Puedes utilizar esta gráfica para monitorear y depurar los despliegues. Para más información, vea "Uso del gráfico de visualización".

También puedes ver las bitácoras de cada ejecución de flujo de trabajo y el historial de estos. Para más información, vea "Visualización del historial de ejecución de flujos de trabajo".

Rastrear los despliegues a través de las apps

También puedes crear una app que utilice despliegues y webhooks de estados de despliegues para rastrearlos. Cuando se ejecuta un trabajo de flujo de trabajo que hace referencia a un entorno, crea un objeto de implementación con la propiedad environment establecida en el nombre del entorno. A medida que avanza el flujo de trabajo, también crea objetos de estado de implementación con la propiedad environment establecida en el nombre del entorno, la propiedad environment_url establecida en la URL del entorno (si se ha especificado en el flujo de trabajo) y la propiedad state establecida en el estado del trabajo. Para más información, vea "Aplicaciones" y "Eventos y cargas de webhook".

Mostrar una insignia de estado

Puedes utilizar una insignia de estado para mostrar el estado de tu flujo de trabajo de despliegue. Una insignia de estado muestra si un flujo de trabajo falla o pasa actualmente. Un lugar común para agregar un distintivo de estado es el archivo README.md del repositorio, pero puede agregarlo a la página web que quiera. Predeterminadamente, las insignias muestran el estado de tu rama predeterminada. También puede mostrar el estado de la ejecución de un flujo de trabajo para una rama o evento específicos mediante los parámetros de consulta branch y event en la URL.

ejemplo de insignia de estado

Para más información, vea "Adición de un distintivo de estado de flujo de trabajo".

Encontrar ejemplos de despliegues

Este artículo demostró características de las GitHub Actions que puedes agregar a tus flujos de trabajo de despliegue.

GitHub AE ofrece flujos de trabajo iniciales para el despliegue para varios servicios populares tales como Azure Web App. Para obtener información sobre cómo empezar a usar un flujo de trabajo de inicio, vea "Uso de flujos de trabajo de inicio" o examine la lista completa de flujos de trabajo de inicio de implementación. También puede consultar flujos de trabajo de implementación específicos en nuestras guías más detalladas, como "Implementación en Azure App Service".

Muchos proveedores de servicio también ofrecen acciones en GitHub Marketplace para desplegar a su servicio. Para obtener la lista completa, vea GitHub Marketplace.