| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- const fs = require("fs");
- const childProcess = require("child_process");
- const server = "54.248.167.86";
- const os = require("os");
- const path = require("path");
- const domain = /VITE_API_DOMAIN=(?<domain>.*)/.exec(
- fs.readFileSync(".env").toString()
- )?.groups.domain;
- const webdomain = /VITE_WEB_DOMAIN=(?<webdomain>.*)/.exec(
- fs.readFileSync(".env").toString()
- )?.groups.webdomain;
- if (!domain || !webdomain) {
- console.log("error domain");
- process.exit(-1);
- }
- console.log(domain, webdomain);
- function upload(src, dest) {
- console.log(`scp ${src} root@${server}:${dest}`);
- return new Promise((resolve, reject) => {
- const p = childProcess.spawn(`scp`, [
- "-o",
- "StrictHostKeyChecking=no",
- src,
- `root@${server}:${dest}`,
- ]);
- p.stdout.on("data", (data) => {
- console.log(data.toString());
- });
- p.stderr.on("data", (data) => {
- console.error(data.toString());
- });
- p.on("exit", (signal) => {
- if (signal === 0) resolve();
- else reject(`scp exit with code: ${signal}`);
- });
- });
- }
- function exec(cmd) {
- console.log(`ssh root@${server} ${cmd}`);
- return new Promise((resolve, reject) => {
- const p = childProcess.spawn(`ssh`, [
- "-o",
- "StrictHostKeyChecking=no",
- `root@${server}`,
- cmd,
- ]);
- p.stdout.on("data", (data) => {
- console.log(data.toString());
- });
- p.stderr.on("data", (data) => {
- console.error(data.toString());
- });
- p.on("exit", (signal) => {
- if (signal === 0) resolve();
- else reject(`ssh exit with code: ${signal}`);
- });
- });
- }
- function rsync() {
- console.log(
- `rsync --exclude='node_modules/' -ravzh --delete -e "ssh -o StrictHostKeyChecking=no" ./public/ root@54.248.167.86:/var/www/tg-web-fish/`
- );
- return new Promise((resolve, reject) => {
- const p = childProcess.spawn(`rsync`, [
- "--exclude='node_modules/'",
- "-ravzh",
- "--delete",
- "-e",
- "ssh -o StrictHostKeyChecking=no",
- "./public/",
- `root@${server}:/var/www/tg-web-fish/`,
- ]);
- p.stdout.on("data", (data) => {
- console.log(data.toString());
- });
- p.stderr.on("data", (data) => {
- console.error(data.toString());
- });
- p.on("exit", (signal) => {
- if (signal === 0) resolve();
- else reject(`rsync exit with code: ${signal}`);
- });
- });
- }
- function build(){
- return new Promise((resolve, reject) => {
- const p = childProcess.spawn(`node`, ["build.js"]);
- p.stdout.on("data", (data) => {
- console.log(data.toString());
- });
- p.stderr.on("data", (data) => {
- console.error(data.toString());
- });
- p.on("exit", (signal) => {
- if (signal === 0) resolve();
- else reject(`node build.js exit with code: ${signal}`);
- });
- });
- }
- const tmpDir = fs.mkdtempSync(os.tmpdir());
- const api_conf_tmp = path.join(tmpDir, "api.conf");
- const [part1, part2] = domain.split(".");
- fs.writeFileSync(
- api_conf_tmp,
- fs
- .readFileSync("nginx_conf/api.conf")
- .toString()
- .replace("{part1}", part1)
- .replace("{part2}", part2)
- );
- console.log(api_conf_tmp);
- const web_conf_tmp = path.join(tmpDir, "web.conf");
- fs.writeFileSync(
- web_conf_tmp,
- fs
- .readFileSync("nginx_conf/web.conf")
- .toString()
- .replace("{webdomain}", webdomain)
- );
- upload(api_conf_tmp, "/etc/openresty/conf.d/api.conf")
- .then(() => {
- return upload(web_conf_tmp, "/etc/openresty/conf.d/web.conf");
- })
- .then(() => {
- return exec("openresty -T");
- })
- .then(() => {
- return exec("openresty -s reload");
- })
- .then(() => {
- return build();
- })
- .then(() => {
- return rsync();
- })
- .catch((e) => {
- console.log(e);
- });
|