Node.js: Desplegar con GitHub Actions

Aprenda a desplegar su código Node.js utilizando GitHub Actions

👋 ¡Bienvenido a la documentación de Stackhero!

Stackhero ofrece una solución nube de Node.js lista para usar que proporciona una serie de beneficios, incluyendo:

  • Despliegue su aplicación en segundos con un simple git push.
  • Use su propio nombre de dominio y benefíciese de la configuración automática de certificados HTTPS para una mayor seguridad.
  • Disfrute de la tranquilidad con copias de seguridad automáticas, actualizaciones con un clic, y precios sencillos, transparentes y predecibles.
  • Obtenga un rendimiento óptimo y una seguridad robusta gracias a una VM privada y dedicada.

Ahorre tiempo y simplifique su vida: ¡solo toma 5 minutos probar la solución de alojamiento en la nube de Node.js de Stackhero!

GitHub Actions le permite automatizar tareas como el despliegue de su código Node.js en servidores de producción. En esta guía, le explicaremos cómo desplegar de manera segura y confiable su aplicación Node.js en entornos de staging y producción utilizando GitHub Actions.

Recomendamos mantener dos ramas: staging y production. Cuando se envía código a estas ramas, se despliega automáticamente en el servicio correspondiente de Stackhero.

Tener una instancia de staging no es obligatorio. Puede seguir esta guía solo con una instancia de producción. Sin embargo, para asegurar despliegues fluidos y ganar confianza antes de pasar a producción, se recomienda encarecidamente mantener tanto entornos de staging como de producción. Este enfoque es un estándar de la industria que puede ayudar a prevenir problemas comunes de despliegue.

Antes de comenzar, asegúrese de tener una cuenta de GitHub con un repositorio que aloje su código.

Primero, inicie sesión en su panel de Stackhero y cree dos servicios de Stackhero: uno para staging y otro para producción. Para mayor claridad, puede nombrar estos servicios "Staging" y "Production".

¿Aún no tiene una cuenta de Stackhero? Puede crear una en solo dos minutos de forma gratuita y configurar sus servicios en la nube de Node.js en solo unos clics.

Ejemplo de servicios Node.jsEjemplo de servicios Node.js

Las claves SSH permiten que GitHub Actions se conecte de manera segura a su servicio Node.js al desplegar su código. Este paso es esencial para proteger sus servicios de Stackhero.

En su ordenador, genere nuevas claves SSH con este comando:

ssh-keygen -C "" -f /tmp/ssh_key -N ""

Recupere la clave pública que acaba de generar ejecutando:

cat /tmp/ssh_key.pub

Luego, en el panel de Stackhero, seleccione su servicio Node.js de producción y haga clic en el botón Configurar.

Obtener configuración del servicioObtener configuración del servicio

A continuación:

  1. En Claves públicas SSH, haga clic en Agregar una clave pública.
  2. Para Descripción, ingrese GitHub Action.
  3. Para Clave, pegue la clave pública que recuperó.

Obtener configuración del servicioObtener configuración del servicio

Cambie al sitio web de GitHub y abra el repositorio de su proyecto. Luego, haga clic en Settings y seleccione Environments. Haga clic en New environment.

Configuración de entornos de GitHubConfiguración de entornos de GitHub

Ingrese "production" para el Nombre y confirme su acción.

Configuración del entornoConfiguración del entorno

Haga clic en el botón No restriction, luego elija Selected branches and tags.

Configuración de restricciones de entornoConfiguración de restricciones de entorno

Ahora haga clic en Add deployment branch or tag rule, ingrese "production" en el campo Name pattern, y haga clic en Add rule.

Configuración de la rama de entornoConfiguración de la rama de entorno

Configuración de la rama de entornoConfiguración de la rama de entorno

A continuación, en Environment secrets, haga clic en Add secret.

Agregar secretoAgregar secreto

Recupere la clave privada que generó ejecutando:

cat /tmp/ssh_key

En GitHub, ingrese STACKHERO_SSH_PRIVATE_KEY como Nombre y pegue su clave privada en el campo Valor.

Configuración del secreto de la clave privada SSHConfiguración del secreto de la clave privada SSH

Luego, en Environment variables, haga clic en Add variable.

Configuración de variablesConfiguración de variables

Ingrese STACKHERO_ENDPOINT como Nombre y pegue su punto de conexión del servicio Node.js en el campo Valor. Puede encontrar este punto de conexión en su panel de Stackhero.

Configuración de la variable de punto de conexiónConfiguración de la variable de punto de conexión

Si ha personalizado el nombre de dominio de su servicio, use la versión personalizada en lugar de xxxxxx.stackhero-network.com.

Por razones de seguridad, elimine las claves SSH de su ordenador una vez que las haya configurado en Stackhero y GitHub:

rm /tmp/ssh_key /tmp/ssh_key.pub

Dentro de su repositorio Git, cree un directorio llamado .github/workflows y agregue un archivo llamado deploy-to-stackhero.yml.

# Archivo: .github/workflows/deploy-to-stackhero.yml

name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero

on:
  push:
    # Liste las ramas que desencadenan la acción de despliegue. Asegúrese de que exista un entorno en GitHub (bajo "Settings" > "Environments") para cada rama.
    # Luego agregue el secreto correspondiente STACKHERO_SSH_PRIVATE_KEY y la variable STACKHERO_ENDPOINT en ese entorno.
    branches: [ "production", "staging" ]

jobs:
  Deploy:
    environment: ${{ github.ref_name }}
    runs-on: ubuntu-latest
    steps:
    - uses: stackhero-io/github-actions-deploy-to-stackhero@v1
      with:
        # STACKHERO_SSH_PRIVATE_KEY y STACKHERO_ENDPOINT deben estar configurados en el entorno de GitHub correspondiente.
        ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
        endpoint: ${{ vars.STACKHERO_ENDPOINT }}

Después de crear el archivo de flujo de trabajo, confirme sus cambios con los siguientes comandos:

git add -A .
git commit -m "Agregar GitHub Actions para desplegar en Stackhero"

Cree una rama de producción con:

git checkout -b production

Finalmente, envíe sus cambios a GitHub:

git push --set-upstream origin production

Este envío envía su código a la rama production y desencadena GitHub Actions para desplegar su código en el servicio Stackhero. Para verificar el despliegue, navegue a su proyecto en GitHub y haga clic en Actions.

GitHub Actions que desplegó en producciónGitHub Actions que desplegó en producción

¡Felicidades! Su código ahora está configurado para el despliegue automático en producción a través de GitHub Actions.

La configuración del entorno de staging es similar a la del entorno de producción. Repita los pasos anteriores, reemplazando production por staging según sea necesario.

Comience creando una rama de staging con:

git checkout -b staging

Luego envíe su rama de staging a GitHub:

git push --set-upstream origin staging

GitHub Actions desplegará automáticamente su rama de staging en el servicio Node.js designado.

Es una buena práctica proteger las ramas production y staging para evitar envíos directos. En su lugar, cree una pull request para la rama de staging y fusione los cambios desde su rama de desarrollo. Una vez que haya validado los cambios en la plataforma de staging, fusione la pull request en la rama production.

Este enfoque ayuda a asegurar que solo personas autorizadas puedan enviar a staging y producción. También garantiza que las nuevas características se prueben a fondo antes de pasar a producción.