feat: resolve app template env placeholders
This commit is contained in:
+31
-2
@@ -112,9 +112,15 @@ export class OneboxServicesManager {
|
||||
|
||||
// Merge platform env vars with user-specified env vars (user vars take precedence)
|
||||
const mergedEnvVars = { ...platformEnvVars, ...(options.envVars || {}) };
|
||||
this.resolveEnvVarTemplates(mergedEnvVars, {
|
||||
...platformEnvVars,
|
||||
SERVICE_NAME: options.name,
|
||||
SERVICE_DOMAIN: options.domain || '',
|
||||
SERVICE_PORT: String(options.port),
|
||||
});
|
||||
|
||||
// Update service with merged env vars
|
||||
if (Object.keys(platformEnvVars).length > 0) {
|
||||
// Update service with merged and resolved env vars.
|
||||
if (Object.keys(mergedEnvVars).length > 0) {
|
||||
this.database.updateService(service.id!, { envVars: mergedEnvVars });
|
||||
}
|
||||
|
||||
@@ -697,6 +703,29 @@ export class OneboxServicesManager {
|
||||
}
|
||||
}
|
||||
|
||||
private resolveEnvVarTemplates(
|
||||
envVarsArg: Record<string, string>,
|
||||
valuesArg: Record<string, string>,
|
||||
): void {
|
||||
for (const [key, value] of Object.entries(envVarsArg)) {
|
||||
const missingValues = new Set<string>();
|
||||
const resolvedValue = value.replace(/\$\{([A-Z0-9_]+)\}/g, (match, placeholderName) => {
|
||||
const replacement = valuesArg[placeholderName];
|
||||
if (replacement === undefined || replacement === '') {
|
||||
missingValues.add(placeholderName);
|
||||
return match;
|
||||
}
|
||||
return replacement;
|
||||
});
|
||||
if (missingValues.size > 0) {
|
||||
throw new Error(
|
||||
`Missing template value(s) for ${key}: ${Array.from(missingValues).join(', ')}`,
|
||||
);
|
||||
}
|
||||
envVarsArg[key] = resolvedValue;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Start auto-update monitoring for registry services
|
||||
* Polls every 30 seconds for digest changes and restarts services if needed
|
||||
|
||||
Reference in New Issue
Block a user