Skip to content

Commit ad4a3ea

Browse files
vigneshrajsbclaude
andauthored
feat(envVariables): add branchName and repoName as general template variables (#129)
Previously, branchName was only available as a service-scoped variable (e.g. {{{web_frontend_branchName}}}), and repoName was not available at all. This adds both as top-level additionalVariables so users can reference {{{branchName}}} and {{{repoName}}} directly in any env var template. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent ec1d450 commit ad4a3ea

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

src/server/lib/__tests__/envVariables.test.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,4 +149,33 @@ describe('envVariables - cloud secret pattern preservation', () => {
149149
expect(result).toBe('DB={{aws:db:pass}} HOST=localhost GCP={{gcp:api:token}} PORT=5432');
150150
});
151151
});
152+
153+
describe('general template variables', () => {
154+
it('renders branchName and repoName variables', () => {
155+
const template = '{"BRANCH":"{{{branchName}}}","REPO":"{{{repoName}}}"}';
156+
const data = { branchName: 'feat/my-feature', repoName: 'myorg/myrepo' };
157+
158+
const result = preserveAndRestoreSecretPatterns(template, data);
159+
160+
expect(result).toBe('{"BRANCH":"feat/my-feature","REPO":"myorg/myrepo"}');
161+
});
162+
163+
it('renders branchName and repoName alongside other variables', () => {
164+
const template = '{{{branchName}}} {{{repoName}}} {{{buildUUID}}}';
165+
const data = { branchName: 'main', repoName: 'org/repo', buildUUID: 'uuid-123' };
166+
167+
const result = preserveAndRestoreSecretPatterns(template, data);
168+
169+
expect(result).toBe('main org/repo uuid-123');
170+
});
171+
172+
it('renders empty string when branchName or repoName are undefined', () => {
173+
const template = '{{{branchName}}} {{{repoName}}}';
174+
const data = {};
175+
176+
const result = preserveAndRestoreSecretPatterns(template, data);
177+
178+
expect(result).toBe(' ');
179+
});
180+
});
152181
});

src/server/lib/envVariables.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,8 @@ export abstract class EnvironmentVariables {
205205
buildSHA: build.sha,
206206
pullRequestNumber: build.pullRequest?.pullRequestNumber,
207207
namespace: build.namespace,
208+
branchName: build.pullRequest?.branchName,
209+
repoName: build.pullRequest?.fullName,
208210
});
209211

210212
return availableEnv;

src/server/lib/tests/buildEnvVariables.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,8 @@ describe('EnvironmentVariables', () => {
459459
buildSHA: 'abcdef',
460460
pullRequestNumber: '12345',
461461
namespace: 'testns',
462+
branchName: 'feat/my-feature',
463+
repoName: 'myorg/myrepo',
462464
}
463465
)
464466
).toEqual({
@@ -531,6 +533,8 @@ describe('EnvironmentVariables', () => {
531533
buildUUID: 'mock-test-12345',
532534
pullRequestNumber: '12345',
533535
namespace: 'testns',
536+
branchName: 'feat/my-feature',
537+
repoName: 'myorg/myrepo',
534538
});
535539
});
536540
});

0 commit comments

Comments
 (0)