Skip to content

Commit 16ddc3f

Browse files
committed
Prefer branch variables, but load preview envs too
1 parent 82e7484 commit 16ddc3f

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

packages/build/src/extensions/core/vercelSyncEnvVars.ts

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { BuildExtension } from "@trigger.dev/core/v3/build";
22
import { syncEnvVars } from "../core.js";
33

4+
type EnvVar = { name: string; value: string; gitBranch?: string };
5+
46
export function syncVercelEnvVars(options?: {
57
projectId?: string;
68
vercelAccessToken?: string;
@@ -57,7 +59,7 @@ export function syncVercelEnvVars(options?: {
5759
}
5860
const params = new URLSearchParams({ decrypt: "true" });
5961
if (vercelTeamId) params.set("teamId", vercelTeamId);
60-
if (branch) params.set("gitBranch", branch);
62+
params.set("target", vercelEnvironment);
6163
const vercelApiUrl = `https://api.vercel.com/v8/projects/${projectId}/env?${params}`;
6264

6365
try {
@@ -73,17 +75,37 @@ export function syncVercelEnvVars(options?: {
7375

7476
const data = await response.json();
7577

76-
const filteredEnvs = data.envs
78+
const filteredEnvs: EnvVar[] = data.envs
7779
.filter(
7880
(env: { type: string; value: string; target: string[] }) =>
7981
env.value && env.target.includes(vercelEnvironment)
8082
)
81-
.map((env: { key: string; value: string }) => ({
83+
.map((env: { key: string; value: string; gitBranch?: string }) => ({
8284
name: env.key,
8385
value: env.value,
86+
gitBranch: env.gitBranch,
8487
}));
8588

86-
return filteredEnvs;
89+
let envMap: Map<string, EnvVar> = new Map();
90+
91+
// if there's a branch we want to prefer branch values over base values
92+
if (branch) {
93+
for (const env of filteredEnvs) {
94+
if (!envMap.has(env.name)) {
95+
envMap.set(env.name, env);
96+
continue;
97+
}
98+
99+
//if there's a gitBranch we want to override any previous value
100+
if (env.gitBranch === branch) {
101+
envMap.set(env.name, env);
102+
}
103+
}
104+
} else {
105+
envMap = new Map(filteredEnvs.map((env) => [env.name, env]));
106+
}
107+
108+
return Array.from(envMap.values());
87109
} catch (error) {
88110
console.error("Error fetching or processing Vercel environment variables:", error);
89111
throw error; // Re-throw the error to be handled by the caller

0 commit comments

Comments
 (0)