DEV Community

Cover image for Despliega tu aplicación NodeJS o Typescript con PM2
victorargento
victorargento

Posted on

Despliega tu aplicación NodeJS o Typescript con PM2

¿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:

  1. Creamos la carpeta github/workflows
  2. 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.
  3. 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"
Enter fullscreen mode Exit fullscreen mode

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í ✌.

Discussion (0)