implementing new payment system + rewrite deploy scripts

This commit is contained in:
Emily
2025-03-28 16:57:57 +01:00
parent 7658dbe85c
commit 7e093251fa
14 changed files with 265 additions and 124 deletions

View File

@@ -1,87 +1,94 @@
// import fs from 'fs-extra';
// import path from 'path';
// import child from 'child_process';
// import { createZip } from '../helpers/zip-helper';
// import { DeployHelper } from '../helpers/deploy-helper';
// import { DATABASE_CONNECTION_STRING_PRODUCTION, DATABASE_CONNECTION_STRING_TESTMODE, REMOTE_HOST_TESTMODE } from '../.config';
import fs from 'fs-extra';
import path from 'path';
import child from 'child_process';
import { createZip } from '../helpers/zip-helper';
import { DeployHelper } from '../helpers/deploy-helper';
import { DATABASE_CONNECTION_STRING_PRODUCTION, DATABASE_CONNECTION_STRING_TESTMODE, REMOTE_HOST_TESTMODE, STRIPE_PRIVATE_KEY_PRODUCTION, STRIPE_PRIVATE_KEY_TESTMODE, STRIPE_WEBHOOK_SECRET_PRODUCTION, STRIPE_WEBHOOK_SECRET_TESTMODE } from '../.config';
// const TMP_PATH = path.join(__dirname, '../../tmp');
// const LOCAL_PATH = path.join(__dirname, '../../consumer');
// const REMOTE_PATH = '/home/litlyx/consumer';
// const ZIP_NAME = 'consumer.zip';
const TMP_PATH = path.join(__dirname, '../../tmp');
const LOCAL_PATH = path.join(__dirname, '../../payments');
const REMOTE_PATH = '/home/litlyx/payments';
const ZIP_NAME = 'payments.zip';
// const MODE = DeployHelper.getMode();
// const SKIP_BUILD = DeployHelper.getArgAt(0) == '--no-build';
const MODE = DeployHelper.getMode();
const SKIP_BUILD = DeployHelper.getArgAt(0) == '--no-build';
// console.log('Deploying consumer in mode:', MODE);
console.log('Deploying payments in mode:', MODE);
// setTimeout(() => { main(); }, 3000);
setTimeout(() => { main(); }, 3000);
// async function main() {
async function main() {
// if (fs.existsSync(TMP_PATH)) fs.rmSync(TMP_PATH, { force: true, recursive: true });
// fs.ensureDirSync(TMP_PATH);
if (fs.existsSync(TMP_PATH)) fs.rmSync(TMP_PATH, { force: true, recursive: true });
fs.ensureDirSync(TMP_PATH);
// if (!SKIP_BUILD) {
// console.log('Building');
// child.execSync(`cd ${LOCAL_PATH} && pnpm run build`);
// }
if (!SKIP_BUILD) {
console.log('Building');
child.execSync(`cd ${LOCAL_PATH} && pnpm run build`);
}
// console.log('Creting zip file');
// const archive = createZip(TMP_PATH + '/' + ZIP_NAME);
// archive.directory(LOCAL_PATH + '/dist', '/dist');
console.log('Creating zip file');
const archive = createZip(TMP_PATH + '/' + ZIP_NAME);
archive.directory(LOCAL_PATH + '/dist', '/dist');
// if (MODE === 'testmode') {
// const ecosystemContent = fs.readFileSync(LOCAL_PATH + '/ecosystem.config.js', 'utf8');
// const REDIS_URL = ecosystemContent.match(/REDIS_URL: ["'](.*?)["']/)[1];
// const devContent = ecosystemContent
// .replace(REDIS_URL, `redis://${REMOTE_HOST_TESTMODE}`)
// .replace(DATABASE_CONNECTION_STRING_PRODUCTION, `redis://${DATABASE_CONNECTION_STRING_TESTMODE}`);
// archive.append(Buffer.from(devContent), { name: '/ecosystem.config.js' });
// } else {
// archive.file(LOCAL_PATH + '/ecosystem.config.js', { name: '/ecosystem.config.js' })
// }
if (MODE === 'testmode') {
const ecosystemContent = fs.readFileSync(LOCAL_PATH + '/ecosystem.config.js', 'utf8');
const devContent = ecosystemContent
.replace("$MONGO_CONNECTION_STRING$", `${DATABASE_CONNECTION_STRING_TESTMODE}`)
.replace("$STRIPE_PRIVATE_KEY$", `${STRIPE_PRIVATE_KEY_TESTMODE}`)
.replace("$STRIPE_WEBHOOK_SECRET$", `${STRIPE_WEBHOOK_SECRET_TESTMODE}`)
.replace("$STRIPE_TESTMODE$", `true`);
archive.append(Buffer.from(devContent), { name: '/ecosystem.config.js' });
} else {
const ecosystemContent = fs.readFileSync(LOCAL_PATH + '/ecosystem.config.js', 'utf8');
const devContent = ecosystemContent
.replace(DATABASE_CONNECTION_STRING_PRODUCTION, `${DATABASE_CONNECTION_STRING_PRODUCTION}`)
.replace("$STRIPE_PRIVATE_KEY$", `${STRIPE_PRIVATE_KEY_PRODUCTION}`)
.replace("$STRIPE_WEBHOOK_SECRET$", `${STRIPE_WEBHOOK_SECRET_PRODUCTION}`)
.replace("$STRIPE_TESTMODE$", `false`);
archive.append(Buffer.from(devContent), { name: '/ecosystem.config.js' });
}
// archive.file(LOCAL_PATH + '/package.json', { name: '/package.json' });
// archive.file(LOCAL_PATH + '/pnpm-lock.yaml', { name: '/pnpm-lock.yaml' });
// await archive.finalize();
archive.file(LOCAL_PATH + '/package.json', { name: '/package.json' });
archive.file(LOCAL_PATH + '/pnpm-lock.yaml', { name: '/pnpm-lock.yaml' });
await archive.finalize();
// await DeployHelper.connect();
await DeployHelper.connect();
// const { scp, ssh } = DeployHelper.instances();
const { scp, ssh } = DeployHelper.instances();
// console.log('Creating remote structure');
// console.log('Check existing');
// const remoteExist = await scp.exists(REMOTE_PATH);
// console.log('Exist', remoteExist);
// if (remoteExist) {
// console.log('Deleting');
// await DeployHelper.execute(`rm -r ${REMOTE_PATH}`);
// }
console.log('Creating remote structure');
console.log('Check existing');
const remoteExist = await scp.exists(REMOTE_PATH);
console.log('Exist', remoteExist);
if (remoteExist) {
console.log('Deleting');
await DeployHelper.execute(`rm -r ${REMOTE_PATH}`);
}
// console.log('Creating folder');
// await scp.mkdir(REMOTE_PATH);
console.log('Creating folder');
await scp.mkdir(REMOTE_PATH);
// console.log('Uploading zip file');
// await scp.uploadFile(TMP_PATH + '/' + ZIP_NAME, REMOTE_PATH + '/' + ZIP_NAME);
// scp.close();
console.log('Uploading zip file');
await scp.uploadFile(TMP_PATH + '/' + ZIP_NAME, REMOTE_PATH + '/' + ZIP_NAME);
scp.close();
// console.log('Cleaning local');
// fs.rmSync(TMP_PATH + '/' + ZIP_NAME, { force: true, recursive: true });
console.log('Cleaning local');
fs.rmSync(TMP_PATH + '/' + ZIP_NAME, { force: true, recursive: true });
// console.log('Extracting remote');
// await DeployHelper.execute(`cd ${REMOTE_PATH} && unzip ${ZIP_NAME} && rm -r ${ZIP_NAME}`);
console.log('Extracting remote');
await DeployHelper.execute(`cd ${REMOTE_PATH} && unzip ${ZIP_NAME} && rm -r ${ZIP_NAME}`);
// console.log('Installing remote');
// await DeployHelper.execute(`cd ${REMOTE_PATH} && /root/.nvm/versions/node/v21.2.0/bin/pnpm i`);
console.log('Installing remote');
await DeployHelper.execute(`cd ${REMOTE_PATH} && /root/.nvm/versions/node/v21.2.0/bin/pnpm i`);
// console.log('Executing remote');
// await DeployHelper.execute(`cd ${REMOTE_PATH} && /root/.nvm/versions/node/v21.2.0/bin/pm2 start ecosystem.config.js`);
console.log('Executing remote');
await DeployHelper.execute(`cd ${REMOTE_PATH} && /root/.nvm/versions/node/v21.2.0/bin/pm2 start ecosystem.config.js`);
// ssh.dispose();
ssh.dispose();
// }
}

View File

@@ -15,9 +15,8 @@ helper.copy('services/EmailService.ts');
helper.create('schema');
helper.copy('schema/UserSchema.ts');
helper.create('schema/project');
helper.copy('schema/project/ProjectSchema.ts');
helper.copy('schema/PremiumSchema.ts');
helper.copy('schema/UserLimitSchema.ts');
helper.create('data');
helper.copy('data/PLANS.ts');