From dec58fd6d1f8f67ddc8239b0ba9652a6b6df679d Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Fri, 11 Feb 2022 09:00:45 +0100 Subject: [PATCH] feat: Use tags in update --- docker-compose.yaml | 2 +- package.json | 3 +- src/routes/__layout.svelte | 70 +++++++++++++++++++------------------- src/routes/update.json.ts | 7 ++-- 4 files changed, 42 insertions(+), 40 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 66160f0e6..0c1cdc567 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3.8' services: coolify: - image: coollabsio/coolify:latest + image: coollabsio/coolify:${TAG} restart: always container_name: coolify ports: diff --git a/package.json b/package.json index 6be8784cf..0605f66fa 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "coolify", "description": "An open-source & self-hostable Heroku / Netlify alternative.", - "version": "2.0.3", + "version": "2.0.4", "license": "AGPL-3.0", "scripts": { "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:push": "prisma db push && prisma generate", "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 .", "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", diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte index b1aec030a..5967c1f22 100644 --- a/src/routes/__layout.svelte +++ b/src/routes/__layout.svelte @@ -48,7 +48,7 @@ checking: false, success: null }; - + let latestVersion = 'latest'; onMount(async () => { if ($session.uid) { try { @@ -63,6 +63,7 @@ try { const data = await get(`/update.json`); if (data?.isUpdateAvailable) { + latestVersion = data.latestVersion; await post(`/update.json`, { type: 'pull' }); } isUpdateAvailable = data?.isUpdateAvailable; @@ -95,54 +96,53 @@ async function update() { updateStatus.loading = true; - if (!dev) { - try { - await post(`/update.json`, { type: 'update' }); - 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 { + // if (!dev) { + try { + await post(`/update.json`, { type: 'update', latestVersion }); + toast.push('Update completed. Waiting for the new version to start...'); let reachable = false; let tries = 0; do { - await asyncSleep(1000); + await asyncSleep(4000); try { await get(`/undead.json`); reachable = true; } catch (error) { - console.log(error); reachable = false; } - console.log(reachable); if (reachable) break; tries++; } while (!reachable || tries < 120); toast.push('New version reachable. Reloading...'); - await asyncSleep(2000); - window.location.reload(); + 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 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(); + // } } diff --git a/src/routes/update.json.ts b/src/routes/update.json.ts index 505f307db..51069c182 100644 --- a/src/routes/update.json.ts +++ b/src/routes/update.json.ts @@ -12,7 +12,7 @@ export const get: RequestHandler = async () => { const versions = await got .get(`https://get.coollabs.io/versions.json?appId=${process.env['COOLIFY_APP_ID']}`) .json(); - const latestVersion = versions['coolify'].main.version; + const latestVersion = dev ? '10.0.0' : versions['coolify'].main.version; const isUpdateAvailable = compare(latestVersion, currentVersion); return { body: { @@ -26,7 +26,7 @@ export const get: RequestHandler = async () => { }; export const post: RequestHandler = async (event) => { - const { type } = await event.request.json(); + const { type, latestVersion } = await event.request.json(); if (type === 'pull') { try { if (!dev) { @@ -50,13 +50,14 @@ export const post: RequestHandler = async (event) => { try { if (!dev) { 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 { status: 200, body: {} }; } else { + console.log(latestVersion); await asyncSleep(2000); return { status: 200,