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.
Creación de los servicios Node.js
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.js
Configurar claves SSH
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 ""
Configurar la clave pública
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 servicio
A continuación:
- En Claves públicas SSH, haga clic en Agregar una clave pública.
- Para Descripción, ingrese
GitHub Action. - Para Clave, pegue la clave pública que recuperó.
Obtener configuración del servicio
Configurar la clave privada
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 GitHub
Ingrese "production" para el Nombre y confirme su acción.
Configuración del entorno
Haga clic en el botón No restriction, luego elija Selected branches and tags.
Configuració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 entorno
Configuración de la rama de entorno
A continuación, en Environment secrets, haga clic en Add secret.
Agregar 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 SSH
Luego, en Environment variables, haga clic en Add variable.
Configuració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ón
Si ha personalizado el nombre de dominio de su servicio, use la versión personalizada en lugar de xxxxxx.stackhero-network.com.
Eliminar las claves generadas
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
Configurar el flujo de trabajo de GitHub Actions
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ón
¡Felicidades! Su código ahora está configurado para el despliegue automático en producción a través de GitHub Actions.
Creación del entorno de staging
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.
Ir más allá
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.