fixes
This commit is contained in:
@@ -121,7 +121,6 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
port: exposePort ? `${exposePort}:${port}` : port,
|
port: exposePort ? `${exposePort}:${port}` : port,
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
await saveBuildLog({ line: 'Deployment initiated', buildId, applicationId });
|
|
||||||
const composeVolumes = volumes.map((volume) => {
|
const composeVolumes = volumes.map((volume) => {
|
||||||
return {
|
return {
|
||||||
[`${volume.split(':')[0]}`]: {
|
[`${volume.split(':')[0]}`]: {
|
||||||
@@ -156,7 +155,7 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
};
|
};
|
||||||
await fs.writeFile(`${workdir}/docker-compose.yml`, yaml.dump(composeFile));
|
await fs.writeFile(`${workdir}/docker-compose.yml`, yaml.dump(composeFile));
|
||||||
await executeDockerCmd({ dockerId: destinationDocker.id, command: `docker compose --project-directory ${workdir} up -d` })
|
await executeDockerCmd({ dockerId: destinationDocker.id, command: `docker compose --project-directory ${workdir} up -d` })
|
||||||
await saveBuildLog({ line: 'Deployed successfully 🎉', buildId, applicationId });
|
await saveBuildLog({ line: 'Deployed successfully', buildId, applicationId });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await saveBuildLog({ line: error, buildId, applicationId });
|
await saveBuildLog({ line: error, buildId, applicationId });
|
||||||
const foundBuild = await prisma.build.findUnique({ where: { id: buildId } })
|
const foundBuild = await prisma.build.findUnique({ where: { id: buildId } })
|
||||||
@@ -185,6 +184,9 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
if (error !== 1) {
|
if (error !== 1) {
|
||||||
await saveBuildLog({ line: error, buildId, applicationId: application.id });
|
await saveBuildLog({ line: error, buildId, applicationId: application.id });
|
||||||
}
|
}
|
||||||
|
if (error instanceof Error) {
|
||||||
|
await saveBuildLog({ line: error.message, buildId, applicationId: application.id });
|
||||||
|
}
|
||||||
if (!isDev) {
|
if (!isDev) {
|
||||||
await fs.rm(workdir, { recursive: true, force: true });
|
await fs.rm(workdir, { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
@@ -196,7 +198,7 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
const imageName = application.dockerRegistryImageName.split(':')[0];
|
const imageName = application.dockerRegistryImageName.split(':')[0];
|
||||||
await saveBuildLog({ line: `Pushing ${imageName}:${customTag} to Docker Registry... It could take a while...`, buildId, applicationId: application.id });
|
await saveBuildLog({ line: `Pushing ${imageName}:${customTag} to Docker Registry... It could take a while...`, buildId, applicationId: application.id });
|
||||||
await pushToRegistry(application, workdir, buildId, imageName, customTag)
|
await pushToRegistry(application, workdir, buildId, imageName, customTag)
|
||||||
await saveBuildLog({ line: "Success 🎉", buildId, applicationId: application.id });
|
await saveBuildLog({ line: "Success", buildId, applicationId: application.id });
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error.stdout) {
|
if (error.stdout) {
|
||||||
@@ -310,6 +312,13 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
)
|
)
|
||||||
.digest('hex');
|
.digest('hex');
|
||||||
const { debug } = settings;
|
const { debug } = settings;
|
||||||
|
if (!debug) {
|
||||||
|
await saveBuildLog({
|
||||||
|
line: `Debug logging is disabled. Enable it above if necessary!`,
|
||||||
|
buildId,
|
||||||
|
applicationId
|
||||||
|
});
|
||||||
|
}
|
||||||
const volumes =
|
const volumes =
|
||||||
persistentStorage?.map((storage) => {
|
persistentStorage?.map((storage) => {
|
||||||
if (storage.oldPath) {
|
if (storage.oldPath) {
|
||||||
@@ -370,12 +379,17 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
if (pullmergeRequestId) {
|
if (pullmergeRequestId) {
|
||||||
tag = `${commit.slice(0, 7)}-${pullmergeRequestId}`;
|
tag = `${commit.slice(0, 7)}-${pullmergeRequestId}`;
|
||||||
}
|
}
|
||||||
|
if (application.dockerRegistryImageName) {
|
||||||
|
imageName = application.dockerRegistryImageName.split(':')[0]
|
||||||
|
customTag = application.dockerRegistryImageName.split(':')[1] || tag
|
||||||
|
} else {
|
||||||
|
customTag = tag
|
||||||
|
imageName = applicationId;
|
||||||
|
}
|
||||||
|
|
||||||
customTag = application.dockerRegistryImageName.split(':')[1] || tag;
|
|
||||||
if (pullmergeRequestId) {
|
if (pullmergeRequestId) {
|
||||||
customTag = `${customTag}-${pullmergeRequestId}`;
|
customTag = `${customTag}-${pullmergeRequestId}`;
|
||||||
}
|
}
|
||||||
imageName = application.dockerRegistryImageName.split(':')[0];
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await prisma.build.update({ where: { id: buildId }, data: { commit } });
|
await prisma.build.update({ where: { id: buildId }, data: { commit } });
|
||||||
@@ -403,9 +417,10 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
if (dockerRegistry) {
|
||||||
const { url, username, password } = dockerRegistry
|
const { url, username, password } = dockerRegistry
|
||||||
location = await saveDockerRegistryCredentials({ url, username, password, workdir })
|
location = await saveDockerRegistryCredentials({ url, username, password, workdir })
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await executeDockerCmd({
|
await executeDockerCmd({
|
||||||
@@ -512,7 +527,7 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await executeDockerCmd({ debug, buildId, applicationId, dockerId: destinationDocker.id, command: `docker compose --project-directory ${workdir} up -d` })
|
await executeDockerCmd({ debug, buildId, applicationId, dockerId: destinationDocker.id, command: `docker compose --project-directory ${workdir} up -d` })
|
||||||
await saveBuildLog({ line: 'Deployed successfully 🎉', buildId, applicationId });
|
await saveBuildLog({ line: 'Deployed successfully', buildId, applicationId });
|
||||||
await prisma.build.update({ where: { id: buildId }, data: { status: 'success' } });
|
await prisma.build.update({ where: { id: buildId }, data: { status: 'success' } });
|
||||||
await prisma.application.update({
|
await prisma.application.update({
|
||||||
where: { id: applicationId },
|
where: { id: applicationId },
|
||||||
@@ -565,9 +580,10 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
await fs.writeFile(`${workdir}/.env`, envs.join('\n'));
|
await fs.writeFile(`${workdir}/.env`, envs.join('\n'));
|
||||||
|
if (dockerRegistry) {
|
||||||
const { url, username, password } = dockerRegistry
|
const { url, username, password } = dockerRegistry
|
||||||
await saveDockerRegistryCredentials({ url, username, password, workdir })
|
await saveDockerRegistryCredentials({ url, username, password, workdir })
|
||||||
|
}
|
||||||
|
|
||||||
let envFound = false;
|
let envFound = false;
|
||||||
try {
|
try {
|
||||||
@@ -576,7 +592,6 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
//
|
//
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await saveBuildLog({ line: 'Deployment initiated', buildId, applicationId });
|
|
||||||
const composeVolumes = volumes.map((volume) => {
|
const composeVolumes = volumes.map((volume) => {
|
||||||
return {
|
return {
|
||||||
[`${volume.split(':')[0]}`]: {
|
[`${volume.split(':')[0]}`]: {
|
||||||
@@ -608,7 +623,7 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
};
|
};
|
||||||
await fs.writeFile(`${workdir}/docker-compose.yml`, yaml.dump(composeFile));
|
await fs.writeFile(`${workdir}/docker-compose.yml`, yaml.dump(composeFile));
|
||||||
await executeDockerCmd({ dockerId: destinationDocker.id, command: `docker compose --project-directory ${workdir} up -d` })
|
await executeDockerCmd({ dockerId: destinationDocker.id, command: `docker compose --project-directory ${workdir} up -d` })
|
||||||
await saveBuildLog({ line: 'Deployed successfully 🎉', buildId, applicationId });
|
await saveBuildLog({ line: 'Deployed successfully', buildId, applicationId });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await saveBuildLog({ line: error, buildId, applicationId });
|
await saveBuildLog({ line: error, buildId, applicationId });
|
||||||
const foundBuild = await prisma.build.findUnique({ where: { id: buildId } })
|
const foundBuild = await prisma.build.findUnique({ where: { id: buildId } })
|
||||||
@@ -642,6 +657,9 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
if (error !== 1) {
|
if (error !== 1) {
|
||||||
await saveBuildLog({ line: error, buildId, applicationId: application.id });
|
await saveBuildLog({ line: error, buildId, applicationId: application.id });
|
||||||
}
|
}
|
||||||
|
if (error instanceof Error) {
|
||||||
|
await saveBuildLog({ line: error.message, buildId, applicationId: application.id });
|
||||||
|
}
|
||||||
if (!isDev) {
|
if (!isDev) {
|
||||||
await fs.rm(workdir, { recursive: true, force: true });
|
await fs.rm(workdir, { recursive: true, force: true });
|
||||||
}
|
}
|
||||||
@@ -651,7 +669,7 @@ import * as buildpacks from '../lib/buildPacks';
|
|||||||
if (application.dockerRegistryImageName && (!imageFoundRemotely || forceRebuild)) {
|
if (application.dockerRegistryImageName && (!imageFoundRemotely || forceRebuild)) {
|
||||||
await saveBuildLog({ line: `Pushing ${imageName}:${customTag} to Docker Registry... It could take a while...`, buildId, applicationId: application.id });
|
await saveBuildLog({ line: `Pushing ${imageName}:${customTag} to Docker Registry... It could take a while...`, buildId, applicationId: application.id });
|
||||||
await pushToRegistry(application, workdir, tag, imageName, customTag)
|
await pushToRegistry(application, workdir, tag, imageName, customTag)
|
||||||
await saveBuildLog({ line: "Success 🎉", buildId, applicationId: application.id });
|
await saveBuildLog({ line: "Success", buildId, applicationId: application.id });
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error.stdout) {
|
if (error.stdout) {
|
||||||
|
@@ -641,16 +641,9 @@ export async function buildImage({
|
|||||||
commit
|
commit
|
||||||
}) {
|
}) {
|
||||||
if (isCache) {
|
if (isCache) {
|
||||||
await saveBuildLog({ line: `Building cache image`, buildId, applicationId });
|
await saveBuildLog({ line: `Building cache image...`, buildId, applicationId });
|
||||||
} else {
|
} else {
|
||||||
await saveBuildLog({ line: `Building production image`, buildId, applicationId });
|
await saveBuildLog({ line: `Building production image...`, buildId, applicationId });
|
||||||
}
|
|
||||||
if (!debug) {
|
|
||||||
await saveBuildLog({
|
|
||||||
line: `Debug logging is disabled. Enable it above if necessary!`,
|
|
||||||
buildId,
|
|
||||||
applicationId
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
const dockerFile = isCache ? `${dockerFileLocation}-cache` : `${dockerFileLocation}`
|
const dockerFile = isCache ? `${dockerFileLocation}-cache` : `${dockerFileLocation}`
|
||||||
const cache = `${applicationId}:${tag}${isCache ? '-cache' : ''}`
|
const cache = `${applicationId}:${tag}${isCache ? '-cache' : ''}`
|
||||||
@@ -670,9 +663,9 @@ export async function buildImage({
|
|||||||
throw new Error('Canceled.')
|
throw new Error('Canceled.')
|
||||||
}
|
}
|
||||||
if (isCache) {
|
if (isCache) {
|
||||||
await saveBuildLog({ line: `Building cache image built successful 🎉`, buildId, applicationId });
|
await saveBuildLog({ line: `Built successfully`, buildId, applicationId });
|
||||||
} else {
|
} else {
|
||||||
await saveBuildLog({ line: `Building production image built successful 🎉`, buildId, applicationId });
|
await saveBuildLog({ line: `Built successfully`, buildId, applicationId });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export function makeLabelForSimpleDockerfile({ applicationId, port, type }) {
|
export function makeLabelForSimpleDockerfile({ applicationId, port, type }) {
|
||||||
|
@@ -480,9 +480,7 @@ export async function restartApplication(request: FastifyRequest<RestartApplicat
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
const { workdir } = await createDirectories({ repository, buildId });
|
const { workdir } = await createDirectories({ repository, buildId });
|
||||||
const labels = [
|
const labels = []
|
||||||
`coolify.managed=true`,
|
|
||||||
]
|
|
||||||
let image = null
|
let image = null
|
||||||
if (imageId) {
|
if (imageId) {
|
||||||
image = imageId
|
image = imageId
|
||||||
@@ -499,8 +497,11 @@ export async function restartApplication(request: FastifyRequest<RestartApplicat
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (dockerRegistry) {
|
||||||
const { url, username, password } = dockerRegistry
|
const { url, username, password } = dockerRegistry
|
||||||
location = await saveDockerRegistryCredentials({ url, username, password, workdir })
|
location = await saveDockerRegistryCredentials({ url, username, password, workdir })
|
||||||
|
}
|
||||||
|
|
||||||
let imageFoundLocally = false;
|
let imageFoundLocally = false;
|
||||||
try {
|
try {
|
||||||
await executeDockerCmd({
|
await executeDockerCmd({
|
||||||
|
@@ -82,6 +82,7 @@ export const status: Writable<any> = writable({
|
|||||||
statuses: [],
|
statuses: [],
|
||||||
overallStatus: 'stopped',
|
overallStatus: 'stopped',
|
||||||
loading: false,
|
loading: false,
|
||||||
|
restarting: false,
|
||||||
initialLoading: true
|
initialLoading: true
|
||||||
},
|
},
|
||||||
service: {
|
service: {
|
||||||
|
@@ -167,7 +167,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function getStatus() {
|
async function getStatus() {
|
||||||
if ($status.application.loading && stopping) return;
|
if (($status.application.loading && stopping) || $status.application.restarting === true) return;
|
||||||
$status.application.loading = true;
|
$status.application.loading = true;
|
||||||
const data = await get(`/applications/${id}/status`);
|
const data = await get(`/applications/${id}/status`);
|
||||||
|
|
||||||
@@ -185,26 +185,6 @@
|
|||||||
if ($status.application.statuses.length === 0) {
|
if ($status.application.statuses.length === 0) {
|
||||||
$status.application.overallStatus = 'stopped';
|
$status.application.overallStatus = 'stopped';
|
||||||
} else {
|
} else {
|
||||||
// if ($status.application.statuses.length !== numberOfApplications) {
|
|
||||||
// $status.application.overallStatus = 'degraded';
|
|
||||||
// } else {
|
|
||||||
// for (const oneStatus of $status.application.statuses) {
|
|
||||||
// if (oneStatus.status.isExited || oneStatus.status.isRestarting) {
|
|
||||||
// $status.application.overallStatus = 'degraded';
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// if (oneStatus.status.isRunning) {
|
|
||||||
// $status.application.overallStatus = 'healthy';
|
|
||||||
// }
|
|
||||||
// if (
|
|
||||||
// !oneStatus.status.isExited &&
|
|
||||||
// !oneStatus.status.isRestarting &&
|
|
||||||
// !oneStatus.status.isRunning
|
|
||||||
// ) {
|
|
||||||
// $status.application.overallStatus = 'stopped';
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
for (const oneStatus of $status.application.statuses) {
|
for (const oneStatus of $status.application.statuses) {
|
||||||
if (oneStatus.status.isExited || oneStatus.status.isRestarting) {
|
if (oneStatus.status.isExited || oneStatus.status.isRestarting) {
|
||||||
$status.application.overallStatus = 'degraded';
|
$status.application.overallStatus = 'degraded';
|
||||||
|
@@ -53,13 +53,11 @@
|
|||||||
import { saveForm } from './utils';
|
import { saveForm } from './utils';
|
||||||
|
|
||||||
const { id } = $page.params;
|
const { id } = $page.params;
|
||||||
|
|
||||||
$: isDisabled =
|
$: isDisabled =
|
||||||
!$appSession.isAdmin ||
|
!$appSession.isAdmin ||
|
||||||
$status.application.overallStatus === 'degraded' ||
|
$status.application.overallStatus === 'degraded' ||
|
||||||
$status.application.overallStatus === 'healthy' ||
|
$status.application.overallStatus === 'healthy' ||
|
||||||
$status.application.initialLoading;
|
$status.application.initialLoading;
|
||||||
|
|
||||||
$isDeploymentEnabled = checkIfDeploymentEnabledApplications($appSession.isAdmin, application);
|
$isDeploymentEnabled = checkIfDeploymentEnabledApplications($appSession.isAdmin, application);
|
||||||
let statues: any = {};
|
let statues: any = {};
|
||||||
let loading = {
|
let loading = {
|
||||||
@@ -274,12 +272,13 @@
|
|||||||
$isDeploymentEnabled = checkIfDeploymentEnabledApplications($appSession.isAdmin, application);
|
$isDeploymentEnabled = checkIfDeploymentEnabledApplications($appSession.isAdmin, application);
|
||||||
|
|
||||||
forceSave = false;
|
forceSave = false;
|
||||||
|
if (toast) {
|
||||||
toast &&
|
|
||||||
addToast({
|
addToast({
|
||||||
message: 'Configuration saved.',
|
message: 'Configuration saved.',
|
||||||
type: 'success'
|
type: 'success'
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (application.fqdn && application.fqdn.startsWith('https')) {
|
if (application.fqdn && application.fqdn.startsWith('https')) {
|
||||||
isHttps = true;
|
isHttps = true;
|
||||||
} else {
|
} else {
|
||||||
@@ -514,7 +513,6 @@
|
|||||||
>
|
>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="grid grid-cols-2 items-center">
|
<div class="grid grid-cols-2 items-center">
|
||||||
<label for="repository">Git commit</label>
|
<label for="repository">Git commit</label>
|
||||||
<div class="flex gap-2">
|
<div class="flex gap-2">
|
||||||
|
@@ -57,6 +57,7 @@
|
|||||||
try {
|
try {
|
||||||
$status.application.initialLoading = true;
|
$status.application.initialLoading = true;
|
||||||
$status.application.loading = true;
|
$status.application.loading = true;
|
||||||
|
$status.application.restarting = true;
|
||||||
await post(`/applications/${id}/restart`, { imageId: remoteImage });
|
await post(`/applications/${id}/restart`, { imageId: remoteImage });
|
||||||
addToast({
|
addToast({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
@@ -67,6 +68,7 @@
|
|||||||
} finally {
|
} finally {
|
||||||
$status.application.initialLoading = false;
|
$status.application.initialLoading = false;
|
||||||
$status.application.loading = false;
|
$status.application.loading = false;
|
||||||
|
$status.application.restarting = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user