fix: cancelling jobs

This commit is contained in:
Andras Bacsai 2022-08-24 10:35:28 +02:00
parent c8ae72893a
commit 313143586b
4 changed files with 16 additions and 8 deletions

View File

@ -334,8 +334,8 @@ import * as buildpacks from '../lib/buildPacks';
await saveBuildLog({ line: 'Deployment successful!', buildId, applicationId }); await saveBuildLog({ line: 'Deployment successful!', buildId, applicationId });
} catch (error) { } catch (error) {
await saveBuildLog({ line: error, buildId, applicationId }); await saveBuildLog({ line: error, buildId, applicationId });
await prisma.build.update({ await prisma.build.updateMany({
where: { id: message.build_id }, where: { id: message.build_id, status: { in: ['queued', 'running'] } },
data: { status: 'failed' } data: { status: 'failed' }
}); });
throw new Error(error); throw new Error(error);
@ -350,8 +350,8 @@ import * as buildpacks from '../lib/buildPacks';
} }
catch (error) { catch (error) {
await prisma.build.update({ await prisma.build.updateMany({
where: { id: message.build_id }, where: { id: message.build_id, status: { in: ['queued', 'running'] } },
data: { status: 'failed' } data: { status: 'failed' }
}); });
await saveBuildLog({ line: error, buildId, applicationId }); await saveBuildLog({ line: error, buildId, applicationId });

View File

@ -551,6 +551,10 @@ export async function buildImage({
const dockerFile = isCache ? `${dockerFileLocation}-cache` : `${dockerFileLocation}` const dockerFile = isCache ? `${dockerFileLocation}-cache` : `${dockerFileLocation}`
const cache = `${applicationId}:${tag}${isCache ? '-cache' : ''}` const cache = `${applicationId}:${tag}${isCache ? '-cache' : ''}`
await executeDockerCmd({ debug, buildId, applicationId, dockerId, command: `docker build --progress plain -f ${workdir}/${dockerFile} -t ${cache} ${workdir}` }) await executeDockerCmd({ debug, buildId, applicationId, dockerId, command: `docker build --progress plain -f ${workdir}/${dockerFile} -t ${cache} ${workdir}` })
const { status } = await prisma.build.findUnique({ where: { id: buildId } })
if (status === 'canceled') {
throw new Error('Build canceled.')
}
if (isCache) { if (isCache) {
await saveBuildLog({ line: `Building cache image successful.`, buildId, applicationId }); await saveBuildLog({ line: `Building cache image successful.`, buildId, applicationId });
} else { } else {

View File

@ -1874,11 +1874,11 @@ export async function stopBuild(buildId, applicationId) {
const { engine, id: dockerId } = await prisma.destinationDocker.findFirst({ where: { id: destinationDockerId } }); const { engine, id: dockerId } = await prisma.destinationDocker.findFirst({ where: { id: destinationDockerId } });
const interval = setInterval(async () => { const interval = setInterval(async () => {
try { try {
if (status === 'failed') { if (status === 'failed' || status === 'canceled') {
clearInterval(interval); clearInterval(interval);
return resolve(); return resolve();
} }
if (count > 50) { if (count > 15) {
clearInterval(interval); clearInterval(interval);
if (scheduler.workers.has('deployApplication')) { if (scheduler.workers.has('deployApplication')) {
scheduler.workers.get('deployApplication').postMessage("action:flushQueue") scheduler.workers.get('deployApplication').postMessage("action:flushQueue")
@ -1894,8 +1894,11 @@ export async function stopBuild(buildId, applicationId) {
const id = containerObj.ID; const id = containerObj.ID;
if (!containerObj.Names.startsWith(`${applicationId} `)) { if (!containerObj.Names.startsWith(`${applicationId} `)) {
await removeContainer({ id, dockerId }); await removeContainer({ id, dockerId });
clearInterval(interval); clearInterval(interval);
if (scheduler.workers.has('deployApplication')) {
scheduler.workers.get('deployApplication').postMessage("action:flushQueue")
}
await cleanupDB(buildId);
return resolve(); return resolve();
} }
} }
@ -1909,7 +1912,7 @@ export async function stopBuild(buildId, applicationId) {
async function cleanupDB(buildId: string) { async function cleanupDB(buildId: string) {
const data = await prisma.build.findUnique({ where: { id: buildId } }); const data = await prisma.build.findUnique({ where: { id: buildId } });
if (data?.status === 'queued' || data?.status === 'running') { if (data?.status === 'queued' || data?.status === 'running') {
await prisma.build.update({ where: { id: buildId }, data: { status: 'failed' } }); await prisma.build.update({ where: { id: buildId }, data: { status: 'canceled' } });
} }
} }

View File

@ -146,6 +146,7 @@
class="tooltip tooltip-primary tooltip-top flex cursor-pointer items-center justify-center border-l-2 py-4 no-underline transition-all duration-100 hover:bg-coolgray-400 hover:shadow-xl" class="tooltip tooltip-primary tooltip-top flex cursor-pointer items-center justify-center border-l-2 py-4 no-underline transition-all duration-100 hover:bg-coolgray-400 hover:shadow-xl"
class:bg-coolgray-400={buildId === build.id} class:bg-coolgray-400={buildId === build.id}
class:border-red-500={build.status === 'failed'} class:border-red-500={build.status === 'failed'}
class:border-orange-500={build.status === 'canceled'}
class:border-green-500={build.status === 'success'} class:border-green-500={build.status === 'success'}
class:border-yellow-500={build.status === 'running'} class:border-yellow-500={build.status === 'running'}
> >