diff --git a/.github/workflows/CD.yaml b/.github/workflows/CD.yaml index 279fab6..4ec1843 100644 --- a/.github/workflows/CD.yaml +++ b/.github/workflows/CD.yaml @@ -58,7 +58,13 @@ jobs: # Build pnpm build - # Restart pm2 - pm2 startOrReload apps/server/ecosystem.config.js --env production + # Restart first instance + pm2 restart harmony-api --env production || pm2 start apps/server/ecosystem.config.js --env production + + # Wait for server to start + sleep 5 + + # Restart second instance + pm2 restart harmony-api2 --env production || pm2 start apps/server/ecosystem.config.js --env production echo "Deployment Success" diff --git a/apps/server/ecosystem.config.js b/apps/server/ecosystem.config.js index 0933e77..7996231 100644 --- a/apps/server/ecosystem.config.js +++ b/apps/server/ecosystem.config.js @@ -1,29 +1,41 @@ require('dotenv').config(); +const commonEnv = { + DATABASE_HOST: process.env.DATABASE_HOST, + DATABASE_PORT: process.env.DATABASE_PORT, + DATABASE_NAME: process.env.DATABASE_NAME, + DATABASE_PASSWORD: process.env.DATABASE_PASSWORD, + DATABASE_USER: process.env.DATABASE_USER, + JWT_ACCESS_TOKEN_SECRET: process.env.JWT_ACCESS_TOKEN_SECRET, + JWT_ACCESS_TOKEN_TIME: process.env.JWT_ACCESS_TOKEN_TIME, + JWT_REFRESH_TOKEN_SECRET: process.env.JWT_REFRESH_TOKEN_SECRET, + JWT_REFRESH_TOKEN_TIME: process.env.JWT_REFRESH_TOKEN_TIME, + OBJECT_STORAGE_ACCESS_KEY: process.env.OBJECT_STORAGE_ACCESS_KEY, + OBJECT_STORAGE_SECRET_KEY: process.env.OBJECT_STORAGE_SECRET_KEY, + OBJECT_STORAGE_REGION: process.env.OBJECT_STORAGE_REGION, + OBJECT_STORAGE_BUCKET_NAME: process.env.OBJECT_STORAGE_BUCKET_NAME, + OBJECT_STORAGE_ENDPOINT: process.env.OBJECT_STORAGE_ENDPOINT, +}; + module.exports = [ { name: 'harmony-api', script: 'apps/server/dist/src/main.js', - instances: 2, - exec_mode: 'cluster', + instances: 1, env: { NODE_ENV: 'production', + PORT: 3000, }, - env_production: { - DATABASE_HOST: process.env.DATABASE_HOST, - DATABASE_PORT: process.env.DATABASE_PORT, - DATABASE_NAME: process.env.DATABASE_NAME, - DATABASE_PASSWORD: process.env.DATABASE_PASSWORD, - DATABASE_USER: process.env.DATABASE_USER, - JWT_ACCESS_TOKEN_SECRET: process.env.JWT_ACCESS_TOKEN_SECRET, - JWT_ACCESS_TOKEN_TIME: process.env.JWT_ACCESS_TOKEN_TIME, - JWT_REFRESH_TOKEN_SECRET: process.env.JWT_REFRESH_TOKEN_SECRET, - JWT_REFRESH_TOKEN_TIME: process.env.JWT_REFRESH_TOKEN_TIME, - OBJECT_STORAGE_ACCESS_KEY: process.env.OBJECT_STORAGE_ACCESS_KEY, - OBJECT_STORAGE_SECRET_KEY: process.env.OBJECT_STORAGE_SECRET_KEY, - OBJECT_STORAGE_REGION: process.env.OBJECT_STORAGE_REGION, - OBJECT_STORAGE_BUCKET_NAME: process.env.OBJECT_STORAGE_BUCKET_NAME, - OBJECT_STORAGE_ENDPOINT: process.env.OBJECT_STORAGE_ENDPOINT, + env_production: commonEnv, + }, + { + name: 'harmony-api2', + script: 'apps/server/dist/src/main.js', + instances: 1, + env: { + NODE_ENV: 'production', + PORT: 3001, }, + env_production: commonEnv, }, ];