kin: auto-commit after pipeline

This commit is contained in:
Gros Frumos 2026-03-17 18:29:32 +02:00
parent 94591ab7ae
commit 3d9b5766ab
10 changed files with 250 additions and 30 deletions

View file

@ -161,6 +161,7 @@ export interface PipelineStep {
export interface DeployStepResult {
step: string
command: string
stdout: string
stderr: string
exit_code: number
@ -189,7 +190,7 @@ export interface ProjectLink {
id: number
from_project: string
to_project: string
type: string
link_type: string
description: string | null
created_at: string
}
@ -198,6 +199,7 @@ export interface TaskFull extends Task {
pipeline_steps: PipelineStep[]
related_decisions: Decision[]
project_deploy_command: string | null
project_deploy_runtime: string | null
pipeline_id: string | null
}
@ -411,7 +413,7 @@ export const api = {
get<PipelineLog[]>(`/pipelines/${pipelineId}/logs?since_id=${sinceId}`),
projectLinks: (projectId: string) =>
get<ProjectLink[]>(`/projects/${projectId}/links`),
createProjectLink: (data: { from_project: string; to_project: string; type: string; description?: string }) =>
createProjectLink: (data: { from_project: string; to_project: string; link_type: string; description?: string }) =>
post<ProjectLink>('/project-links', data),
deleteProjectLink: (id: number) =>
del<void>(`/project-links/${id}`),

View file

@ -395,7 +395,7 @@ const links = ref<ProjectLink[]>([])
const linksLoading = ref(false)
const linksError = ref('')
const showAddLink = ref(false)
const linkForm = ref({ to_project: '', type: 'depends_on', description: '' })
const linkForm = ref({ to_project: '', link_type: 'depends_on', description: '' })
const linkFormError = ref('')
const linkSaving = ref(false)
@ -419,11 +419,11 @@ async function addLink() {
await api.createProjectLink({
from_project: props.id,
to_project: linkForm.value.to_project,
type: linkForm.value.type,
link_type: linkForm.value.link_type,
description: linkForm.value.description || undefined,
})
showAddLink.value = false
linkForm.value = { to_project: '', type: 'depends_on', description: '' }
linkForm.value = { to_project: '', link_type: 'depends_on', description: '' }
await loadLinks()
} catch (e: any) {
linkFormError.value = e.message
@ -1368,7 +1368,7 @@ async function addDecision() {
<span class="text-gray-400 font-mono text-xs">{{ link.from_project }}</span>
<span class="text-gray-600">-></span>
<span class="text-gray-400 font-mono text-xs">{{ link.to_project }}</span>
<span class="px-1.5 py-0.5 text-[10px] bg-indigo-900/30 text-indigo-400 border border-indigo-800 rounded">{{ link.type }}</span>
<span class="px-1.5 py-0.5 text-[10px] bg-indigo-900/30 text-indigo-400 border border-indigo-800 rounded">{{ link.link_type }}</span>
<span v-if="link.description" class="text-gray-500 text-xs">{{ link.description }}</span>
</div>
<button @click="deleteLink(link.id)"
@ -1379,7 +1379,7 @@ async function addDecision() {
</div>
<!-- Add Link Modal -->
<Modal v-if="showAddLink" title="Add Link" @close="showAddLink = false; linkForm = { to_project: '', type: 'depends_on', description: '' }; linkFormError = ''">
<Modal v-if="showAddLink" title="Add Link" @close="showAddLink = false; linkForm = { to_project: '', link_type: 'depends_on', description: '' }; linkFormError = ''">
<form @submit.prevent="addLink" class="space-y-3">
<div>
<label class="block text-xs text-gray-500 mb-1">From (current project)</label>
@ -1396,7 +1396,7 @@ async function addDecision() {
</div>
<div>
<label class="block text-xs text-gray-500 mb-1">Link type</label>
<select v-model="linkForm.type"
<select v-model="linkForm.link_type"
class="w-full bg-gray-800 border border-gray-700 rounded px-3 py-2 text-sm text-gray-300">
<option value="depends_on">depends_on</option>
<option value="triggers">triggers</option>

View file

@ -50,10 +50,10 @@ async function saveDeployConfig(projectId: string) {
saveDeployConfigStatus.value[projectId] = ''
try {
await api.patchProject(projectId, {
deploy_host: deployHosts.value[projectId] || undefined,
deploy_path: deployPaths.value[projectId] || undefined,
deploy_runtime: deployRuntimes.value[projectId] || undefined,
deploy_restart_cmd: deployRestartCmds.value[projectId] || undefined,
deploy_host: deployHosts.value[projectId],
deploy_path: deployPaths.value[projectId],
deploy_runtime: deployRuntimes.value[projectId],
deploy_restart_cmd: deployRestartCmds.value[projectId],
})
saveDeployConfigStatus.value[projectId] = 'Saved'
} catch (e) {