feat: New update process (#115)

This commit is contained in:
Andras Bacsai 2022-02-11 11:46:47 +01:00 committed by GitHub
parent cf9d32b556
commit e622294b87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 13 deletions

View File

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

View File

@ -16,7 +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", "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

@ -8,13 +8,13 @@ export default async function () {
for (const destinationDocker of destinationDockers) { for (const destinationDocker of destinationDockers) {
const host = getEngine(destinationDocker.engine); const host = getEngine(destinationDocker.engine);
try { try {
await asyncExecShell(`DOCKER_HOST=${host} docker container prune -f`); // await asyncExecShell(`DOCKER_HOST=${host} docker container prune -f`);
} catch (error) { } catch (error) {
// //
console.log(error); console.log(error);
} }
try { try {
await asyncExecShell(`DOCKER_HOST=${host} docker image prune -f`); // await asyncExecShell(`DOCKER_HOST=${host} docker image prune -f`);
} catch (error) { } catch (error) {
// //
console.log(error); console.log(error);

View File

@ -39,8 +39,7 @@
import { errorNotification } from '$lib/form'; import { errorNotification } from '$lib/form';
import { asyncSleep } from '$lib/components/common'; import { asyncSleep } from '$lib/components/common';
import { del, get, post } from '$lib/api'; import { del, get, post } from '$lib/api';
import { dev } from '$app/env'; import { browser } from '$app/env';
import Loading from '$lib/components/Loading.svelte';
let isUpdateAvailable = false; let isUpdateAvailable = false;
let updateStatus = { let updateStatus = {
@ -51,6 +50,7 @@
let latestVersion = 'latest'; let latestVersion = 'latest';
onMount(async () => { onMount(async () => {
if ($session.uid) { if ($session.uid) {
const overrideVersion = browser && window.localStorage.getItem('latestVersion');
try { try {
await get(`/login.json`); await get(`/login.json`);
} catch ({ error }) { } catch ({ error }) {
@ -62,11 +62,11 @@
updateStatus.checking = true; updateStatus.checking = true;
try { try {
const data = await get(`/update.json`); const data = await get(`/update.json`);
if (data?.isUpdateAvailable) { if (overrideVersion || data?.isUpdateAvailable) {
latestVersion = data.latestVersion; latestVersion = overrideVersion || data.latestVersion;
await post(`/update.json`, { type: 'pull' }); isUpdateAvailable = overrideVersion ? true : data?.isUpdateAvailable;
await post(`/update.json`, { type: 'pull', latestVersion });
} }
isUpdateAvailable = data?.isUpdateAvailable;
} catch (error) { } catch (error) {
} finally { } finally {
updateStatus.checking = false; updateStatus.checking = false;

View File

@ -30,13 +30,13 @@ export const post: RequestHandler = async (event) => {
if (type === 'pull') { if (type === 'pull') {
try { try {
if (!dev) { if (!dev) {
await asyncExecShell(`env | grep COOLIFY > .env`); await asyncExecShell(`docker pull coollabsio/coolify:${latestVersion}`);
await asyncExecShell(`docker compose pull`);
return { return {
status: 200, status: 200,
body: {} body: {}
}; };
} else { } else {
await asyncExecShell(`docker pull coollabsio/coolify:${latestVersion}`);
await asyncSleep(2000); await asyncSleep(2000);
return { return {
status: 200, status: 200,
@ -49,8 +49,9 @@ export const post: RequestHandler = async (event) => {
} else if (type === 'update') { } else if (type === 'update') {
try { try {
if (!dev) { if (!dev) {
await asyncExecShell(`env | grep COOLIFY > .env`);
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:${latestVersion} /bin/sh -c "env | grep COOLIFY > .env && echo 'TAG=${latestVersion}' >> .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:${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"`
); );
return { return {
status: 200, status: 200,