perf: preserve Docker npm cache - version bumps only touch version.txt, not package.json
continuous-integration/webhook Deploy concluído (VPS4)

This commit is contained in:
VPS 4 Deploy Agent
2026-05-30 16:00:18 +02:00
parent 653654cad4
commit 7f9381169f
3 changed files with 14 additions and 13 deletions
+7 -2
View File
@@ -500,8 +500,13 @@ app.get('/login', (req, res) => {
// Função utilitária de Cache Buster
async function serveHtmlWithCacheBuster(res, filePath) {
try {
const pkg = require('./package.json');
const APP_VERSION = pkg.version || Date.now();
// Lê version.txt (não package.json) para não ter cache-miss no Docker a cada deploy
let APP_VERSION;
try {
APP_VERSION = (await fs.readFile(path.join(__dirname, 'version.txt'), 'utf8')).trim();
} catch (_) {
APP_VERSION = require('./package.json').version || Date.now();
}
let content = await fs.readFile(filePath, 'utf8');
// Injeta versão em tags de script e css
+2 -1
View File
@@ -58,8 +58,9 @@ ssh -o BatchMode=yes -o StrictHostKeyChecking=no "${PROD_USER}@${PROD_VPS}" "
"
# 5. Commit do bump de versão de volta ao Gitea (listener ignora → sem loop)
# package.json não é incluído propositalmente: preserva o cache de npm install no Docker
log "💾 git commit + push do bump de versão..."
git add dental-server/version.txt dental-server/package.json dental-server/public/index.html
git add dental-server/version.txt dental-server/public/index.html
git commit -m "chore(deploy): bump version" || true
git push origin main || true
+5 -10
View File
@@ -5,24 +5,19 @@
const fs = require('fs');
const path = require('path');
const versionFile = path.join(__dirname, 'dental-server', 'version.txt');
const packageFile = path.join(__dirname, 'dental-server', 'package.json');
const indexFile = path.join(__dirname, 'dental-server', 'public', 'index.html');
const versionFile = path.join(__dirname, 'dental-server', 'version.txt');
const indexFile = path.join(__dirname, 'dental-server', 'public', 'index.html');
const current = fs.readFileSync(versionFile, 'utf8').trim();
const parts = current.split('.').map(Number);
parts[2]++; // bump PATCH
const next = parts.join('.');
// version.txt
// version.txt — fonte de verdade do número de versão
fs.writeFileSync(versionFile, next + '\n');
// package.json
const pkg = JSON.parse(fs.readFileSync(packageFile, 'utf8'));
pkg.version = next;
fs.writeFileSync(packageFile, JSON.stringify(pkg, null, 2) + '\n');
// index.html — substitui qualquer v{X.Y.Z} dentro do <span> da sidebar
// index.html — substitui v{X.Y.Z} dentro do <span> da sidebar
// (package.json NÃO é alterado para preservar o cache de npm install no Docker)
let html = fs.readFileSync(indexFile, 'utf8');
html = html.replace(
/(RF Dental.*?<span[^>]*>)\s*v[\d.]+\s*(<\/span>)/s,