I have a nodejs code that i want to write a CICD pipeline in Gitlab. I installed gitlab-runner executor “shell” on my server and my .gitlab-ci.yml is as below:
variables:
GIT_CLEAN_FLAGS: none
stages:
- build
- deploy
cache:
paths:
- node_modules/
build:
script:
- "ls -la"
- "npm install"
stage: build
tags:
- backend
deploy:
tags:
- backend
stage: deploy
environment:
name: deploy
script:
- "pm2 restart backend"
I run my code once at the beginning manually on my target server and then I restart the process with pm2. The reason I use pm2 instead of “node server.js” is that when is run my code with “node” the job never terminated as someone said in this link :GitLab CI stuck on running NodeJS server so I use pm2 to run my process in background and job terminate.
It works fine but when my server goes down then comes up after , I have an error that this process doesnot exist. Is there any better approach that i can use instead of this to prevent this problem?