From cc6445a8ec075ccc7e40022fea5fd305f16e8a2d Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 3 Aug 2025 01:54:07 -0600 Subject: [PATCH 1/4] feat(application): add railpackVersion field to application schema and update related components - Introduced a new column `railpackVersion` in the application table with a default value of '0.2.2'. - Updated the application form to include a field for `railpackVersion` when the build type is set to railpack. - Adjusted the build process to utilize the specified `railpackVersion` dynamically. - Enhanced validation schema to accommodate the new field. --- .../dashboard/application/build/show.tsx | 36 +- .../drizzle/0104_omniscient_randall.sql | 1 + apps/dokploy/drizzle/meta/0104_snapshot.json | 6143 +++++++++++++++++ apps/dokploy/drizzle/meta/_journal.json | 7 + packages/server/src/db/schema/application.ts | 3 + .../server/src/utils/builders/railpack.ts | 4 +- 6 files changed, 6186 insertions(+), 8 deletions(-) create mode 100644 apps/dokploy/drizzle/0104_omniscient_randall.sql create mode 100644 apps/dokploy/drizzle/meta/0104_snapshot.json diff --git a/apps/dokploy/components/dashboard/application/build/show.tsx b/apps/dokploy/components/dashboard/application/build/show.tsx index 291026d4f..11490bfd9 100644 --- a/apps/dokploy/components/dashboard/application/build/show.tsx +++ b/apps/dokploy/components/dashboard/application/build/show.tsx @@ -1,3 +1,9 @@ +import { zodResolver } from "@hookform/resolvers/zod"; +import { Cog } from "lucide-react"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; import { AlertBlock } from "@/components/shared/alert-block"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; @@ -15,12 +21,6 @@ import { import { Input } from "@/components/ui/input"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { api } from "@/utils/api"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { Cog } from "lucide-react"; -import { useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { toast } from "sonner"; -import { z } from "zod"; export enum BuildType { dockerfile = "dockerfile", @@ -65,6 +65,7 @@ const mySchema = z.discriminatedUnion("buildType", [ }), z.object({ buildType: z.literal(BuildType.railpack), + railpackVersion: z.string().nullable().default("0.2.2"), }), z.object({ buildType: z.literal(BuildType.static), @@ -86,6 +87,7 @@ interface ApplicationData { herokuVersion?: string | null; publishDirectory?: string | null; isStaticSpa?: boolean | null; + railpackVersion?: string | null | undefined; } function isValidBuildType(value: string): value is BuildType { @@ -123,6 +125,7 @@ const resetData = (data: ApplicationData): AddTemplate => { case BuildType.railpack: return { buildType: BuildType.railpack, + railpackVersion: data.railpackVersion || null, }; default: { const buildType = data.buildType as BuildType; @@ -181,6 +184,8 @@ export const ShowBuildChooseForm = ({ applicationId }: Props) => { : null, isStaticSpa: data.buildType === BuildType.static ? data.isStaticSpa : null, + railpackVersion: + data.buildType === BuildType.railpack ? data.railpackVersion : null, }) .then(async () => { toast.success("Build type saved"); @@ -395,6 +400,25 @@ export const ShowBuildChooseForm = ({ applicationId }: Props) => { )} /> )} + {buildType === BuildType.railpack && ( + ( + + Railpack Version + + + + + + )} + /> + )}