mirror of
https://github.com/ershisan99/coolify.git
synced 2025-12-17 20:49:32 +00:00
Updated to the correct help link, as the old link was not pointing to the correct section in the docs.coollabs.io page
276 lines
13 KiB
Svelte
276 lines
13 KiB
Svelte
<script context="module" lang="ts">
|
|
import type { Load } from '@sveltejs/kit';
|
|
export const load: Load = async ({ fetch, params, url, stuff }) => {
|
|
try {
|
|
const { application } = stuff;
|
|
if (application?.gitSourceId && !url.searchParams.get('from')) {
|
|
return {
|
|
status: 302,
|
|
redirect: `/applications/${params.id}`
|
|
};
|
|
}
|
|
const response = await get(`/sources`);
|
|
return {
|
|
props: {
|
|
...response
|
|
}
|
|
};
|
|
} catch (error) {
|
|
return {
|
|
status: 500,
|
|
error: new Error(`Could not load ${url}`)
|
|
};
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<script lang="ts">
|
|
export let sources: any;
|
|
|
|
import { page } from '$app/stores';
|
|
import { goto } from '$app/navigation';
|
|
import { get, post } from '$lib/api';
|
|
import { t } from '$lib/translations';
|
|
import { errorNotification } from '$lib/common';
|
|
import { appSession } from '$lib/store';
|
|
import PublicRepository from './_PublicRepository.svelte';
|
|
import DocLink from '$lib/components/DocLink.svelte';
|
|
import Beta from '$lib/components/Beta.svelte';
|
|
|
|
const { id } = $page.params;
|
|
const from = $page.url.searchParams.get('from');
|
|
let simpleDockerfile: any = null;
|
|
|
|
const filteredSources = sources.filter(
|
|
(source: any) =>
|
|
(source.type === 'github' && source.githubAppId && source.githubApp.installationId) ||
|
|
(source.type === 'gitlab' && source.gitlabAppId)
|
|
);
|
|
const ownSources = filteredSources.filter((source: any) => {
|
|
if (source.teams[0].id === $appSession.teamId) {
|
|
return source;
|
|
}
|
|
});
|
|
const otherSources = filteredSources.filter((source: any) => {
|
|
if (source.teams[0].id !== $appSession.teamId) {
|
|
return source;
|
|
}
|
|
});
|
|
async function handleSubmit(gitSourceId: string) {
|
|
try {
|
|
await post(`/applications/${id}/configuration/source`, { gitSourceId });
|
|
return await goto(from || `/applications/${id}/configuration/repository`);
|
|
} catch (error) {
|
|
return errorNotification(error);
|
|
}
|
|
}
|
|
async function handleDockerImage() {
|
|
try {
|
|
await post(`/applications/${id}/configuration/source`, { simpleDockerfile });
|
|
return await goto(from || `/applications/${id}/configuration/destination`);
|
|
} catch (error) {
|
|
return errorNotification(error);
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<div class="max-w-screen-2xl mx-auto px-9">
|
|
{#if !filteredSources}
|
|
<div class="title pb-8">Git App</div>
|
|
<div class="flex flex-wrap justify-center">
|
|
<div class="flex-col">
|
|
<div class="pb-2 text-center font-bold">
|
|
{$t('application.configuration.no_configurable_git')}
|
|
</div>
|
|
<div class="flex justify-center">
|
|
<a href="/sources/new?from={$page.url.pathname}" class="add-icon">
|
|
<svg
|
|
class="w-6"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
fill="none"
|
|
viewBox="0 0 24 24"
|
|
stroke="currentColor"
|
|
><path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
d="M12 6v6m0 0v6m0-6h6m-6 0H6"
|
|
/></svg
|
|
>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{/if}
|
|
{#if ownSources.length > 0 || otherSources.length > 0}
|
|
<div class="title pb-8">Integrated with Git App</div>
|
|
{/if}
|
|
{#if ownSources.length > 0 || otherSources.length > 0}
|
|
<div class="flex flex-wrap justify-center">
|
|
<div class="flex flex-col lg:flex-row lg:flex-wrap justify-center">
|
|
{#each ownSources as source}
|
|
<div class="p-2 relative">
|
|
<div class="absolute -m-4">
|
|
{#if source?.type === 'gitlab'}
|
|
<svg viewBox="0 0 128 128" class="w-8">
|
|
<path
|
|
fill="#FC6D26"
|
|
d="M126.615 72.31l-7.034-21.647L105.64 7.76c-.716-2.206-3.84-2.206-4.556 0l-13.94 42.903H40.856L26.916 7.76c-.717-2.206-3.84-2.206-4.557 0L8.42 50.664 1.385 72.31a4.792 4.792 0 001.74 5.358L64 121.894l60.874-44.227a4.793 4.793 0 001.74-5.357"
|
|
/><path fill="#E24329" d="M64 121.894l23.144-71.23H40.856L64 121.893z" /><path
|
|
fill="#FC6D26"
|
|
d="M64 121.894l-23.144-71.23H8.42L64 121.893z"
|
|
/><path
|
|
fill="#FCA326"
|
|
d="M8.42 50.663L1.384 72.31a4.79 4.79 0 001.74 5.357L64 121.894 8.42 50.664z"
|
|
/><path
|
|
fill="#E24329"
|
|
d="M8.42 50.663h32.436L26.916 7.76c-.717-2.206-3.84-2.206-4.557 0L8.42 50.664z"
|
|
/><path fill="#FC6D26" d="M64 121.894l23.144-71.23h32.437L64 121.893z" /><path
|
|
fill="#FCA326"
|
|
d="M119.58 50.663l7.035 21.647a4.79 4.79 0 01-1.74 5.357L64 121.894l55.58-71.23z"
|
|
/><path
|
|
fill="#E24329"
|
|
d="M119.58 50.663H87.145l13.94-42.902c.717-2.206 3.84-2.206 4.557 0l13.94 42.903z"
|
|
/>
|
|
</svg>
|
|
{:else if source?.type === 'github'}
|
|
<svg viewBox="0 0 128 128" class="w-8">
|
|
<g fill="#ffffff"
|
|
><path
|
|
fill-rule="evenodd"
|
|
clip-rule="evenodd"
|
|
d="M64 5.103c-33.347 0-60.388 27.035-60.388 60.388 0 26.682 17.303 49.317 41.297 57.303 3.017.56 4.125-1.31 4.125-2.905 0-1.44-.056-6.197-.082-11.243-16.8 3.653-20.345-7.125-20.345-7.125-2.747-6.98-6.705-8.836-6.705-8.836-5.48-3.748.413-3.67.413-3.67 6.063.425 9.257 6.223 9.257 6.223 5.386 9.23 14.127 6.562 17.573 5.02.542-3.903 2.107-6.568 3.834-8.076-13.413-1.525-27.514-6.704-27.514-29.843 0-6.593 2.36-11.98 6.223-16.21-.628-1.52-2.695-7.662.584-15.98 0 0 5.07-1.623 16.61 6.19C53.7 35 58.867 34.327 64 34.304c5.13.023 10.3.694 15.127 2.033 11.526-7.813 16.59-6.19 16.59-6.19 3.287 8.317 1.22 14.46.593 15.98 3.872 4.23 6.215 9.617 6.215 16.21 0 23.194-14.127 28.3-27.574 29.796 2.167 1.874 4.097 5.55 4.097 11.183 0 8.08-.07 14.583-.07 16.572 0 1.607 1.088 3.49 4.148 2.897 23.98-7.994 41.263-30.622 41.263-57.294C124.388 32.14 97.35 5.104 64 5.104z"
|
|
/><path
|
|
d="M26.484 91.806c-.133.3-.605.39-1.035.185-.44-.196-.685-.605-.543-.906.13-.31.603-.395 1.04-.188.44.197.69.61.537.91zm2.446 2.729c-.287.267-.85.143-1.232-.28-.396-.42-.47-.983-.177-1.254.298-.266.844-.14 1.24.28.394.426.472.984.17 1.255zM31.312 98.012c-.37.258-.976.017-1.35-.52-.37-.538-.37-1.183.01-1.44.373-.258.97-.025 1.35.507.368.545.368 1.19-.01 1.452zm3.261 3.361c-.33.365-1.036.267-1.552-.23-.527-.487-.674-1.18-.343-1.544.336-.366 1.045-.264 1.564.23.527.486.686 1.18.333 1.543zm4.5 1.951c-.147.473-.825.688-1.51.486-.683-.207-1.13-.76-.99-1.238.14-.477.823-.7 1.512-.485.683.206 1.13.756.988 1.237zm4.943.361c.017.498-.563.91-1.28.92-.723.017-1.308-.387-1.315-.877 0-.503.568-.91 1.29-.924.717-.013 1.306.387 1.306.88zm4.598-.782c.086.485-.413.984-1.126 1.117-.7.13-1.35-.172-1.44-.653-.086-.498.422-.997 1.122-1.126.714-.123 1.354.17 1.444.663zm0 0"
|
|
/></g
|
|
>
|
|
</svg>
|
|
{/if}
|
|
</div>
|
|
<form on:submit|preventDefault={() => handleSubmit(source.id)}>
|
|
<button
|
|
disabled={source.gitlabApp && !source.gitlabAppId}
|
|
type="submit"
|
|
class="disabled:opacity-95 disabled:text-white box-selection hover:btn-primary group w-full lg:w-96"
|
|
class:border-red-500={source.gitlabApp && !source.gitlabAppId}
|
|
class:border-0={source.gitlabApp && !source.gitlabAppId}
|
|
class:border-l-4={source.gitlabApp && !source.gitlabAppId}
|
|
>
|
|
<div class="font-bold text-xl text-center truncate">{source.name}</div>
|
|
{#if source.gitlabApp && !source.gitlabAppId}
|
|
<div class="font-bold text-center truncate text-red-500 group-hover:text-white">
|
|
Configuration missing
|
|
</div>
|
|
{/if}
|
|
</button>
|
|
</form>
|
|
</div>
|
|
{/each}
|
|
</div>
|
|
|
|
{#if otherSources.length > 0 && $appSession.teamId === '0'}
|
|
<div class="px-6 pb-5 pt-10 text-xl font-bold">Other Sources</div>
|
|
{/if}
|
|
<div class="flex flex-col flex-wrap justify-center px-2 md:flex-row">
|
|
{#each otherSources as source}
|
|
<div class="p-2">
|
|
<form on:submit|preventDefault={() => handleSubmit(source.id)}>
|
|
<button
|
|
disabled={source.gitlabApp && !source.gitlabAppId}
|
|
type="submit"
|
|
class="relative disabled:opacity-95 bg-coolgray-200 disabled:text-white box-selection hover:bg-orange-700 group"
|
|
class:border-red-500={source.gitlabApp && !source.gitlabAppId}
|
|
class:border-0={source.gitlabApp && !source.gitlabAppId}
|
|
class:border-l-4={source.gitlabApp && !source.gitlabAppId}
|
|
>
|
|
<div class="absolute top-0 left-0 -m-5 flex">
|
|
{#if source?.type === 'gitlab'}
|
|
<svg viewBox="0 0 128 128" class="h-10 w-10">
|
|
<path
|
|
fill="#FC6D26"
|
|
d="M126.615 72.31l-7.034-21.647L105.64 7.76c-.716-2.206-3.84-2.206-4.556 0l-13.94 42.903H40.856L26.916 7.76c-.717-2.206-3.84-2.206-4.557 0L8.42 50.664 1.385 72.31a4.792 4.792 0 001.74 5.358L64 121.894l60.874-44.227a4.793 4.793 0 001.74-5.357"
|
|
/><path fill="#E24329" d="M64 121.894l23.144-71.23H40.856L64 121.893z" /><path
|
|
fill="#FC6D26"
|
|
d="M64 121.894l-23.144-71.23H8.42L64 121.893z"
|
|
/><path
|
|
fill="#FCA326"
|
|
d="M8.42 50.663L1.384 72.31a4.79 4.79 0 001.74 5.357L64 121.894 8.42 50.664z"
|
|
/><path
|
|
fill="#E24329"
|
|
d="M8.42 50.663h32.436L26.916 7.76c-.717-2.206-3.84-2.206-4.557 0L8.42 50.664z"
|
|
/><path fill="#FC6D26" d="M64 121.894l23.144-71.23h32.437L64 121.893z" /><path
|
|
fill="#FCA326"
|
|
d="M119.58 50.663l7.035 21.647a4.79 4.79 0 01-1.74 5.357L64 121.894l55.58-71.23z"
|
|
/><path
|
|
fill="#E24329"
|
|
d="M119.58 50.663H87.145l13.94-42.902c.717-2.206 3.84-2.206 4.557 0l13.94 42.903z"
|
|
/>
|
|
</svg>
|
|
{:else if source?.type === 'github'}
|
|
<svg viewBox="0 0 128 128" class="h-10 w-10">
|
|
<g fill="#ffffff"
|
|
><path
|
|
fill-rule="evenodd"
|
|
clip-rule="evenodd"
|
|
d="M64 5.103c-33.347 0-60.388 27.035-60.388 60.388 0 26.682 17.303 49.317 41.297 57.303 3.017.56 4.125-1.31 4.125-2.905 0-1.44-.056-6.197-.082-11.243-16.8 3.653-20.345-7.125-20.345-7.125-2.747-6.98-6.705-8.836-6.705-8.836-5.48-3.748.413-3.67.413-3.67 6.063.425 9.257 6.223 9.257 6.223 5.386 9.23 14.127 6.562 17.573 5.02.542-3.903 2.107-6.568 3.834-8.076-13.413-1.525-27.514-6.704-27.514-29.843 0-6.593 2.36-11.98 6.223-16.21-.628-1.52-2.695-7.662.584-15.98 0 0 5.07-1.623 16.61 6.19C53.7 35 58.867 34.327 64 34.304c5.13.023 10.3.694 15.127 2.033 11.526-7.813 16.59-6.19 16.59-6.19 3.287 8.317 1.22 14.46.593 15.98 3.872 4.23 6.215 9.617 6.215 16.21 0 23.194-14.127 28.3-27.574 29.796 2.167 1.874 4.097 5.55 4.097 11.183 0 8.08-.07 14.583-.07 16.572 0 1.607 1.088 3.49 4.148 2.897 23.98-7.994 41.263-30.622 41.263-57.294C124.388 32.14 97.35 5.104 64 5.104z"
|
|
/><path
|
|
d="M26.484 91.806c-.133.3-.605.39-1.035.185-.44-.196-.685-.605-.543-.906.13-.31.603-.395 1.04-.188.44.197.69.61.537.91zm2.446 2.729c-.287.267-.85.143-1.232-.28-.396-.42-.47-.983-.177-1.254.298-.266.844-.14 1.24.28.394.426.472.984.17 1.255zM31.312 98.012c-.37.258-.976.017-1.35-.52-.37-.538-.37-1.183.01-1.44.373-.258.97-.025 1.35.507.368.545.368 1.19-.01 1.452zm3.261 3.361c-.33.365-1.036.267-1.552-.23-.527-.487-.674-1.18-.343-1.544.336-.366 1.045-.264 1.564.23.527.486.686 1.18.333 1.543zm4.5 1.951c-.147.473-.825.688-1.51.486-.683-.207-1.13-.76-.99-1.238.14-.477.823-.7 1.512-.485.683.206 1.13.756.988 1.237zm4.943.361c.017.498-.563.91-1.28.92-.723.017-1.308-.387-1.315-.877 0-.503.568-.91 1.29-.924.717-.013 1.306.387 1.306.88zm4.598-.782c.086.485-.413.984-1.126 1.117-.7.13-1.35-.172-1.44-.653-.086-.498.422-.997 1.122-1.126.714-.123 1.354.17 1.444.663zm0 0"
|
|
/></g
|
|
>
|
|
</svg>
|
|
{/if}
|
|
{#if source.isSystemWide}
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
class="h-10 w-10"
|
|
viewBox="0 0 24 24"
|
|
stroke-width="1.5"
|
|
stroke="currentColor"
|
|
fill="none"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
>
|
|
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
|
<circle cx="12" cy="12" r="9" />
|
|
<line x1="3.6" y1="9" x2="20.4" y2="9" />
|
|
<line x1="3.6" y1="15" x2="20.4" y2="15" />
|
|
<path d="M11.5 3a17 17 0 0 0 0 18" />
|
|
<path d="M12.5 3a17 17 0 0 1 0 18" />
|
|
</svg>
|
|
{/if}
|
|
</div>
|
|
|
|
<div class="font-bold text-xl text-center truncate">{source.name}</div>
|
|
{#if source.gitlabApp && !source.gitlabAppId}
|
|
<div class="font-bold text-center truncate text-red-500 group-hover:text-white">
|
|
{$t('application.configuration.configuration_missing')}
|
|
</div>
|
|
{/if}
|
|
</button>
|
|
</form>
|
|
</div>
|
|
{/each}
|
|
</div>
|
|
</div>
|
|
{/if}
|
|
<div class="flex flex-row items-center">
|
|
<div class="title py-4 pr-4">Public Repository from Git</div>
|
|
<DocLink url="https://docs.coollabs.io/coolify/applications/#public-repository-from-git" />
|
|
</div>
|
|
<PublicRepository />
|
|
<div class="flex flex-row items-center pt-10">
|
|
<div class="title py-4 pr-4">Simple Dockerfile <Beta /></div>
|
|
<DocLink url="https://docs.coollabs.io/coolify/applications/#simple-dockerfile" />
|
|
</div>
|
|
<div class="mx-auto max-w-screen-2xl">
|
|
<form class="flex flex-col" on:submit|preventDefault={handleDockerImage}>
|
|
<div class="flex flex-col space-y-2 w-full">
|
|
<div class="flex flex-row space-x-2">
|
|
<textarea required class="w-full" rows="10" bind:value={simpleDockerfile} />
|
|
<button class="btn btn-primary" type="submit">Deploy Dockerfile</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|