This commit is contained in:
2026-05-14 21:02:17 +01:00
parent c165c97d9c
commit ba487d1f8b
2 changed files with 26 additions and 6 deletions
+8 -1
View File
@@ -85,7 +85,7 @@ The default deploy flow is:
```sh ```sh
git pull --ff-only git pull --ff-only
npm install --include=dev npm install --production=false --include=dev --omit=optional
npm run build npm run build
pm2 reload tssbot-web --update-env pm2 reload tssbot-web --update-env
``` ```
@@ -94,6 +94,13 @@ Only processes listed in `PM2_RESTART_TARGETS` are reloaded. The default is
`tssbot-web`, so unrelated PM2 processes are left alone. The webhook exits after `tssbot-web`, so unrelated PM2 processes are left alone. The webhook exits after
24 hours so PM2 restarts it cleanly. 24 hours so PM2 restarts it cleanly.
When webhook code changes are deployed, restart the webhook process once so PM2
loads the updated listener:
```sh
pm2 reload tssbot-webhook --update-env
```
The webhook listener reads `.env` on startup. To send a Discord notification The webhook listener reads `.env` on startup. To send a Discord notification
whenever the listener starts or restarts, set: whenever the listener starts or restarts, set:
+18 -5
View File
@@ -97,6 +97,23 @@ function run(command, args, options = {}) {
}) })
} }
async function ensureBuildDependencies() {
await run('npm', ['install', '--production=false', '--include=dev', '--omit=optional'], {
env: {
NODE_ENV: 'development',
npm_config_include: 'dev',
npm_config_omit: 'optional',
npm_config_production: 'false',
},
})
try {
require.resolve('@vitejs/plugin-react')
} catch {
throw new Error('@vitejs/plugin-react is missing after npm install; dev dependencies were not installed')
}
}
function postDiscordWebhook(payload) { function postDiscordWebhook(payload) {
if (!DISCORD_WEBHOOK_URL) return Promise.resolve() if (!DISCORD_WEBHOOK_URL) return Promise.resolve()
@@ -162,11 +179,7 @@ function notifyDiscordRestart() {
async function deploy() { async function deploy() {
await run('git', ['pull', '--ff-only']) await run('git', ['pull', '--ff-only'])
await run('npm', ['install', '--include=dev'], { await ensureBuildDependencies()
env: {
npm_config_production: 'false',
},
})
await run('npm', ['run', 'build']) await run('npm', ['run', 'build'])
for (const target of RESTART_TARGETS) { for (const target of RESTART_TARGETS) {