diff --git a/.gitea/workflows/deploy-to-prod.yml b/.gitea/workflows/deploy-to-prod.yml index 5a7475d..02efef7 100644 --- a/.gitea/workflows/deploy-to-prod.yml +++ b/.gitea/workflows/deploy-to-prod.yml @@ -158,7 +158,7 @@ jobs: else echo "Version mismatch (Running: $RUNNING_VERSION -> Deployed: $NEW_VERSION) or app not running. Reloading PM2..." fi - pm2 startOrReload ecosystem.config.cjs --env production && pm2 save + pm2 startOrReload ecosystem.config.cjs --env production --update-env && pm2 save echo "Production backend server reloaded successfully." else echo "Version $NEW_VERSION is already running. Skipping PM2 reload." diff --git a/.gitea/workflows/deploy-to-test.yml b/.gitea/workflows/deploy-to-test.yml index cd3b4e9..c6942a1 100644 --- a/.gitea/workflows/deploy-to-test.yml +++ b/.gitea/workflows/deploy-to-test.yml @@ -406,7 +406,7 @@ jobs: # Use `startOrReload` with the ecosystem file. This is the standard, idempotent way to deploy. # It will START the process if it's not running, or RELOAD it if it is. # We also add `&& pm2 save` to persist the process list across server reboots. - pm2 startOrReload ecosystem.config.cjs --env test && pm2 save + pm2 startOrReload ecosystem.config.cjs --env test --update-env && pm2 save echo "Test backend server reloaded successfully." # After a successful deployment, update the schema hash in the database. diff --git a/.gitea/workflows/manual-deploy-major.yml b/.gitea/workflows/manual-deploy-major.yml index cc95be6..0e29cda 100644 --- a/.gitea/workflows/manual-deploy-major.yml +++ b/.gitea/workflows/manual-deploy-major.yml @@ -157,7 +157,7 @@ jobs: else echo "Version mismatch (Running: $RUNNING_VERSION -> Deployed: $NEW_VERSION) or app not running. Reloading PM2..." fi - pm2 startOrReload ecosystem.config.cjs --env production && pm2 save + pm2 startOrReload ecosystem.config.cjs --env production --update-env && pm2 save echo "Production backend server reloaded successfully." else echo "Version $NEW_VERSION is already running. Skipping PM2 reload." diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs index 7d4fd6f..b790a83 100644 --- a/ecosystem.config.cjs +++ b/ecosystem.config.cjs @@ -3,6 +3,18 @@ // It allows us to define all the settings for our application in one place. // The .cjs extension is required because the project's package.json has "type": "module". +// --- Environment Variable Validation --- +const requiredSecrets = ['DB_HOST', 'JWT_SECRET', 'GEMINI_API_KEY']; +const missingSecrets = requiredSecrets.filter(key => !process.env[key]); + +if (missingSecrets.length > 0) { + console.warn('\n[ecosystem.config.cjs] ⚠️ WARNING: The following environment variables are MISSING in the shell:'); + missingSecrets.forEach(key => console.warn(` - ${key}`)); + console.warn('[ecosystem.config.cjs] The application may crash if these are required for startup.\n'); +} else { + console.log('[ecosystem.config.cjs] ✅ Critical environment variables are present.'); +} + module.exports = { apps: [ {