Skip to content

Commit 199aec8

Browse files
committed
feat(vercel): Flow to support Vercel's template deployment
1 parent 7672e8d commit 199aec8

File tree

4 files changed

+20
-2
lines changed

4 files changed

+20
-2
lines changed

apps/webapp/app/components/integrations/VercelOnboardingModal.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,9 @@ export function VercelOnboardingModal({
541541
formData.append("atomicBuilds", JSON.stringify(atomicBuilds));
542542
formData.append("discoverEnvVars", JSON.stringify(discoverEnvVars));
543543
formData.append("syncEnvVarsMapping", JSON.stringify(syncEnvVarsMapping));
544+
if (fromMarketplaceContext) {
545+
formData.append("origin", "marketplace");
546+
}
544547
if (nextUrl && fromMarketplaceContext && isGitHubConnectedForOnboarding) {
545548
formData.append("next", nextUrl);
546549
}

apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.github.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { parse } from "@conform-to/zod";
33
import { CheckCircleIcon, LockClosedIcon, PlusIcon } from "@heroicons/react/20/solid";
44
import { Form, useActionData, useNavigation, useNavigate, useSearchParams, useLocation } from "@remix-run/react";
55
import { type ActionFunctionArgs, type LoaderFunctionArgs, json } from "@remix-run/server-runtime";
6-
import { typedjson, useTypedFetcher } from "remix-typedjson";
6+
import { redirect,
7+
typedjson, useTypedFetcher } from "remix-typedjson";
78
import { z } from "zod";
89
import { OctoKitty } from "~/components/GitHubLoginButton";
910
import { Dialog, DialogContent, DialogHeader, DialogTrigger } from "~/components/primitives/Dialog";
@@ -39,6 +40,7 @@ import { findProjectBySlug } from "~/models/project.server";
3940
import { findEnvironmentBySlug } from "~/models/runtimeEnvironment.server";
4041
import { ProjectSettingsService } from "~/services/projectSettings.server";
4142
import { logger } from "~/services/logger.server";
43+
import { triggerInitialDeployment } from "~/services/platform.v3.server";
4244
import { requireUserId } from "~/services/session.server";
4345
import {
4446
githubAppInstallPath,
@@ -208,6 +210,18 @@ export async function action({ request, params }: ActionFunctionArgs) {
208210
);
209211

210212
if (resultOrFail.isOk()) {
213+
// Trigger initial deployment for marketplace flows now that GitHub is connected
214+
if (redirectUrl) {
215+
try {
216+
if (redirectUrl.includes("origin=marketplace")) {
217+
await triggerInitialDeployment(projectId, { environment: "prod" });
218+
}
219+
} catch (error) {
220+
logger.error("Invalid redirect URL, skipping initial deployment trigger", { redirectUrl, error });
221+
// Invalid redirectUrl, skip initial deployment check
222+
}
223+
}
224+
211225
return redirectWithMessage(
212226
request,
213227
redirectUrl,

apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ const CompleteOnboardingFormSchema = z.object({
113113
syncEnvVarsMapping: z.string().optional(),
114114
next: z.string().optional(),
115115
skipRedirect: z.string().optional().transform((val) => val === "true"),
116+
origin: z.string().optional(),
116117
});
117118

118119
const SkipOnboardingFormSchema = z.object({

apps/webapp/app/services/vercelIntegration.server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ export class VercelIntegrationService {
413413
});
414414

415415
if (upsertResult.isErr()) {
416-
logger.error("Failed to sync staging TRIGGER_SECRET_KEY to custom environment", {
416+
logger.warn("Failed to sync staging TRIGGER_SECRET_KEY to custom environment", {
417417
projectId,
418418
newCustomEnvironmentId,
419419
error: upsertResult.error.message,

0 commit comments

Comments
 (0)