Despliega tu aplicación NodeJS o Typescript con PM2
victorargento
Posted on June 2, 2022
¿Qué es PM2?
PM2 es un gestor de procesos que te ayuda a gestionar y mantener tu aplicación en línea y con Github Actions podremos desplegar nuestra aplicación totalmente gratis y manera sencilla.
Uniendo estas dos herramientas crearemos una pipeline con la cual desplegaremos nuestra aplicación. Para ello, tendremos que configurar nuestro repositorio con los siguientes pasos:
- Creamos la carpeta github/workflows
- Dentro generaremos el archivo action.yml (El nombre no tiene importancia). A continuación, dejaré una muestra de una action en la que comprobamos primero nuestro código con la ejecución de unos test unitarios, y si hemos tenido éxito desplegaremos nuestro código en el servidor.
- Lo más seguro es que tengamos que generar unos secrets en Github para no comprometer información vulnerable como pueden ser usuario o contraseñas.
name: Test & Deploy
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '16'
- run: npm install
- run: npm run test
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy app
uses: victorargento/pm2-deployment@main
with:
remote-path: "/deployment/api"
host: 12.34.56.78
username: ${{ secrets.prod-user }}
port: 2080
password: ${{ secrets.prod-password }}
pm2-id: "api"
build : "true"
PM2 Deployment
La action que utilizamos para desplegar es un fork de Node VPS Deployment, a la cual he añadido funcionalidades para que se pueda hacer una build de Typescript y utilice reload en vez de restart.
Emplear reload en vez de restart en una aplicación que es un servidor web, es mucho mejor, ya que restart es una forma más agresiva de reiniciar nuestra aplicación. Aquí puedes consultar más información acerca de ello.
Puedes darle una estrella a mi proyecto aquí ✌.
Posted on June 2, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.