Node.js: Despliegue con GitHub Actions
Aprenda cómo 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 facilita la automatización de tareas como el despliegue de su código Node.js en servidores de producción. En esta guía, le mostraremos cómo puede desplegar su aplicación Node.js de forma segura y fiable tanto en entornos de staging como de producción utilizando GitHub Actions.
Le recomendamos mantener dos ramas: staging y production. Cuando haga push de código a cualquiera de estas ramas, sus cambios se desplegarán automáticamente en el servicio Stackhero correspondiente.
Disponer de una instancia de staging es opcional. Puede seguir esta guía utilizando únicamente una instancia de producción. Para facilitar los despliegues y validar los cambios antes de pasar a producción, es muy recomendable mantener entornos de staging y producción. Este enfoque está ampliamente adoptado en el sector y ayuda a evitar problemas comunes de despliegue.
Antes de empezar, asegúrese de tener una cuenta de GitHub y un repositorio que aloje su código Node.js.
Crear los servicios Node.js
Primero, inicie sesión en su panel de Stackhero y cree dos servicios Stackhero: uno para staging y otro para producción. Para mayor claridad, puede nombrar estos servicios "Staging" y "Production".
Si 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 unos pocos clics.
Ejemplo de servicios Node.js
Configurar las claves SSH
Las claves SSH permiten que GitHub Actions se conecte de forma segura a su servicio Node.js al desplegar el código. Este paso es fundamental para proteger sus servicios Stackhero.
En su ordenador, puede generar nuevas claves SSH con:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Añadir la clave pública
Para ver la clave pública que acaba de crear, ejecute:
cat /tmp/ssh_key.pub
A continuación, en su panel de Stackhero, seleccione su servicio Node.js de producción y haga clic en el botón Configure.
Obtener la configuración del servicio
Continúe con estos pasos:
- En SSH public keys, haga clic en Add a public key.
- En Description, introduzca
GitHub Action. - En Key, pegue la clave pública que copió anteriormente.
Obtener la configuración del servicio
Añadir la clave privada
Ahora, cambie a GitHub y abra el repositorio de su proyecto. Haga clic en Settings y seleccione Environments. Elija New environment.
Configuración de entornos en GitHub
Introduzca "production" como Name y confirme.
Definir el entorno
Haga clic en el botón No restriction y seleccione Selected branches and tags.
Definir restricciones del entorno
Ahora haga clic en Add deployment branch or tag rule, introduzca "production" en el campo Name pattern y haga clic en Add rule.
Definir la rama del entorno
Definir la rama del entorno
En Environment secrets, haga clic en Add secret.
Añadir secreto
Para recuperar la clave privada que generó, ejecute:
cat /tmp/ssh_key
En GitHub, utilice STACKHERO_SSH_PRIVATE_KEY como Name y pegue su clave privada en el campo Value.
Definir el secreto de la clave privada SSH
Después, en Environment variables, haga clic en Add variable.
Definir variables
Introduzca STACKHERO_ENDPOINT como Name y pegue el endpoint de su servicio Node.js en el campo Value. Puede encontrar este endpoint en su panel de Stackhero.
Definir la variable endpoint
Si ha configurado un dominio personalizado para su servicio, utilice su dominio personalizado en lugar de <XXXXXX>.stackhero-network.com.
Eliminar las claves generadas
Por seguridad, es recomendable eliminar las claves SSH de su ordenador una vez que las haya configurado en Stackhero y GitHub:
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurar el workflow de GitHub Actions
Dentro de su repositorio Git, cree un directorio .github/workflows si aún no existe. Después, añada un archivo llamado deploy-to-stackhero.yml:
# File: .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 activan la acción de despliegue. Asegúrese de que existe un entorno en GitHub (en "Settings" > "Environments") para cada rama.
# Después, añada el secreto STACKHERO_SSH_PRIVATE_KEY y la variable STACKHERO_ENDPOINT correspondientes 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 }}
Una vez creado el archivo de workflow, puede confirmar sus cambios así:
git add -A .
git commit -m "Añadir GitHub Actions para desplegar en Stackhero"
Para crear una rama de producción, ejecute:
git checkout -b production
Luego suba sus cambios a GitHub:
git push --set-upstream origin production
Este push envía su código a la rama production y activa GitHub Actions para desplegar su código en el servicio Stackhero. Para comprobar el despliegue, abra su proyecto en GitHub y haga clic en Actions.
GitHub Actions que ha desplegado en producción
Eso es todo. Su código ya está preparado para el despliegue automático en producción mediante GitHub Actions.
Crear el entorno de staging
La configuración del entorno de staging es prácticamente igual que la de producción. Simplemente repita los pasos anteriores, sustituyendo production por staging cuando corresponda.
Comience creando una rama de staging:
git checkout -b staging
Luego suba su rama de staging a GitHub:
git push --set-upstream origin staging
GitHub Actions desplegará automáticamente su rama staging en el servicio Node.js correspondiente.
Más allá del despliegue básico
Es recomendable proteger las ramas production y staging para evitar pushes directos. En su lugar, puede crear una pull request hacia la rama de staging y fusionar los cambios desde su rama de desarrollo. Una vez validados los cambios en la plataforma de staging, fusione la pull request en la rama production.
Este flujo de trabajo ayuda a garantizar que solo los colaboradores autorizados puedan hacer push en las ramas de staging y producción, y añade una capa extra de validación antes de que las nuevas funcionalidades lleguen a producción.