From cc5a3e6873345bb6a1a87bfbeae3def1d4276d2e Mon Sep 17 00:00:00 2001 From: Yusoof Moh <18055365+yusoofsh@users.noreply.github.com> Date: Tue, 25 Mar 2025 22:04:35 +0700 Subject: [PATCH 1/5] Add option to disable recurse submodules Add option to disable recurse submodules under "Provider Select the source of your code" form. * Add a checkbox to disable recurse submodules in `apps/dokploy/components/dashboard/application/general/generic/save-git-provider.tsx`, `apps/dokploy/components/dashboard/application/general/generic/save-github-provider.tsx`, and `apps/dokploy/components/dashboard/application/general/generic/save-gitlab-provider.tsx`. * Update the form schema in the above files to include the new option. * Conditionally include the `--recurse-submodules` flag in the `git clone` command in the above files. * Update the "Provider Select the source of your code" form in `apps/dokploy/components/dashboard/application/general/generic/show.tsx` to include the new option. * Conditionally include the `--recurse-submodules` flag in the `git clone` command in `packages/server/src/utils/providers/bitbucket.ts`, `packages/server/src/utils/providers/git.ts`, `packages/server/src/utils/providers/github.ts`, and `packages/server/src/utils/providers/gitlab.ts`. * Add the `--depth` flag to optimize submodule cloning performance in the `git clone` command in `packages/server/src/utils/providers/bitbucket.ts`, `packages/server/src/utils/providers/git.ts`, `packages/server/src/utils/providers/github.ts`, and `packages/server/src/utils/providers/gitlab.ts`. --- For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/Dokploy/dokploy?shareId=XXXX-XXXX-XXXX-XXXX). --- .../general/generic/save-git-provider.tsx | 21 +++++++ .../general/generic/save-github-provider.tsx | 21 +++++++ .../general/generic/save-gitlab-provider.tsx | 21 +++++++ .../server/src/utils/providers/bitbucket.ts | 46 ++++++++------ packages/server/src/utils/providers/git.ts | 63 +++++++++++-------- packages/server/src/utils/providers/github.ts | 45 +++++++------ packages/server/src/utils/providers/gitlab.ts | 45 +++++++------ 7 files changed, 181 insertions(+), 81 deletions(-) diff --git a/apps/dokploy/components/dashboard/application/general/generic/save-git-provider.tsx b/apps/dokploy/components/dashboard/application/general/generic/save-git-provider.tsx index 3d6f6a38..2613174b 100644 --- a/apps/dokploy/components/dashboard/application/general/generic/save-git-provider.tsx +++ b/apps/dokploy/components/dashboard/application/general/generic/save-git-provider.tsx @@ -44,6 +44,7 @@ const GitProviderSchema = z.object({ branch: z.string().min(1, "Branch required"), sshKey: z.string().optional(), watchPaths: z.array(z.string()).optional(), + recurseSubmodules: z.boolean().default(true), }); type GitProvider = z.infer; @@ -67,6 +68,7 @@ export const SaveGitProvider = ({ applicationId }: Props) => { repositoryURL: "", sshKey: undefined, watchPaths: [], + recurseSubmodules: true, }, resolver: zodResolver(GitProviderSchema), }); @@ -79,6 +81,7 @@ export const SaveGitProvider = ({ applicationId }: Props) => { buildPath: data.customGitBuildPath || "/", repositoryURL: data.customGitUrl || "", watchPaths: data.watchPaths || [], + recurseSubmodules: data.recurseSubmodules ?? true, }); } }, [form.reset, data, form]); @@ -91,6 +94,7 @@ export const SaveGitProvider = ({ applicationId }: Props) => { customGitSSHKeyId: values.sshKey === "none" ? null : values.sshKey, applicationId, watchPaths: values.watchPaths || [], + recurseSubmodules: values.recurseSubmodules, }) .then(async () => { toast.success("Git Provider Saved"); @@ -294,6 +298,23 @@ export const SaveGitProvider = ({ applicationId }: Props) => { )} /> + ( + + + + + Recurse Submodules + + )} + />
diff --git a/apps/dokploy/components/dashboard/application/general/generic/save-github-provider.tsx b/apps/dokploy/components/dashboard/application/general/generic/save-github-provider.tsx index 202c7f88..30df1812 100644 --- a/apps/dokploy/components/dashboard/application/general/generic/save-github-provider.tsx +++ b/apps/dokploy/components/dashboard/application/general/generic/save-github-provider.tsx @@ -57,6 +57,7 @@ const GithubProviderSchema = z.object({ branch: z.string().min(1, "Branch is required"), githubId: z.string().min(1, "Github Provider is required"), watchPaths: z.array(z.string()).optional(), + recurseSubmodules: z.boolean().default(true), }); type GithubProvider = z.infer; @@ -81,6 +82,7 @@ export const SaveGithubProvider = ({ applicationId }: Props) => { }, githubId: "", branch: "", + recurseSubmodules: true, }, resolver: zodResolver(GithubProviderSchema), }); @@ -124,6 +126,7 @@ export const SaveGithubProvider = ({ applicationId }: Props) => { buildPath: data.buildPath || "/", githubId: data.githubId || "", watchPaths: data.watchPaths || [], + recurseSubmodules: data.recurseSubmodules ?? true, }); } }, [form.reset, data, form]); @@ -137,6 +140,7 @@ export const SaveGithubProvider = ({ applicationId }: Props) => { buildPath: data.buildPath, githubId: data.githubId, watchPaths: data.watchPaths || [], + recurseSubmodules: data.recurseSubmodules, }) .then(async () => { toast.success("Service Provided Saved"); @@ -458,6 +462,23 @@ export const SaveGithubProvider = ({ applicationId }: Props) => { )} /> + ( + + + + + Recurse Submodules + + )} + />
diff --git a/apps/dokploy/components/dashboard/compose/general/generic/save-gitea-provider-compose.tsx b/apps/dokploy/components/dashboard/compose/general/generic/save-gitea-provider-compose.tsx index 201f9da2..6f9b50da 100644 --- a/apps/dokploy/components/dashboard/compose/general/generic/save-gitea-provider-compose.tsx +++ b/apps/dokploy/components/dashboard/compose/general/generic/save-gitea-provider-compose.tsx @@ -31,6 +31,7 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { Switch } from "@/components/ui/switch"; import { Tooltip, TooltipContent, @@ -59,6 +60,7 @@ const GiteaProviderSchema = z.object({ branch: z.string().min(1, "Branch is required"), giteaId: z.string().min(1, "Gitea Provider is required"), watchPaths: z.array(z.string()).optional(), + enableSubmodules: z.boolean().default(false), }); type GiteaProvider = z.infer; @@ -83,6 +85,7 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { giteaId: "", branch: "", watchPaths: [], + enableSubmodules: false, }, resolver: zodResolver(GiteaProviderSchema), }); @@ -136,6 +139,7 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { composePath: data.composePath || "./docker-compose.yml", giteaId: data.giteaId || "", watchPaths: data.watchPaths || [], + enableSubmodules: data.enableSubmodules ?? false, }); } }, [form.reset, data, form]); @@ -151,6 +155,7 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { sourceType: "gitea", composeStatus: "idle", watchPaths: data.watchPaths, + enableSubmodules: data.enableSubmodules, } as any) .then(async () => { toast.success("Service Provider Saved"); @@ -469,6 +474,21 @@ export const SaveGiteaProviderCompose = ({ composeId }: Props) => { )} /> + ( + + + + + Enable Submodules + + )} + />
diff --git a/apps/dokploy/components/dashboard/compose/general/generic/save-github-provider-compose.tsx b/apps/dokploy/components/dashboard/compose/general/generic/save-github-provider-compose.tsx index 4f4c1d5a..6e9b0a03 100644 --- a/apps/dokploy/components/dashboard/compose/general/generic/save-github-provider-compose.tsx +++ b/apps/dokploy/components/dashboard/compose/general/generic/save-github-provider-compose.tsx @@ -30,6 +30,7 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { Switch } from "@/components/ui/switch"; import { Tooltip, TooltipContent, @@ -57,6 +58,7 @@ const GithubProviderSchema = z.object({ branch: z.string().min(1, "Branch is required"), githubId: z.string().min(1, "Github Provider is required"), watchPaths: z.array(z.string()).optional(), + enableSubmodules: z.boolean().default(false), }); type GithubProvider = z.infer; @@ -82,6 +84,7 @@ export const SaveGithubProviderCompose = ({ composeId }: Props) => { githubId: "", branch: "", watchPaths: [], + enableSubmodules: false, }, resolver: zodResolver(GithubProviderSchema), }); @@ -125,6 +128,7 @@ export const SaveGithubProviderCompose = ({ composeId }: Props) => { composePath: data.composePath, githubId: data.githubId || "", watchPaths: data.watchPaths || [], + enableSubmodules: data.enableSubmodules ?? false, }); } }, [form.reset, data, form]); @@ -140,6 +144,7 @@ export const SaveGithubProviderCompose = ({ composeId }: Props) => { sourceType: "github", composeStatus: "idle", watchPaths: data.watchPaths, + enableSubmodules: data.enableSubmodules, }) .then(async () => { toast.success("Service Provided Saved"); @@ -460,6 +465,21 @@ export const SaveGithubProviderCompose = ({ composeId }: Props) => { )} /> + ( + + + + + Enable Submodules + + )} + />