Deploying with GitHub Actions

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

Nota: El GitHub Actions se encuentra actualmente en beta para GitHub AE.

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

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

También puedes crear una app que utilice despliegues y webhooks de estados de despliegues para rastrearlos. When a workflow job that references an environment runs, it creates a deployment object with the environment property set to the name of your environment. As the workflow progresses, it also creates deployment status objects with the environment property set to the name of your environment, the environment_url property set to the URL for environment (if specified in the workflow), and the state property set to the status of the job. Para obtener más información, consulta las secciones "Apps" y "Eventos y cargas útiles de los webhooks".

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".

Pasos siguientes

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

GitHub AE ofrece plantillas de flujo de trabajo de DC para varios servicios populares, tal como Azure Web App. Para aprender cómo comenzar a utilizar una plantilla de flujo de trabajo, consulta la sección "Utilizar plantillas de flujo de trabajo" o busca en la lista completa de plantillas de flujo de trabajo de 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.

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.