From 76373a85972089c4df16a18a8eb4e37e806b17a1 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Wed, 30 Nov 2022 15:40:27 +0100 Subject: [PATCH] feat: save application data before deploying --- apps/api/src/jobs/deployApplication.ts | 8 +++----- apps/api/src/lib/buildPacks/common.ts | 10 +++++----- apps/api/src/lib/common.ts | 4 ++-- apps/api/src/lib/importers/github.ts | 10 +++++----- apps/api/src/lib/importers/gitlab.ts | 6 +++--- .../ui/src/routes/applications/[id]/__layout.svelte | 3 ++- apps/ui/src/routes/applications/[id]/index.svelte | 9 ++++----- .../routes/applications/[id]/previews/index.svelte | 13 ++++++++----- apps/ui/src/routes/applications/[id]/utils.ts | 9 +++++++++ 9 files changed, 41 insertions(+), 31 deletions(-) create mode 100644 apps/ui/src/routes/applications/[id]/utils.ts diff --git a/apps/api/src/jobs/deployApplication.ts b/apps/api/src/jobs/deployApplication.ts index 2416e43c6..2b420ab2b 100644 --- a/apps/api/src/jobs/deployApplication.ts +++ b/apps/api/src/jobs/deployApplication.ts @@ -301,8 +301,7 @@ import * as buildpacks from '../lib/buildPacks'; } try { await executeDockerCmd({ debug, buildId, applicationId, dockerId: destinationDocker.id, command: `docker compose --project-directory ${workdir} up -d` }) - await saveBuildLog({ line: 'Deployment successful!', buildId, applicationId }); - await saveBuildLog({ line: 'Proxy will be updated shortly.', buildId, applicationId }); + await saveBuildLog({ line: '[DEPLOYMENT] Successful! 🎉', buildId, applicationId }); await prisma.build.update({ where: { id: buildId }, data: { status: 'success' } }); await prisma.application.update({ where: { id: applicationId }, @@ -363,7 +362,7 @@ import * as buildpacks from '../lib/buildPacks'; // } try { - await saveBuildLog({ line: 'Deployment started.', buildId, applicationId }); + await saveBuildLog({ line: '[DEPLOYMENT] Deployment initiated.', buildId, applicationId }); const composeVolumes = volumes.map((volume) => { return { [`${volume.split(':')[0]}`]: { @@ -395,7 +394,7 @@ import * as buildpacks from '../lib/buildPacks'; }; await fs.writeFile(`${workdir}/docker-compose.yml`, yaml.dump(composeFile)); await executeDockerCmd({ dockerId: destinationDocker.id, command: `docker compose --project-directory ${workdir} up -d` }) - await saveBuildLog({ line: 'Deployment successful!', buildId, applicationId }); + await saveBuildLog({ line: '[DEPLOYMENT] Successful! 🎉', buildId, applicationId }); } catch (error) { await saveBuildLog({ line: error, buildId, applicationId }); const foundBuild = await prisma.build.findUnique({ where: { id: buildId } }) @@ -409,7 +408,6 @@ import * as buildpacks from '../lib/buildPacks'; } throw new Error(error); } - await saveBuildLog({ line: 'Proxy will be updated shortly.', buildId, applicationId }); await prisma.build.update({ where: { id: buildId }, data: { status: 'success' } }); if (!pullmergeRequestId) await prisma.application.update({ where: { id: applicationId }, diff --git a/apps/api/src/lib/buildPacks/common.ts b/apps/api/src/lib/buildPacks/common.ts index 9d6fe585f..62a0af373 100644 --- a/apps/api/src/lib/buildPacks/common.ts +++ b/apps/api/src/lib/buildPacks/common.ts @@ -641,9 +641,9 @@ export async function buildImage({ commit }) { if (isCache) { - await saveBuildLog({ line: `Building cache image started.`, buildId, applicationId }); + await saveBuildLog({ line: `[CACHE] Building cache image.`, buildId, applicationId }); } else { - await saveBuildLog({ line: `Building image started.`, buildId, applicationId }); + await saveBuildLog({ line: `[PRODUCTION] Building production image.`, buildId, applicationId }); } if (!debug) { await saveBuildLog({ @@ -667,12 +667,12 @@ export async function buildImage({ const { status } = await prisma.build.findUnique({ where: { id: buildId } }) if (status === 'canceled') { - throw new Error('Deployment canceled.') + throw new Error('[DEPLOYMENT] Canceled!!!') } if (isCache) { - await saveBuildLog({ line: `Building cache image successful.`, buildId, applicationId }); + await saveBuildLog({ line: `[CACHE] Successful! 🎉`, buildId, applicationId }); } else { - await saveBuildLog({ line: `Building image successful.`, buildId, applicationId }); + await saveBuildLog({ line: `[PRODUCTION] Successful! 🎉`, buildId, applicationId }); } } diff --git a/apps/api/src/lib/common.ts b/apps/api/src/lib/common.ts index 3f09478ca..dab67fead 100644 --- a/apps/api/src/lib/common.ts +++ b/apps/api/src/lib/common.ts @@ -1535,7 +1535,7 @@ export async function stopBuild(buildId, applicationId) { scheduler.workers.get('deployApplication').postMessage('cancel'); } await cleanupDB(buildId, applicationId); - return reject(new Error('Deployment canceled.')); + return reject(new Error('[DEPLOYMENT] Canceled!!!')); } const { stdout: buildContainers } = await executeDockerCmd({ dockerId, @@ -1568,7 +1568,7 @@ async function cleanupDB(buildId: string, applicationId: string) { if (data?.status === 'queued' || data?.status === 'running') { await prisma.build.update({ where: { id: buildId }, data: { status: 'canceled' } }); } - await saveBuildLog({ line: 'Deployment canceled.', buildId, applicationId }); + await saveBuildLog({ line: '[DEPLOYMENT] Canceled!!!', buildId, applicationId }); } export function convertTolOldVolumeNames(type) { diff --git a/apps/api/src/lib/importers/github.ts b/apps/api/src/lib/importers/github.ts index af41c8e48..10f02a642 100644 --- a/apps/api/src/lib/importers/github.ts +++ b/apps/api/src/lib/importers/github.ts @@ -30,16 +30,16 @@ export default async function ({ }): Promise { const { default: got } = await import('got') const url = htmlUrl.replace('https://', '').replace('http://', ''); - await saveBuildLog({ line: 'GitHub importer started.', buildId, applicationId }); + await saveBuildLog({ line: '[IMPORTER] Warming up GitHub importer.', buildId, applicationId }); if (forPublic) { await saveBuildLog({ - line: `Cloning ${repository}:${branch} branch.`, + line: `[IMPORTER] Cloning ${repository}:${branch} branch.`, buildId, applicationId }); if (gitCommitHash) { await saveBuildLog({ - line: `Checking out ${gitCommitHash} commit.`, + line: `[IMPORTER] Checking out ${gitCommitHash} commit.`, buildId, applicationId }); @@ -71,13 +71,13 @@ export default async function ({ }) .json(); await saveBuildLog({ - line: `Cloning ${repository}:${branch} branch.`, + line: `[IMPORTER] Cloning ${repository}:${branch} branch.`, buildId, applicationId }); if (gitCommitHash) { await saveBuildLog({ - line: `Checking out ${gitCommitHash} commit.`, + line: `[IMPORTER] Checking out ${gitCommitHash} commit.`, buildId, applicationId }); diff --git a/apps/api/src/lib/importers/gitlab.ts b/apps/api/src/lib/importers/gitlab.ts index fd6c7e830..d6035fb86 100644 --- a/apps/api/src/lib/importers/gitlab.ts +++ b/apps/api/src/lib/importers/gitlab.ts @@ -27,7 +27,7 @@ export default async function ({ forPublic: boolean; }): Promise { const url = htmlUrl.replace('https://', '').replace('http://', '').replace(/\/$/, ''); - await saveBuildLog({ line: 'GitLab importer started.', buildId, applicationId }); + await saveBuildLog({ line: '[IMPORTER] Warming up GitLab importer.', buildId, applicationId }); if (!forPublic) { await asyncExecShell(`echo '${privateSshKey}' > ${repodir}/id.rsa`); @@ -35,13 +35,13 @@ export default async function ({ } await saveBuildLog({ - line: `Cloning ${repository}:${branch} branch.`, + line: `[IMPORTER] Cloning ${repository}:${branch} branch.`, buildId, applicationId }); if (gitCommitHash) { await saveBuildLog({ - line: `Checking out ${gitCommitHash} commit.`, + line: `[IMPORTER] Checking out ${gitCommitHash} commit.`, buildId, applicationId }); diff --git a/apps/ui/src/routes/applications/[id]/__layout.svelte b/apps/ui/src/routes/applications/[id]/__layout.svelte index 4088f422c..b347a14b0 100644 --- a/apps/ui/src/routes/applications/[id]/__layout.svelte +++ b/apps/ui/src/routes/applications/[id]/__layout.svelte @@ -70,8 +70,8 @@ selectedBuildId } from '$lib/store'; import { errorNotification, handlerNotFoundLoad } from '$lib/common'; - import Tooltip from '$lib/components/Tooltip.svelte'; import Menu from './_Menu.svelte'; + import { saveForm } from './utils'; let statusInterval: any; let forceDelete = false; @@ -114,6 +114,7 @@ }, 2000); } try { + await saveForm(id, application); const { buildId } = await post(`/applications/${id}/deploy`, { ...application, forceRebuild diff --git a/apps/ui/src/routes/applications/[id]/index.svelte b/apps/ui/src/routes/applications/[id]/index.svelte index abae70aaf..540536c98 100644 --- a/apps/ui/src/routes/applications/[id]/index.svelte +++ b/apps/ui/src/routes/applications/[id]/index.svelte @@ -50,6 +50,7 @@ import Explainer from '$lib/components/Explainer.svelte'; import { goto } from '$app/navigation'; import Beta from '$lib/components/Beta.svelte'; + import { saveForm } from './utils'; const { id } = $page.params; @@ -267,11 +268,7 @@ } } } - await post(`/applications/${id}`, { - ...application, - baseDatabaseBranch, - dockerComposeConfiguration: JSON.stringify(dockerComposeConfiguration) - }); + await saveForm(id, application,baseDatabaseBranch, dockerComposeConfiguration); setLocation(application, settings); $isDeploymentEnabled = checkIfDeploymentEnabledApplications($appSession.isAdmin, application); @@ -519,6 +516,8 @@
Loading...
{:else if application.previewApplication.length > 0} -
+
{#each application.previewApplication as preview}
@@ -216,7 +214,12 @@
{#if preview.customDomain} - +