feat: Use tags in update

This commit is contained in:
Andras Bacsai 2022-02-11 09:00:45 +01:00
parent dbb2241213
commit dec58fd6d1
4 changed files with 42 additions and 40 deletions

View File

@ -2,7 +2,7 @@ version: '3.8'
services: services:
coolify: coolify:
image: coollabsio/coolify:latest image: coollabsio/coolify:${TAG}
restart: always restart: always
container_name: coolify container_name: coolify
ports: ports:

View File

@ -1,7 +1,7 @@
{ {
"name": "coolify", "name": "coolify",
"description": "An open-source & self-hostable Heroku / Netlify alternative.", "description": "An open-source & self-hostable Heroku / Netlify alternative.",
"version": "2.0.3", "version": "2.0.4",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"scripts": { "scripts": {
"dev": "docker-compose -f docker-compose-dev.yaml up -d && NODE_ENV=development svelte-kit dev --host 0.0.0.0", "dev": "docker-compose -f docker-compose-dev.yaml up -d && NODE_ENV=development svelte-kit dev --host 0.0.0.0",
@ -16,6 +16,7 @@
"db:generate": "prisma generate", "db:generate": "prisma generate",
"db:push": "prisma db push && prisma generate", "db:push": "prisma db push && prisma generate",
"db:seed": "prisma db seed", "db:seed": "prisma db seed",
"stagrelease": "cross-var docker build -t coollabsio/coolify:$npm_package_version && docker push coollabsio/coolify:$npm_package_version",
"prerelease": "cross-var docker build -t coollabsio/coolify:$npm_package_version -t coollabsio/coolify:latest .", "prerelease": "cross-var docker build -t coollabsio/coolify:$npm_package_version -t coollabsio/coolify:latest .",
"release:coolify": "cross-var yarn prerelease && docker push coollabsio/coolify:$npm_package_version && docker image push coollabsio/coolify:$npm_package_version && docker push coollabsio/coolify:latest", "release:coolify": "cross-var yarn prerelease && docker push coollabsio/coolify:$npm_package_version && docker image push coollabsio/coolify:$npm_package_version && docker push coollabsio/coolify:latest",
"release:haproxy": "docker build -f haproxy.Dockerfile -t coollabsio/coolify-haproxy-alpine:1.0.0 -t coollabsio/coolify-haproxy-alpine:latest . && docker image push --all-tags coollabsio/coolify-haproxy-alpine", "release:haproxy": "docker build -f haproxy.Dockerfile -t coollabsio/coolify-haproxy-alpine:1.0.0 -t coollabsio/coolify-haproxy-alpine:latest . && docker image push --all-tags coollabsio/coolify-haproxy-alpine",

View File

@ -48,7 +48,7 @@
checking: false, checking: false,
success: null success: null
}; };
let latestVersion = 'latest';
onMount(async () => { onMount(async () => {
if ($session.uid) { if ($session.uid) {
try { try {
@ -63,6 +63,7 @@
try { try {
const data = await get(`/update.json`); const data = await get(`/update.json`);
if (data?.isUpdateAvailable) { if (data?.isUpdateAvailable) {
latestVersion = data.latestVersion;
await post(`/update.json`, { type: 'pull' }); await post(`/update.json`, { type: 'pull' });
} }
isUpdateAvailable = data?.isUpdateAvailable; isUpdateAvailable = data?.isUpdateAvailable;
@ -95,54 +96,53 @@
async function update() { async function update() {
updateStatus.loading = true; updateStatus.loading = true;
if (!dev) { // if (!dev) {
try { try {
await post(`/update.json`, { type: 'update' }); await post(`/update.json`, { type: 'update', latestVersion });
toast.push('Update completed. Waiting for the new version to start...'); toast.push('Update completed. Waiting for the new version to start...');
let reachable = false;
let tries = 0;
do {
await asyncSleep(4000);
try {
await get(`/undead.json`);
reachable = true;
} catch (error) {
reachable = false;
}
if (reachable) break;
tries++;
} while (!reachable || tries < 120);
toast.push('New version reachable. Reloading...');
updateStatus.loading = false;
updateStatus.success = true;
await asyncSleep(3000);
return window.location.reload();
} catch ({ error }) {
return errorNotification(error);
} finally {
updateStatus.success = false;
updateStatus.loading = false;
}
} else {
let reachable = false; let reachable = false;
let tries = 0; let tries = 0;
do { do {
await asyncSleep(1000); await asyncSleep(4000);
try { try {
await get(`/undead.json`); await get(`/undead.json`);
reachable = true; reachable = true;
} catch (error) { } catch (error) {
console.log(error);
reachable = false; reachable = false;
} }
console.log(reachable);
if (reachable) break; if (reachable) break;
tries++; tries++;
} while (!reachable || tries < 120); } while (!reachable || tries < 120);
toast.push('New version reachable. Reloading...'); toast.push('New version reachable. Reloading...');
await asyncSleep(2000); updateStatus.loading = false;
window.location.reload(); updateStatus.success = true;
await asyncSleep(3000);
return window.location.reload();
} catch ({ error }) {
return errorNotification(error);
} finally {
updateStatus.success = false;
updateStatus.loading = false;
} }
// } else {
// let reachable = false;
// let tries = 0;
// do {
// await asyncSleep(1000);
// try {
// await get(`/undead.json`);
// reachable = true;
// } catch (error) {
// console.log(error);
// reachable = false;
// }
// if (reachable) break;
// tries++;
// } while (!reachable || tries < 120);
// toast.push('New version reachable. Reloading...');
// await asyncSleep(2000);
// window.location.reload();
// }
} }
</script> </script>

View File

@ -12,7 +12,7 @@ export const get: RequestHandler = async () => {
const versions = await got const versions = await got
.get(`https://get.coollabs.io/versions.json?appId=${process.env['COOLIFY_APP_ID']}`) .get(`https://get.coollabs.io/versions.json?appId=${process.env['COOLIFY_APP_ID']}`)
.json(); .json();
const latestVersion = versions['coolify'].main.version; const latestVersion = dev ? '10.0.0' : versions['coolify'].main.version;
const isUpdateAvailable = compare(latestVersion, currentVersion); const isUpdateAvailable = compare(latestVersion, currentVersion);
return { return {
body: { body: {
@ -26,7 +26,7 @@ export const get: RequestHandler = async () => {
}; };
export const post: RequestHandler = async (event) => { export const post: RequestHandler = async (event) => {
const { type } = await event.request.json(); const { type, latestVersion } = await event.request.json();
if (type === 'pull') { if (type === 'pull') {
try { try {
if (!dev) { if (!dev) {
@ -50,13 +50,14 @@ export const post: RequestHandler = async (event) => {
try { try {
if (!dev) { if (!dev) {
await asyncExecShell( await asyncExecShell(
`docker run --rm -tid --env-file .env -v /var/run/docker.sock:/var/run/docker.sock -v coolify-db coollabsio/coolify:latest /bin/sh -c "env | grep COOLIFY > .env && docker stop -t 0 coolify && docker stop -t 0 coolify-redis && docker compose up -d --force-recreate"` `docker run --rm -tid --env-file .env -v /var/run/docker.sock:/var/run/docker.sock -v coolify-db coollabsio/coolify:latest /bin/sh -c "env | grep COOLIFY > .env && docker stop -t 0 coolify && docker stop -t 0 coolify-redis && export TAG=${latestVersion} && docker compose up -d --force-recreate"`
); );
return { return {
status: 200, status: 200,
body: {} body: {}
}; };
} else { } else {
console.log(latestVersion);
await asyncSleep(2000); await asyncSleep(2000);
return { return {
status: 200, status: 200,