Skip to main content
Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

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. Puedes:

  • 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 obtener más información sobre los despliegues continuos, consulta la sección "Acerca de los despliegues continuos".

Prerrequisitos

Debes estar familiarizado con la sintaxis de las GitHub Actions. Para obtener más información, consulta la sección "Aprende 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 subida a la rama main.
  • Se abrió, sincronizó o reabrió una solicitud de cambios que apunta a la rama main.
  • Alguien lo activó manualmente.
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
  workflow_dispatch:

Para obtener más información, consulta "Eventos que activan los flujos de trabajo".

Utilizar ambientes

Los ambientes se utilizan para describir un objetivo de despliegue 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 cómo crear ambientes, consulta la sección "Utilizar ambientes para despliegue".

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: la concurrency y el 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, este se pausará con el estado pending si cualquier job o flujo de trabajo que utiliza el grupo de concurrencia production está en progreso. También cancelará cualquier job o flujo de trabajo que utilice el grupo de concurrencia production y que tenga el estado de pending. Esto significa que habrá un máximo de un job o flujo de trabajo ejecutándose y uno pendiente que utilice el grupo de concurrencia 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á a otros jobs del flujo de trabajo proceder aún si el job concurrente está como 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 puedes utilizar cancel-in-progress para cancelar cualquier job o flujo de trabajo que se esté ejecutando concurrentemente en el mismo grupo de concurrencia.

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 orientación sobre cómo escribir pasos específicos para los despliegues, consulta la sección "Encontrar ejemplos de despliegues".

Visualizar el historial de despliegues

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 obtener más información sobre cómo visualizar los despliegues hacia los ambientes, consulta la sección "Ver el historial de despliegue".

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 obtener más información, consulta la sección "Utilizar la gráfica de visualización".

También puedes ver las bitácoras de cada ejecución de flujo de trabajo y el historial de estos. Para obtener más información, consulta la sección "Visualizar el historial de ejecuciones de un flujo de trabajo".

Rastrear los despliegues a través de las apps

Si tu cuenta personal u organización de GitHub.com está integrada con Microsoft Teams o Slack, puedes rastrear los despliegues que utilizan ambientes a través de estos programas. Por ejemplo, puedes recibir notificaciones a través de la app cuando la aprobación de un despliegue está pendiente, cuando está aprobado o cuando cambia su estado. Para obtener más información sobre cómo integrar Microsoft Teams o Slack, consulta la sección "Extensiones e integraciones de GitHub".

También puedes crear una app que utilice despliegues y webhooks de estados de despliegues para rastrearlos. Cuando se ejecuta un job de flujo de trabajo que referencia un ambiente, este crea un objeto de despliegue con la propiedad environment configurada en el nombre de tu ambiente. Conforme progrese el flujo de trabajo, este también creará objetos de estado de despliegue con la propiedad environment configurada en el nombre de tu ambiente, la propiedad environment_url configurada para la URL del mismo (si se especificó en el flujo de trabajo) y la propiedad state configurada en el estado del job. Para obtener más información, consulta las secciones "Apps" y "Eventos y cargas útiles de los webhooks".

Elegir un ejecutor

Puedes ejecutar tu flujo de trabajo de despliegue en los ejecutores hospedados en GitHub o en los auto-hospedados. El tráfico de los ejecutores hospedados en GitHub puede venir desde un rango amplio de direcciones de red. Si estás desplegando hacia un ambiente interno y tu empresa restringe el tráfico externo en las redes privadas, los flujos de trabajo de GitHub Actions que se ejecutan en los ejecutores hospedados en GitHub podrían no tener la capacidad de comunicarse con tus recursos o servicios internos. Para superar esto, puedes hospedar tus propios ejecutores. Para obtener más información, consulta las secciones "Acerca de los ejecutores auto-hospedados" y "Acercad e los ejecutores hospedados en GitHub".

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 una insignia de estado es el archivo README.md de tu repositorio, pero puedes agregarlo a cualquier página web que quieras. Predeterminadamente, las insignias muestran el estado de tu rama predeterminada. También puedes mostrar el estado de la ejecución de un flujo de trabajo para una rama o evento específicos utilizando los parámetros de query branch y event en la URL.

ejemplo de insignia de estado

Para obtener más información, consulta la sección "Agregar una insignia 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 ofrece flujos de trabajo iniciales para el despliegue para varios servicios populares tales como Azure Web App. Para aprender cómo comenzar a utilizar un flujo de trabajo inicial, consulta las secciones "Utilizar flujos de trabajo iniciales" o "buscar en la lista completa de flujos de trabajo iniciales para despliegue. También puedes verificar nuestras guías más detalladas para flujos de trabajo de despliegue específicos, tal como "Desplegar hacia Azure App Service".

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