@cat-factory/integrations 0.68.0 → 0.69.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/compose/ComposeEnvironmentProvider.d.ts +33 -0
- package/dist/modules/compose/ComposeEnvironmentProvider.d.ts.map +1 -1
- package/dist/modules/compose/ComposeEnvironmentProvider.js +374 -17
- package/dist/modules/compose/ComposeEnvironmentProvider.js.map +1 -1
- package/dist/modules/compose/compose-environment.logic.d.ts +145 -2
- package/dist/modules/compose/compose-environment.logic.d.ts.map +1 -1
- package/dist/modules/compose/compose-environment.logic.js +203 -1
- package/dist/modules/compose/compose-environment.logic.js.map +1 -1
- package/dist/modules/environments/EnvironmentConnectionService.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentConnectionService.js +1 -0
- package/dist/modules/environments/EnvironmentConnectionService.js.map +1 -1
- package/dist/modules/environments/EnvironmentProvisioningService.d.ts.map +1 -1
- package/dist/modules/environments/EnvironmentProvisioningService.js +26 -0
- package/dist/modules/environments/EnvironmentProvisioningService.js.map +1 -1
- package/dist/modules/environments/infra-handler-build.d.ts +9 -5
- package/dist/modules/environments/infra-handler-build.d.ts.map +1 -1
- package/dist/modules/environments/infra-handler-build.js +16 -1
- package/dist/modules/environments/infra-handler-build.js.map +1 -1
- package/dist/modules/environments/provision-detect.logic.js +4 -4
- package/dist/modules/environments/provision-detect.logic.js.map +1 -1
- package/package.json +3 -3
|
@@ -43,5 +43,38 @@ export declare class ComposeEnvironmentProvider implements EnvironmentProvider {
|
|
|
43
43
|
private safeDown;
|
|
44
44
|
/** Read the compose file from the configured source (co-located PR repo or a separate repo). */
|
|
45
45
|
private readComposeFile;
|
|
46
|
+
/** Resolve the checkout-free repo + ref the compose file(s) are read at (co-located or separate). */
|
|
47
|
+
private resolveComposeSource;
|
|
48
|
+
/**
|
|
49
|
+
* Provision a complex compose stack from a declarative STACK RECIPE: clone the repo into a
|
|
50
|
+
* working tree, materialize env-file templates, rewrite the layered `-f` files into isolation-
|
|
51
|
+
* safe project files, `up -d` under `COMPOSE_PROFILES` (no `--wait` — readiness is the recipe's
|
|
52
|
+
* own gate, since these stacks rarely declare healthchecks), run the ordered setup steps, then
|
|
53
|
+
* poll the terminal health gate — streaming a per-step provisioning-log entry the whole way. Any
|
|
54
|
+
* step's failure tears the half-up stack down for a clean retry and surfaces the step's error.
|
|
55
|
+
*/
|
|
56
|
+
private provisionRecipe;
|
|
57
|
+
/**
|
|
58
|
+
* Refuse a recipe's `host-command` steps unless the workspace handler opted in
|
|
59
|
+
* (`allowHostCommands`) AND the runtime can run host commands — the ONE trust-boundary-widening
|
|
60
|
+
* step kind. Returns a blocking message, or null when there are no host-command steps / they are
|
|
61
|
+
* allowed.
|
|
62
|
+
*/
|
|
63
|
+
private checkHostCommandsAllowed;
|
|
64
|
+
/** Run one recipe setup/teardown step, returning a normalized verdict (never throws). */
|
|
65
|
+
private runRecipeStep;
|
|
66
|
+
/** Run the terminal health gate until it passes or its budget elapses (never throws). */
|
|
67
|
+
private runHealthGate;
|
|
68
|
+
/** Probe a URL once for a `wait-http` step / `http` gate; a network error is a non-fatal retry. */
|
|
69
|
+
private probeHttp;
|
|
70
|
+
/** Probe a `wait-file` step once — in a container (`test -f`) or the checkout. */
|
|
71
|
+
private probeFile;
|
|
72
|
+
/**
|
|
73
|
+
* Poll `attempt` until it reports `done` (success) or `fatal` (a definitive failure — stop early),
|
|
74
|
+
* or the budget elapses (timeout failure). Attempts at least once; sleeps `intervalMs` between tries.
|
|
75
|
+
*/
|
|
76
|
+
private pollUntil;
|
|
77
|
+
/** Best-effort per-step provisioning-log entry (never throws; no-op when no recorder is wired). */
|
|
78
|
+
private logStep;
|
|
46
79
|
}
|
|
47
80
|
//# sourceMappingURL=ComposeEnvironmentProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposeEnvironmentProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/compose/ComposeEnvironmentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,gCAAgC,EAChC,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EAEvB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"ComposeEnvironmentProvider.d.ts","sourceRoot":"","sources":["../../../src/modules/compose/ComposeEnvironmentProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,gCAAgC,EAChC,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,EACnB,2BAA2B,EAC3B,sBAAsB,EAEvB,MAAM,qBAAqB,CAAA;AAO5B,OAAO,EAEL,KAAK,cAAc,EAwBpB,MAAM,gCAAgC,CAAA;AAgCvC,MAAM,WAAW,iCAAiC;IAChD,kGAAkG;IAClG,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,qBAAa,0BAA2B,YAAW,mBAAmB;IAElE,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,YACmB,OAAO,EAAE,cAAc,EAEvB,OAAO,GAAE,iCAAsC,EAC9D;IAEE,SAAS,CAAC,GAAG,EAAE,2BAA2B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA+EjF;IAEK,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA0B3E;IAEK,QAAQ,CAAC,GAAG,EAAE,0BAA0B,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAMtF;IAEK,cAAc,CAAC,IAAI,EAAE,gCAAgC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+B1F;IAED,cAAc,IAAI,mBAAmB,EAAE,CA+EtC;IAED,wBAAwB;QAEpB,UAAU;QACV,KAAK;QACL,OAAO;QACP,IAAI;YAAI,IAAI,EAAE,MAAM;;QACpB,SAAS;YAAI,MAAM,EAAE,MAAM;YAAW,YAAY;;QAClD,QAAQ;QACR,cAAc;MAEjB;IAID,8FAA8F;YAChF,iBAAiB;IAQ/B;;;;;OAKG;YACW,iBAAiB;IAkD/B,OAAO,CAAC,MAAM;IAYd,kFAAkF;YACpE,QAAQ;IAUtB,gGAAgG;YAClF,eAAe;IAU7B,qGAAqG;YACvF,oBAAoB;IAsBlC;;;;;;;OAOG;YACW,eAAe;IAwM7B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAiBhC,yFAAyF;YAC3E,aAAa;IA6D3B,yFAAyF;YAC3E,aAAa;IAmC3B,mGAAmG;YACrF,SAAS;IAmBvB,kFAAkF;YACpE,SAAS;IAevB;;;OAGG;YACW,SAAS;IAmBvB,mGAAmG;YACrF,OAAO;CAmBtB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { checkoutDepthFor, classifyComposePs, composeFileDir, parseComposeEnvConfig, parseHostPort, prepareComposeProject, renderEnvMap, renderTemplate, resolveProjectName, tailOutput, templateVars, } from './compose-environment.logic.js';
|
|
1
|
+
import { DEFAULT_RECIPE_HEALTH_GATE, checkoutDepthFor, classifyComposePs, composeExecArgs, composeFileDir, healthGateIntervalMs, healthGateTimeoutMs, matchesHttpExpectation, parseComposeEnvConfig, parseHostPort, prepareComposeProject, prepareRecipeComposeFiles, recipeCheckoutPathIssues, recipeProfilesEnv, recipeStepIntervalMs, recipeStepTimeoutMs, renderEnvMap, renderTemplate, resolveProjectName, resolveRecipeComposeFiles, tailOutput, templateVars, waitFileExecArgs, } from './compose-environment.logic.js';
|
|
2
2
|
// Native Docker Compose ephemeral-environment provider. It brings the PR repo's OWN
|
|
3
3
|
// `docker-compose.yml` up on a local Docker daemon under a per-PR project name, publishes the
|
|
4
4
|
// configured web service's port to an ephemeral host port, and returns `http://localhost:<port>`
|
|
@@ -38,6 +38,11 @@ export class ComposeEnvironmentProvider {
|
|
|
38
38
|
}
|
|
39
39
|
async provision(req) {
|
|
40
40
|
const config = parseComposeEnvConfig(req.manifest);
|
|
41
|
+
// A declarative STACK RECIPE (multi-`-f` layering, profiles, env-file materialization, ordered
|
|
42
|
+
// setup steps + a terminal health gate) takes a dedicated path — it always materializes a
|
|
43
|
+
// checkout and drives the imperative bring-up. Absent ⇒ the simple single-file flow below.
|
|
44
|
+
if (config.recipe)
|
|
45
|
+
return this.provisionRecipe(req, config, config.recipe);
|
|
41
46
|
const inputs = req.inputs;
|
|
42
47
|
const project = resolveProjectName(config, inputs);
|
|
43
48
|
const image = config.imageTemplate ? renderTemplate(config.imageTemplate, inputs) : undefined;
|
|
@@ -214,6 +219,17 @@ export class ComposeEnvironmentProvider {
|
|
|
214
219
|
default: '15',
|
|
215
220
|
help: 'Build-from-source only: how long `docker compose build` may run before it is aborted (separate from the startup health-wait).',
|
|
216
221
|
},
|
|
222
|
+
{
|
|
223
|
+
key: 'allowHostCommands',
|
|
224
|
+
label: 'Allow host commands',
|
|
225
|
+
type: 'select',
|
|
226
|
+
default: 'false',
|
|
227
|
+
options: [
|
|
228
|
+
{ value: 'false', label: 'No (containers only)' },
|
|
229
|
+
{ value: 'true', label: 'Yes (allow recipe host-command steps)' },
|
|
230
|
+
],
|
|
231
|
+
help: 'Stack recipes only: permit a recipe’s `host-command` steps to run an arbitrary command on this host (not in a container). Off by default; enable only for a trusted local deployment.',
|
|
232
|
+
},
|
|
217
233
|
{ key: 'scheme', label: 'URL scheme', default: 'http' },
|
|
218
234
|
{
|
|
219
235
|
key: 'projectTemplate',
|
|
@@ -320,29 +336,370 @@ export class ComposeEnvironmentProvider {
|
|
|
320
336
|
}
|
|
321
337
|
/** Read the compose file from the configured source (co-located PR repo or a separate repo). */
|
|
322
338
|
async readComposeFile(req, config) {
|
|
323
|
-
|
|
324
|
-
|
|
339
|
+
const { ctx, ref } = await this.resolveComposeSource(req, config);
|
|
340
|
+
const file = await ctx.repo.getFile(config.composePath, ref);
|
|
341
|
+
if (!file)
|
|
342
|
+
throw new Error(`No docker-compose file found at '${config.composePath}'`);
|
|
343
|
+
return file.content;
|
|
344
|
+
}
|
|
345
|
+
/** Resolve the checkout-free repo + ref the compose file(s) are read at (co-located or separate). */
|
|
346
|
+
async resolveComposeSource(req, config) {
|
|
325
347
|
if (!config.composeRepo) {
|
|
326
|
-
ctx = req.runRepo ?? null;
|
|
348
|
+
const ctx = req.runRepo ?? null;
|
|
327
349
|
if (!ctx) {
|
|
328
350
|
throw new Error('A co-located docker-compose file requires the run repo (is the VCS connected?)');
|
|
329
351
|
}
|
|
330
|
-
ref
|
|
352
|
+
return { ctx, ref: req.inputs.branch || ctx.baseBranch };
|
|
331
353
|
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
354
|
+
const [owner, repo] = config.composeRepo.split('/');
|
|
355
|
+
const ctx = (await req.resolveRepoFiles?.({ owner: owner, repo: repo, ref: config.composeRef })) ?? null;
|
|
356
|
+
if (!ctx)
|
|
357
|
+
throw new Error(`Could not resolve the compose repo '${config.composeRepo}'`);
|
|
358
|
+
return { ctx, ref: config.composeRef || ctx.baseBranch };
|
|
359
|
+
}
|
|
360
|
+
// --- stack-recipe execution ---------------------------------------------
|
|
361
|
+
/**
|
|
362
|
+
* Provision a complex compose stack from a declarative STACK RECIPE: clone the repo into a
|
|
363
|
+
* working tree, materialize env-file templates, rewrite the layered `-f` files into isolation-
|
|
364
|
+
* safe project files, `up -d` under `COMPOSE_PROFILES` (no `--wait` — readiness is the recipe's
|
|
365
|
+
* own gate, since these stacks rarely declare healthchecks), run the ordered setup steps, then
|
|
366
|
+
* poll the terminal health gate — streaming a per-step provisioning-log entry the whole way. Any
|
|
367
|
+
* step's failure tears the half-up stack down for a clean retry and surfaces the step's error.
|
|
368
|
+
*/
|
|
369
|
+
async provisionRecipe(req, config, recipe) {
|
|
370
|
+
const inputs = req.inputs;
|
|
371
|
+
const project = resolveProjectName(config, inputs);
|
|
372
|
+
const record = req.recordStep;
|
|
373
|
+
// A recipe always needs a working tree (its steps + env files operate on the checkout).
|
|
374
|
+
if (!this.runtime.checkout ||
|
|
375
|
+
!this.runtime.writeCheckoutFile ||
|
|
376
|
+
!this.runtime.copyCheckoutFile) {
|
|
377
|
+
return this.failed(project, 'A stack recipe needs a Docker-capable runtime that can clone + write into a checkout (unavailable on this deployment).');
|
|
378
|
+
}
|
|
379
|
+
// Fail fast (before the daemon / clone) on any checkout-escaping recipe path, and on a
|
|
380
|
+
// `host-command` step that isn't opted into — the `prepareComposeProject` deterministic posture.
|
|
381
|
+
const pathIssues = recipeCheckoutPathIssues(recipe);
|
|
382
|
+
if (pathIssues.length > 0) {
|
|
383
|
+
return this.failed(project, `This stack recipe can't be provisioned:\n- ${pathIssues.join('\n- ')}`);
|
|
384
|
+
}
|
|
385
|
+
const hostCmdIssue = this.checkHostCommandsAllowed(recipe, config);
|
|
386
|
+
if (hostCmdIssue)
|
|
387
|
+
return this.failed(project, hostCmdIssue);
|
|
388
|
+
const image = config.imageTemplate ? renderTemplate(config.imageTemplate, inputs) : undefined;
|
|
389
|
+
const vars = templateVars(inputs, project, image);
|
|
390
|
+
// The compose invocation env: the templated `envTemplate` plus `COMPOSE_PROFILES`.
|
|
391
|
+
const env = {
|
|
392
|
+
...(config.envTemplate ? renderEnvMap(config.envTemplate, vars) : {}),
|
|
393
|
+
...recipeProfilesEnv(recipe),
|
|
394
|
+
};
|
|
395
|
+
// Read + rewrite the layered compose files. `-f` order is preserved; the first file's dir is the
|
|
396
|
+
// shared `--project-directory`, so every layer's relatives resolve against it (its checkout depth
|
|
397
|
+
// bounds the host-escape guard). A blocking issue fails BEFORE the daemon is touched.
|
|
398
|
+
const composeFiles = resolveRecipeComposeFiles(recipe, config.composePath);
|
|
399
|
+
const baseDepth = checkoutDepthFor(composeFiles[0]);
|
|
400
|
+
let source;
|
|
401
|
+
try {
|
|
402
|
+
source = await this.resolveComposeSource(req, config);
|
|
403
|
+
}
|
|
404
|
+
catch (err) {
|
|
405
|
+
return this.failed(project, err instanceof Error ? err.message : String(err));
|
|
406
|
+
}
|
|
407
|
+
const inputsFiles = [];
|
|
408
|
+
for (const path of composeFiles) {
|
|
409
|
+
const file = await source.ctx.repo.getFile(path, source.ref);
|
|
410
|
+
if (!file)
|
|
411
|
+
return this.failed(project, `No docker-compose file found at '${path}'`);
|
|
412
|
+
inputsFiles.push({ path, text: renderTemplate(file.content, vars) });
|
|
413
|
+
}
|
|
414
|
+
const prepared = prepareRecipeComposeFiles(inputsFiles, config.service, config.port, {
|
|
415
|
+
baseDepth,
|
|
416
|
+
});
|
|
417
|
+
if (prepared.issues.length > 0) {
|
|
418
|
+
return this.failed(project, `This stack recipe can't be provisioned as a preview env:\n- ${prepared.issues.join('\n- ')}`);
|
|
419
|
+
}
|
|
420
|
+
// Clone the PR head into a working tree so `build:` contexts / binds / env_files resolve.
|
|
421
|
+
const clone = await req.clone?.();
|
|
422
|
+
if (!clone) {
|
|
423
|
+
return this.failed(project, 'A stack recipe needs a repo clone target — is the VCS connected and the service linked to a repo?');
|
|
424
|
+
}
|
|
425
|
+
const ref = req.inputs.branch || clone.ref;
|
|
426
|
+
let checkoutDir;
|
|
427
|
+
try {
|
|
428
|
+
;
|
|
429
|
+
({ dir: checkoutDir } = await this.runtime.checkout(project, {
|
|
430
|
+
cloneUrl: clone.cloneUrl,
|
|
431
|
+
ref,
|
|
432
|
+
token: clone.token,
|
|
433
|
+
}));
|
|
434
|
+
}
|
|
435
|
+
catch (err) {
|
|
436
|
+
return this.failed(project, `Could not clone the repo for the recipe: ${err instanceof Error ? err.message : String(err)}`);
|
|
437
|
+
}
|
|
438
|
+
const composeDir = composeFileDir(composeFiles[0]);
|
|
439
|
+
const projectDir = composeDir ? `${checkoutDir}/${composeDir}` : checkoutDir;
|
|
440
|
+
// Materialize env-file templates (`.env.dev.local-dist` → `.env.dev.local`) BEFORE `up`, each a
|
|
441
|
+
// logged step so a materialization failure is visible.
|
|
442
|
+
for (const envFile of recipe.envFiles ?? []) {
|
|
443
|
+
const started = Date.now();
|
|
444
|
+
try {
|
|
445
|
+
await this.runtime.copyCheckoutFile(project, envFile.template, envFile.target);
|
|
446
|
+
await this.logStep(record, `env-file: ${envFile.target}`, started, { ok: true });
|
|
447
|
+
}
|
|
448
|
+
catch (err) {
|
|
449
|
+
const message = `Could not materialize env file '${envFile.target}': ${err instanceof Error ? err.message : String(err)}`;
|
|
450
|
+
await this.logStep(record, `env-file: ${envFile.target}`, started, {
|
|
451
|
+
ok: false,
|
|
452
|
+
error: message,
|
|
453
|
+
});
|
|
454
|
+
await this.safeDown(project);
|
|
455
|
+
return this.failed(project, message);
|
|
339
456
|
}
|
|
340
|
-
ref = config.composeRef || ctx.baseBranch;
|
|
341
457
|
}
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
458
|
+
// Write the rewritten compose files into the checkout (beside their originals) + build the `-f`s.
|
|
459
|
+
const files = [];
|
|
460
|
+
for (const file of prepared.files) {
|
|
461
|
+
const abs = await this.runtime.writeCheckoutFile(project, file.path, file.content);
|
|
462
|
+
files.push('-f', abs);
|
|
463
|
+
}
|
|
464
|
+
const scope = ['-p', project, '--project-directory', projectDir, ...files];
|
|
465
|
+
// Optional build (pull mode skips it); then `up -d` (no `--wait`).
|
|
466
|
+
if (config.build) {
|
|
467
|
+
const buildStarted = Date.now();
|
|
468
|
+
const build = await this.runtime.compose([...scope, 'build'], {
|
|
469
|
+
env,
|
|
470
|
+
timeoutMs: config.buildTimeoutMs ?? DEFAULT_BUILD_TIMEOUT_MS,
|
|
471
|
+
});
|
|
472
|
+
const buildOk = build.code === 0;
|
|
473
|
+
await this.logStep(record, 'compose build', buildStarted, {
|
|
474
|
+
ok: buildOk,
|
|
475
|
+
...(buildOk ? {} : { error: tailOutput(build.stderr || build.stdout) }),
|
|
476
|
+
});
|
|
477
|
+
if (!buildOk) {
|
|
478
|
+
await this.safeDown(project);
|
|
479
|
+
return this.failed(project, tailOutput(build.stderr || build.stdout) || 'docker compose build failed');
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
const upStarted = Date.now();
|
|
483
|
+
const up = await this.runtime.compose([...scope, 'up', '-d'], { env, timeoutMs: UP_TIMEOUT_MS });
|
|
484
|
+
const upOk = up.code === 0;
|
|
485
|
+
await this.logStep(record, 'compose up', upStarted, {
|
|
486
|
+
ok: upOk,
|
|
487
|
+
...(upOk ? {} : { error: tailOutput(up.stderr || up.stdout) }),
|
|
488
|
+
});
|
|
489
|
+
if (!upOk) {
|
|
490
|
+
await this.safeDown(project);
|
|
491
|
+
return this.failed(project, tailOutput(up.stderr || up.stdout) || 'docker compose up failed');
|
|
492
|
+
}
|
|
493
|
+
// Ordered setup steps, then the terminal health gate. The first failure tears down + surfaces.
|
|
494
|
+
for (const step of recipe.setupSteps ?? []) {
|
|
495
|
+
const started = Date.now();
|
|
496
|
+
const result = await this.runRecipeStep(step, { scope, env, project, config });
|
|
497
|
+
await this.logStep(record, step.name, started, result);
|
|
498
|
+
if (!result.ok) {
|
|
499
|
+
await this.safeDown(project);
|
|
500
|
+
return this.failed(project, `Recipe step '${step.name}' failed: ${result.error}`);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
const gate = recipe.healthGate ?? DEFAULT_RECIPE_HEALTH_GATE;
|
|
504
|
+
const gateStarted = Date.now();
|
|
505
|
+
const gateResult = await this.runHealthGate(gate, { scope, env });
|
|
506
|
+
await this.logStep(record, `health gate (${gate.kind})`, gateStarted, gateResult);
|
|
507
|
+
if (!gateResult.ok) {
|
|
508
|
+
await this.safeDown(project);
|
|
509
|
+
return this.failed(project, `Health gate did not pass: ${gateResult.error}`);
|
|
510
|
+
}
|
|
511
|
+
// Resolve the preview URL from the probed service's ephemeral host port.
|
|
512
|
+
const portRes = await this.runtime.compose([...scope, 'port', config.service, String(config.port)], {
|
|
513
|
+
env,
|
|
514
|
+
timeoutMs: SHORT_TIMEOUT_MS,
|
|
515
|
+
});
|
|
516
|
+
const hostPort = parseHostPort(portRes.stdout);
|
|
517
|
+
if (hostPort === null) {
|
|
518
|
+
await this.safeDown(project);
|
|
519
|
+
return this.failed(project, `Service '${config.service}' does not publish container port ${config.port}; cannot resolve a preview URL`);
|
|
520
|
+
}
|
|
521
|
+
const scheme = config.scheme ?? 'http';
|
|
522
|
+
const url = `${scheme}://localhost:${hostPort}`;
|
|
523
|
+
return {
|
|
524
|
+
externalId: project,
|
|
525
|
+
url,
|
|
526
|
+
status: 'ready',
|
|
527
|
+
expiresAt: config.defaultTtlMs ? Date.now() + config.defaultTtlMs : null,
|
|
528
|
+
access: null,
|
|
529
|
+
fields: { project, url, hostPort: String(hostPort), scheme },
|
|
530
|
+
};
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Refuse a recipe's `host-command` steps unless the workspace handler opted in
|
|
534
|
+
* (`allowHostCommands`) AND the runtime can run host commands — the ONE trust-boundary-widening
|
|
535
|
+
* step kind. Returns a blocking message, or null when there are no host-command steps / they are
|
|
536
|
+
* allowed.
|
|
537
|
+
*/
|
|
538
|
+
checkHostCommandsAllowed(recipe, config) {
|
|
539
|
+
// Only `setupSteps` execute in this slice (`teardownSteps` are deferred — `down -v` is the
|
|
540
|
+
// teardown), so gating on a teardown-only host-command would demand the opt-in for a step that
|
|
541
|
+
// never runs. Add `teardownSteps` back here when their execution lands.
|
|
542
|
+
if (!(recipe.setupSteps ?? []).some((s) => s.kind === 'host-command'))
|
|
543
|
+
return null;
|
|
544
|
+
if (!config.allowHostCommands) {
|
|
545
|
+
return "This recipe declares host-command step(s), but this workspace's compose handler has not enabled them (set 'Allow host commands').";
|
|
546
|
+
}
|
|
547
|
+
if (!this.runtime.hostCommand) {
|
|
548
|
+
return 'This recipe declares host-command step(s), but the runtime cannot run host commands.';
|
|
549
|
+
}
|
|
550
|
+
return null;
|
|
551
|
+
}
|
|
552
|
+
/** Run one recipe setup/teardown step, returning a normalized verdict (never throws). */
|
|
553
|
+
async runRecipeStep(step, ctx) {
|
|
554
|
+
const timeoutMs = recipeStepTimeoutMs(step);
|
|
555
|
+
try {
|
|
556
|
+
switch (step.kind) {
|
|
557
|
+
case 'compose-exec': {
|
|
558
|
+
const res = await this.runtime.compose(composeExecArgs(ctx.scope, step), {
|
|
559
|
+
env: ctx.env,
|
|
560
|
+
timeoutMs,
|
|
561
|
+
...(step.stdinFile
|
|
562
|
+
? { stdin: { project: ctx.project, checkoutFile: step.stdinFile } }
|
|
563
|
+
: {}),
|
|
564
|
+
});
|
|
565
|
+
return res.code === 0
|
|
566
|
+
? { ok: true }
|
|
567
|
+
: { ok: false, error: tailOutput(res.stderr || res.stdout) || `exit ${res.code}` };
|
|
568
|
+
}
|
|
569
|
+
case 'copy-file': {
|
|
570
|
+
await this.runtime.copyCheckoutFile(ctx.project, step.from, step.to);
|
|
571
|
+
return { ok: true };
|
|
572
|
+
}
|
|
573
|
+
case 'wait-http':
|
|
574
|
+
return this.pollUntil(timeoutMs, recipeStepIntervalMs(step), () => this.probeHttp(step.url, step));
|
|
575
|
+
case 'wait-file':
|
|
576
|
+
return this.pollUntil(timeoutMs, recipeStepIntervalMs(step), () => this.probeFile(step, ctx));
|
|
577
|
+
case 'host-command': {
|
|
578
|
+
// Guarded up front by `checkHostCommandsAllowed`, so `hostCommand` is present here.
|
|
579
|
+
const res = await this.runtime.hostCommand(ctx.project, step.command, {
|
|
580
|
+
...(step.workdir ? { workdir: step.workdir } : {}),
|
|
581
|
+
env: ctx.env,
|
|
582
|
+
timeoutMs,
|
|
583
|
+
});
|
|
584
|
+
return res.code === 0
|
|
585
|
+
? { ok: true }
|
|
586
|
+
: { ok: false, error: tailOutput(res.stderr || res.stdout) || `exit ${res.code}` };
|
|
587
|
+
}
|
|
588
|
+
default:
|
|
589
|
+
// `isStackRecipe` is a structural guard, not a re-validation, so a stale/hand-edited
|
|
590
|
+
// config can carry an unknown step kind. Return a clean verdict rather than falling off
|
|
591
|
+
// the switch and returning `undefined` (which would crash the caller's `!result.ok`).
|
|
592
|
+
return {
|
|
593
|
+
ok: false,
|
|
594
|
+
error: `unsupported recipe step kind '${step.kind ?? 'unknown'}'`,
|
|
595
|
+
};
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
catch (err) {
|
|
599
|
+
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
600
|
+
}
|
|
346
601
|
}
|
|
602
|
+
/** Run the terminal health gate until it passes or its budget elapses (never throws). */
|
|
603
|
+
async runHealthGate(gate, ctx) {
|
|
604
|
+
const timeoutMs = healthGateTimeoutMs(gate);
|
|
605
|
+
const intervalMs = healthGateIntervalMs(gate);
|
|
606
|
+
if (gate.kind === 'http') {
|
|
607
|
+
return this.pollUntil(timeoutMs, intervalMs, () => this.probeHttp(gate.url, gate));
|
|
608
|
+
}
|
|
609
|
+
if (gate.kind === 'compose-exec') {
|
|
610
|
+
return this.pollUntil(timeoutMs, intervalMs, async () => {
|
|
611
|
+
const res = await this.runtime.compose(composeExecArgs(ctx.scope, { service: gate.service, command: gate.command }), { env: ctx.env, timeoutMs: SHORT_TIMEOUT_MS });
|
|
612
|
+
return {
|
|
613
|
+
done: res.code === 0,
|
|
614
|
+
error: tailOutput(res.stderr || res.stdout) || `exit ${res.code}`,
|
|
615
|
+
};
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
// compose-healthy: poll `ps` until the stack is ready / a service crashed.
|
|
619
|
+
return this.pollUntil(timeoutMs, intervalMs, async () => {
|
|
620
|
+
const ps = await this.runtime.compose([...ctx.scope, 'ps', '-a', '--format', 'json'], {
|
|
621
|
+
env: ctx.env,
|
|
622
|
+
timeoutMs: SHORT_TIMEOUT_MS,
|
|
623
|
+
});
|
|
624
|
+
const status = ps.code === 0 ? classifyComposePs(ps.stdout) : 'provisioning';
|
|
625
|
+
if (status === 'ready')
|
|
626
|
+
return { done: true };
|
|
627
|
+
if (status === 'failed')
|
|
628
|
+
return { done: false, fatal: true, error: 'a service is unhealthy or crashed' };
|
|
629
|
+
return { done: false, error: 'stack not healthy yet' };
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
/** Probe a URL once for a `wait-http` step / `http` gate; a network error is a non-fatal retry. */
|
|
633
|
+
async probeHttp(url, opts) {
|
|
634
|
+
try {
|
|
635
|
+
const res = await fetch(url, { signal: AbortSignal.timeout(SHORT_TIMEOUT_MS) });
|
|
636
|
+
// Read the body only when a substring is required; otherwise release it so the poll doesn't
|
|
637
|
+
// leave an unconsumed body pinning the connection on every re-probe.
|
|
638
|
+
let body = '';
|
|
639
|
+
if (opts.expectBodyContains)
|
|
640
|
+
body = await res.text();
|
|
641
|
+
else
|
|
642
|
+
await res.body?.cancel();
|
|
643
|
+
return matchesHttpExpectation(res.status, body, opts)
|
|
644
|
+
? { done: true }
|
|
645
|
+
: { done: false, error: `HTTP ${res.status}` };
|
|
646
|
+
}
|
|
647
|
+
catch (err) {
|
|
648
|
+
return { done: false, error: err instanceof Error ? err.message : String(err) };
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
/** Probe a `wait-file` step once — in a container (`test -f`) or the checkout. */
|
|
652
|
+
async probeFile(step, ctx) {
|
|
653
|
+
if (step.service) {
|
|
654
|
+
const res = await this.runtime.compose(waitFileExecArgs(ctx.scope, step.service, step.path), {
|
|
655
|
+
env: ctx.env,
|
|
656
|
+
timeoutMs: SHORT_TIMEOUT_MS,
|
|
657
|
+
});
|
|
658
|
+
return res.code === 0 ? { done: true } : { done: false, error: `not present yet` };
|
|
659
|
+
}
|
|
660
|
+
const exists = (await this.runtime.checkoutFileExists?.(ctx.project, step.path)) ?? false;
|
|
661
|
+
return exists ? { done: true } : { done: false, error: `not present yet` };
|
|
662
|
+
}
|
|
663
|
+
/**
|
|
664
|
+
* Poll `attempt` until it reports `done` (success) or `fatal` (a definitive failure — stop early),
|
|
665
|
+
* or the budget elapses (timeout failure). Attempts at least once; sleeps `intervalMs` between tries.
|
|
666
|
+
*/
|
|
667
|
+
async pollUntil(timeoutMs, intervalMs, attempt) {
|
|
668
|
+
const deadline = Date.now() + timeoutMs;
|
|
669
|
+
let lastError = 'timed out';
|
|
670
|
+
for (;;) {
|
|
671
|
+
const res = await attempt();
|
|
672
|
+
if (res.done)
|
|
673
|
+
return { ok: true };
|
|
674
|
+
if (res.fatal)
|
|
675
|
+
return { ok: false, error: res.error ?? 'failed' };
|
|
676
|
+
lastError = res.error ?? lastError;
|
|
677
|
+
if (Date.now() + intervalMs >= deadline) {
|
|
678
|
+
return { ok: false, error: `timed out after ${timeoutMs}ms (${lastError})` };
|
|
679
|
+
}
|
|
680
|
+
await sleep(intervalMs);
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
/** Best-effort per-step provisioning-log entry (never throws; no-op when no recorder is wired). */
|
|
684
|
+
async logStep(record, name, startedAt, result) {
|
|
685
|
+
if (!record)
|
|
686
|
+
return;
|
|
687
|
+
try {
|
|
688
|
+
await record({
|
|
689
|
+
name,
|
|
690
|
+
outcome: result.ok ? 'success' : 'failure',
|
|
691
|
+
durationMs: Date.now() - startedAt,
|
|
692
|
+
...(result.detail ? { detail: result.detail } : {}),
|
|
693
|
+
...(result.error ? { error: result.error } : {}),
|
|
694
|
+
});
|
|
695
|
+
}
|
|
696
|
+
catch {
|
|
697
|
+
// best-effort: a log-write failure must never break the provision.
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
/** Sleep `ms` between poll attempts (host-side; recipe execution is local-facade only). */
|
|
702
|
+
function sleep(ms) {
|
|
703
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
347
704
|
}
|
|
348
705
|
//# sourceMappingURL=ComposeEnvironmentProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposeEnvironmentProvider.js","sourceRoot":"","sources":["../../../src/modules/compose/ComposeEnvironmentProvider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComposeEnvironmentProvider.js","sourceRoot":"","sources":["../../../src/modules/compose/ComposeEnvironmentProvider.ts"],"names":[],"mappings":"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"}
|