mirror of
https://github.com/ershisan99/coolify.git
synced 2025-12-24 04:59:32 +00:00
43 lines
1.6 KiB
TypeScript
43 lines
1.6 KiB
TypeScript
import { prisma } from '$lib/database';
|
|
import { buildQueue } from '.';
|
|
import got from 'got';
|
|
import { asyncExecShell, version } from '$lib/common';
|
|
import compare from 'compare-versions';
|
|
import { dev } from '$app/env';
|
|
|
|
export default async function (): Promise<void> {
|
|
try {
|
|
const currentVersion = version;
|
|
const { isAutoUpdateEnabled } = await prisma.setting.findFirst();
|
|
if (isAutoUpdateEnabled) {
|
|
const versions = await got
|
|
.get(
|
|
`https://get.coollabs.io/versions.json?appId=${process.env['COOLIFY_APP_ID']}&version=${currentVersion}`
|
|
)
|
|
.json();
|
|
const latestVersion = versions['coolify'].main.version;
|
|
const isUpdateAvailable = compare(latestVersion, currentVersion);
|
|
if (isUpdateAvailable === 1) {
|
|
const activeCount = await buildQueue.getActiveCount();
|
|
if (activeCount === 0) {
|
|
if (!dev) {
|
|
await buildQueue.pause();
|
|
console.log(`Updating Coolify to ${latestVersion}.`);
|
|
await asyncExecShell(`docker pull coollabsio/coolify:${latestVersion}`);
|
|
await asyncExecShell(`env | grep COOLIFY > .env`);
|
|
await asyncExecShell(
|
|
`docker run --rm -tid --env-file .env -v /var/run/docker.sock:/var/run/docker.sock -v coolify-db coollabsio/coolify:${latestVersion} /bin/sh -c "env | grep COOLIFY > .env && echo 'TAG=${latestVersion}' >> .env && docker stop -t 0 coolify coolify-redis && docker rm coolify coolify-redis && docker compose up -d --force-recreate"`
|
|
);
|
|
} else {
|
|
await buildQueue.pause();
|
|
console.log('Updating (not really in dev mode).');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} catch (error) {
|
|
await buildQueue.resume();
|
|
console.log(error);
|
|
}
|
|
}
|