mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-22 11:06:02 +00:00
Merge branch 'master' into feature/duckdb-2
This commit is contained in:
@@ -1,74 +1,3 @@
|
|||||||
const axios = require('axios');
|
function startCloudUpgradeTimer() {}
|
||||||
const fs = require('fs');
|
|
||||||
const fsp = require('fs/promises');
|
|
||||||
const semver = require('semver');
|
|
||||||
const currentVersion = require('../currentVersion');
|
|
||||||
const { getLogger, extractErrorLogData } = require('dbgate-tools');
|
|
||||||
const { storageReadConfig } = require('../controllers/storageDb');
|
|
||||||
|
|
||||||
const logger = getLogger('cloudUpgrade');
|
|
||||||
|
|
||||||
async function checkCloudUpgrade() {
|
|
||||||
try {
|
|
||||||
if (process.env.STORAGE_DATABASE) {
|
|
||||||
const settings = await storageReadConfig('settings');
|
|
||||||
if (settings['cloud.useAutoUpgrade'] != 1) {
|
|
||||||
// auto-upgrade not allowed
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const resp = await axios.default.get('https://api.github.com/repos/dbgate/dbgate/releases/latest');
|
|
||||||
const json = resp.data;
|
|
||||||
const version = json.name.substring(1);
|
|
||||||
let cloudDownloadedVersion = null;
|
|
||||||
try {
|
|
||||||
cloudDownloadedVersion = await fsp.readFile(process.env.CLOUD_UPGRADE_FILE + '.version', 'utf-8');
|
|
||||||
} catch (err) {
|
|
||||||
cloudDownloadedVersion = null;
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
semver.gt(version, currentVersion.version) &&
|
|
||||||
(!cloudDownloadedVersion || semver.gt(version, cloudDownloadedVersion))
|
|
||||||
) {
|
|
||||||
logger.info(`New version available: ${version}`);
|
|
||||||
const zipUrl = json.assets.find(x => x.name == 'cloud-build.zip').browser_download_url;
|
|
||||||
|
|
||||||
const writer = fs.createWriteStream(process.env.CLOUD_UPGRADE_FILE);
|
|
||||||
|
|
||||||
const response = await axios.default({
|
|
||||||
url: zipUrl,
|
|
||||||
method: 'GET',
|
|
||||||
responseType: 'stream',
|
|
||||||
});
|
|
||||||
|
|
||||||
response.data.pipe(writer);
|
|
||||||
|
|
||||||
await new Promise((resolve, reject) => {
|
|
||||||
writer.on('finish', resolve);
|
|
||||||
writer.on('error', reject);
|
|
||||||
});
|
|
||||||
await fsp.writeFile(process.env.CLOUD_UPGRADE_FILE + '.version', version);
|
|
||||||
|
|
||||||
logger.info(`Downloaded new version from ${zipUrl}`);
|
|
||||||
} else {
|
|
||||||
logger.info(
|
|
||||||
`Checked version ${version} is not newer than ${
|
|
||||||
cloudDownloadedVersion ?? currentVersion.version
|
|
||||||
}, upgrade skippped`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
logger.error(extractErrorLogData(err), 'Error checking cloud upgrade');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function startCloudUpgradeTimer() {
|
|
||||||
// at first in 5 seconds
|
|
||||||
setTimeout(checkCloudUpgrade, 5000);
|
|
||||||
|
|
||||||
// hourly
|
|
||||||
setInterval(checkCloudUpgrade, 60 * 60 * 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = startCloudUpgradeTimer;
|
module.exports = startCloudUpgradeTimer;
|
||||||
|
|||||||
Reference in New Issue
Block a user