Harden platform security, reliability, and CI after full audit.
Close deployment IDOR and gate stub payment endpoints, add production secret validation, health probes, Redis-backed build progress, GitHub Actions CI, expanded tests, billing/k8s refactors, and ops runbooks. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env node
|
||||
/**
|
||||
* Copy SQL migrations from backend/migrations/ into the Helm chart ConfigMap source.
|
||||
* Run after adding or editing migration files: npm run sync:migrations
|
||||
*/
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
const sourceDir = path.resolve(__dirname, '../migrations');
|
||||
const targetDir = path.resolve(__dirname, '../helm/cloudhost-platform/migrations');
|
||||
|
||||
if (!fs.existsSync(sourceDir)) {
|
||||
console.error(`Source not found: ${sourceDir}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
fs.mkdirSync(targetDir, { recursive: true });
|
||||
|
||||
const files = fs.readdirSync(sourceDir).filter((f) => f.endsWith('.sql')).sort();
|
||||
for (const file of files) {
|
||||
fs.copyFileSync(path.join(sourceDir, file), path.join(targetDir, file));
|
||||
}
|
||||
|
||||
// Remove stale SQL files no longer in source
|
||||
for (const existing of fs.readdirSync(targetDir)) {
|
||||
if (existing.endsWith('.sql') && !files.includes(existing)) {
|
||||
fs.unlinkSync(path.join(targetDir, existing));
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`Synced ${files.length} migration(s) to ${targetDir}`);
|
||||
Reference in New Issue
Block a user