@empire-builder-kit/nx 1.0.0-beta.4 → 1.0.0-beta.6
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/README.md +13 -4
- package/executors.json +20 -0
- package/generators.json +5 -0
- package/package.json +15 -1
- package/src/executors/deployment-plan/deployment-plan.d.ts +9 -0
- package/src/executors/deployment-plan/deployment-plan.js +50 -0
- package/src/executors/deployment-plan/deployment-plan.js.map +1 -0
- package/src/executors/deployment-plan/schema.json +24 -0
- package/src/executors/foundation-preflight/foundation-preflight.js +22 -0
- package/src/executors/foundation-preflight/foundation-preflight.js.map +1 -1
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.d.ts +8 -0
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js +41 -0
- package/src/executors/foundation-profile-preflight/foundation-profile-preflight.js.map +1 -0
- package/src/executors/foundation-profile-preflight/schema.json +21 -0
- package/src/executors/github-bootstrap/github-bootstrap.d.ts +8 -0
- package/src/executors/github-bootstrap/github-bootstrap.js +27 -0
- package/src/executors/github-bootstrap/github-bootstrap.js.map +1 -0
- package/src/executors/github-bootstrap/schema.json +25 -0
- package/src/executors/sst-lifecycle/run-sst-command.d.ts +2 -0
- package/src/executors/sst-lifecycle/run-sst-command.js +58 -5
- package/src/executors/sst-lifecycle/run-sst-command.js.map +1 -1
- package/src/executors/work-markers/schema.json +14 -0
- package/src/executors/work-markers/work-markers.d.ts +6 -0
- package/src/executors/work-markers/work-markers.js +20 -0
- package/src/executors/work-markers/work-markers.js.map +1 -0
- package/src/generators/preset/workspace-files.d.ts +1 -1
- package/src/generators/preset/workspace-files.js +702 -38
- package/src/generators/preset/workspace-files.js.map +1 -1
- package/src/generators/repository-policy/repository-policy.d.ts +4 -0
- package/src/generators/repository-policy/repository-policy.js +55 -0
- package/src/generators/repository-policy/repository-policy.js.map +1 -0
- package/src/generators/repository-policy/schema.d.ts +16 -0
- package/src/generators/repository-policy/schema.json +41 -0
- package/src/generators/slice/slice.js +22 -0
- package/src/generators/slice/slice.js.map +1 -1
- package/src/git-policy/action-pins.d.ts +28 -0
- package/src/git-policy/action-pins.js +35 -0
- package/src/git-policy/action-pins.js.map +1 -0
- package/src/git-policy/github-bootstrap.d.ts +20 -0
- package/src/git-policy/github-bootstrap.js +676 -0
- package/src/git-policy/github-bootstrap.js.map +1 -0
- package/src/git-policy/index.d.ts +3 -0
- package/src/git-policy/index.js +7 -0
- package/src/git-policy/index.js.map +1 -0
- package/src/git-policy/routing.d.ts +15 -0
- package/src/git-policy/routing.js +77 -0
- package/src/git-policy/routing.js.map +1 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +3 -0
- package/src/index.js.map +1 -1
- package/src/repository-policy/aurora-preflight.d.ts +15 -0
- package/src/repository-policy/aurora-preflight.js +45 -0
- package/src/repository-policy/aurora-preflight.js.map +1 -0
- package/src/repository-policy/deployment-plan.d.ts +24 -0
- package/src/repository-policy/deployment-plan.js +124 -0
- package/src/repository-policy/deployment-plan.js.map +1 -0
- package/src/repository-policy/foundation-profile.d.ts +20 -0
- package/src/repository-policy/foundation-profile.js +45 -0
- package/src/repository-policy/foundation-profile.js.map +1 -0
- package/src/repository-policy/index.d.ts +4 -0
- package/src/repository-policy/index.js +8 -0
- package/src/repository-policy/index.js.map +1 -0
- package/src/repository-policy/policy.d.ts +53 -0
- package/src/repository-policy/policy.js +250 -0
- package/src/repository-policy/policy.js.map +1 -0
- package/src/schemas/repository-policy-v1.json +42 -0
- package/src/work-markers/index.d.ts +1 -0
- package/src/work-markers/index.js +5 -0
- package/src/work-markers/index.js.map +1 -0
- package/src/work-markers/work-markers.d.ts +39 -0
- package/src/work-markers/work-markers.js +359 -0
- package/src/work-markers/work-markers.js.map +1 -0
package/README.md
CHANGED
|
@@ -9,12 +9,21 @@ Generators:
|
|
|
9
9
|
- `function`
|
|
10
10
|
- `service`
|
|
11
11
|
- `job`
|
|
12
|
+
- `repository-policy`
|
|
12
13
|
- `upgrade`
|
|
13
14
|
|
|
14
|
-
The package also owns
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
The package also owns Repository Operating Policy validation and protected
|
|
16
|
+
deployment planning, generated Git routing and report-first GitHub bootstrap,
|
|
17
|
+
Foundation discovery/profile preflight, trusted external Blueprint execution,
|
|
18
|
+
generated-file ownership, ownership-aware agent work-marker reporting and
|
|
19
|
+
protected-promotion enforcement, and Nx-wrapped SST lifecycle executors.
|
|
20
|
+
Consumers should never invoke SST lifecycle commands directly.
|
|
21
|
+
|
|
22
|
+
Generated workspaces expose `work-markers` as both a direct target and part of
|
|
23
|
+
workspace health. The generated `AGENTS.md`, `CLAUDE.md`, and runbook define how
|
|
24
|
+
deterministic generators and updates can hand contextual work to agents without
|
|
25
|
+
placing markers in managed output. The public `formatWorkMarkerComment` helper
|
|
26
|
+
keeps Blueprint and repository-update handoffs on the same canonical syntax.
|
|
18
27
|
|
|
19
28
|
External Blueprints must be exact-version packages allowed by the workspace
|
|
20
29
|
trust policy. Their generator runs in a bounded child process, which is a
|
package/executors.json
CHANGED
|
@@ -15,11 +15,31 @@
|
|
|
15
15
|
"schema": "./src/executors/dev-setup/schema.json",
|
|
16
16
|
"description": "Explicitly create, trust, upgrade, or remove the per-user local HTTPS gateway."
|
|
17
17
|
},
|
|
18
|
+
"deployment-plan": {
|
|
19
|
+
"implementation": "./src/executors/deployment-plan/deployment-plan",
|
|
20
|
+
"schema": "./src/executors/deployment-plan/schema.json",
|
|
21
|
+
"description": "Atomically validate and select the complete protected deployment set before AWS access."
|
|
22
|
+
},
|
|
23
|
+
"work-markers": {
|
|
24
|
+
"implementation": "./src/executors/work-markers/work-markers",
|
|
25
|
+
"schema": "./src/executors/work-markers/schema.json",
|
|
26
|
+
"description": "Report ownership-aware source work markers and enforce protected-promotion blockers."
|
|
27
|
+
},
|
|
28
|
+
"github-bootstrap": {
|
|
29
|
+
"implementation": "./src/executors/github-bootstrap/github-bootstrap",
|
|
30
|
+
"schema": "./src/executors/github-bootstrap/schema.json",
|
|
31
|
+
"description": "Report or explicitly apply protected GitHub rulesets and environments without creating secrets."
|
|
32
|
+
},
|
|
18
33
|
"foundation-preflight": {
|
|
19
34
|
"implementation": "./src/executors/foundation-preflight/foundation-preflight",
|
|
20
35
|
"schema": "./src/executors/foundation-preflight/schema.json",
|
|
21
36
|
"description": "Validate the deployed Standard Foundation contract before operating a Product Slice."
|
|
22
37
|
},
|
|
38
|
+
"foundation-profile-preflight": {
|
|
39
|
+
"implementation": "./src/executors/foundation-profile-preflight/foundation-profile-preflight",
|
|
40
|
+
"schema": "./src/executors/foundation-profile-preflight/schema.json",
|
|
41
|
+
"description": "Verify the pinned Aurora profile capability before a protected Foundation mutation."
|
|
42
|
+
},
|
|
23
43
|
"foundation-remove-preflight": {
|
|
24
44
|
"implementation": "./src/executors/foundation-remove-preflight/foundation-remove-preflight",
|
|
25
45
|
"schema": "./src/executors/foundation-remove-preflight/schema.json",
|
package/generators.json
CHANGED
|
@@ -20,6 +20,11 @@
|
|
|
20
20
|
"schema": "./src/generators/slice/schema.json",
|
|
21
21
|
"description": "Generate an EBK v1 product slice from the built-in or a trusted external Blueprint."
|
|
22
22
|
},
|
|
23
|
+
"repository-policy": {
|
|
24
|
+
"factory": "./src/generators/repository-policy/repository-policy",
|
|
25
|
+
"schema": "./src/generators/repository-policy/schema.json",
|
|
26
|
+
"description": "Report or apply an explicit source-controlled Repository Operating Policy change without touching AWS or GitHub."
|
|
27
|
+
},
|
|
23
28
|
"upgrade": {
|
|
24
29
|
"factory": "./src/generators/upgrade/upgrade",
|
|
25
30
|
"schema": "./src/generators/upgrade/schema.json",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empire-builder-kit/nx",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.6",
|
|
4
4
|
"description": "Nx generators, executors, and Blueprint contracts for Empire Builder Kit",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -20,6 +20,10 @@
|
|
|
20
20
|
"types": "./src/foundation/index.d.ts",
|
|
21
21
|
"default": "./src/foundation/index.js"
|
|
22
22
|
},
|
|
23
|
+
"./git-policy": {
|
|
24
|
+
"types": "./src/git-policy/index.d.ts",
|
|
25
|
+
"default": "./src/git-policy/index.js"
|
|
26
|
+
},
|
|
23
27
|
"./local-dev": {
|
|
24
28
|
"types": "./src/local-dev/index.d.ts",
|
|
25
29
|
"default": "./src/local-dev/index.js"
|
|
@@ -28,11 +32,20 @@
|
|
|
28
32
|
"types": "./src/ownership/index.d.ts",
|
|
29
33
|
"default": "./src/ownership/index.js"
|
|
30
34
|
},
|
|
35
|
+
"./repository-policy": {
|
|
36
|
+
"types": "./src/repository-policy/index.d.ts",
|
|
37
|
+
"default": "./src/repository-policy/index.js"
|
|
38
|
+
},
|
|
39
|
+
"./work-markers": {
|
|
40
|
+
"types": "./src/work-markers/index.d.ts",
|
|
41
|
+
"default": "./src/work-markers/index.js"
|
|
42
|
+
},
|
|
31
43
|
"./schemas/blueprint-v1.json": "./src/schemas/blueprint-v1.json",
|
|
32
44
|
"./schemas/blueprint-input-schema-v1.json": "./src/schemas/blueprint-input-schema-v1.json",
|
|
33
45
|
"./schemas/foundation-requirement-v1.json": "./src/schemas/foundation-requirement-v1.json",
|
|
34
46
|
"./schemas/foundation-ownership-v2.json": "./src/schemas/foundation-ownership-v2.json",
|
|
35
47
|
"./schemas/generated-ownership-v2.json": "./src/schemas/generated-ownership-v2.json",
|
|
48
|
+
"./schemas/repository-policy-v1.json": "./src/schemas/repository-policy-v1.json",
|
|
36
49
|
"./schemas/workspace-ownership-v2.json": "./src/schemas/workspace-ownership-v2.json"
|
|
37
50
|
},
|
|
38
51
|
"generators": "./generators.json",
|
|
@@ -43,6 +56,7 @@
|
|
|
43
56
|
},
|
|
44
57
|
"dependencies": {
|
|
45
58
|
"@nx/devkit": "23.1.0",
|
|
59
|
+
"@aws-sdk/client-rds": "^3.700.0",
|
|
46
60
|
"@aws-sdk/client-rds-data": "^3.700.0",
|
|
47
61
|
"@aws-sdk/client-ssm": "^3.700.0",
|
|
48
62
|
"@aws-sdk/credential-providers": "^3.700.0",
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type PromiseExecutor } from '@nx/devkit';
|
|
2
|
+
import { type ProtectedDeploymentAction, type ProtectedDeploymentStage } from '../../repository-policy/index.js';
|
|
3
|
+
interface DeploymentPlanOptions {
|
|
4
|
+
action: ProtectedDeploymentAction;
|
|
5
|
+
project?: string;
|
|
6
|
+
stage: ProtectedDeploymentStage;
|
|
7
|
+
}
|
|
8
|
+
declare const executor: PromiseExecutor<DeploymentPlanOptions>;
|
|
9
|
+
export default executor;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const node_fs_1 = require("node:fs");
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const index_js_1 = require("../../repository-policy/index.js");
|
|
6
|
+
const index_js_2 = require("../../work-markers/index.js");
|
|
7
|
+
function writeGithubOutputs(plan) {
|
|
8
|
+
const output = process.env.GITHUB_OUTPUT?.trim();
|
|
9
|
+
if (!output)
|
|
10
|
+
return;
|
|
11
|
+
(0, node_fs_1.appendFileSync)(output, [
|
|
12
|
+
`foundation_project=${plan.foundationProject ?? ''}`,
|
|
13
|
+
`foundation_profile=${plan.effectiveProductionProfile ?? ''}`,
|
|
14
|
+
`has_slices=${plan.sliceProjects.length > 0 ? 'true' : 'false'}`,
|
|
15
|
+
`ordered_projects=${plan.orderedProjects.join(',')}`,
|
|
16
|
+
`slice_projects=${plan.sliceProjects.join(',')}`,
|
|
17
|
+
'',
|
|
18
|
+
].join('\n'), 'utf8');
|
|
19
|
+
}
|
|
20
|
+
const executor = async (options, context) => {
|
|
21
|
+
try {
|
|
22
|
+
if (options.action === 'deploy' || options.action === 'refresh') {
|
|
23
|
+
const markerReport = (0, index_js_2.scanWorkMarkers)(context.root);
|
|
24
|
+
devkit_1.logger.info((0, index_js_2.formatWorkMarkerReport)(markerReport));
|
|
25
|
+
(0, index_js_2.assertWorkMarkerReport)(markerReport, { protectedPromotion: true });
|
|
26
|
+
}
|
|
27
|
+
const policy = (0, index_js_1.readRepositoryOperatingPolicy)(context.root);
|
|
28
|
+
const plan = (0, index_js_1.createProtectedDeploymentPlan)(policy, {
|
|
29
|
+
action: options.action,
|
|
30
|
+
projects: Object.entries(context.projectsConfigurations?.projects ?? {}).map(([name, project]) => ({
|
|
31
|
+
name,
|
|
32
|
+
tags: project.tags,
|
|
33
|
+
targets: project.targets,
|
|
34
|
+
})),
|
|
35
|
+
...(options.project?.trim()
|
|
36
|
+
? { requestedProject: options.project.trim() }
|
|
37
|
+
: {}),
|
|
38
|
+
stage: options.stage,
|
|
39
|
+
});
|
|
40
|
+
devkit_1.logger.info(`[ebk-deployment-plan] validated before AWS access\n${JSON.stringify(plan, null, 2)}`);
|
|
41
|
+
writeGithubOutputs(plan);
|
|
42
|
+
return { success: true };
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
devkit_1.logger.error(error instanceof Error ? error.message : String(error));
|
|
46
|
+
return { success: false };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
exports.default = executor;
|
|
50
|
+
//# sourceMappingURL=deployment-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-plan.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/deployment-plan/deployment-plan.ts"],"names":[],"mappings":";;AAAA,qCAAyC;AACzC,uCAA0D;AAC1D,+DAK0C;AAC1C,0DAIqC;AAQrC,SAAS,kBAAkB,CAAC,IAK3B;IACC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,IAAA,wBAAc,EACZ,MAAM,EACN;QACE,sBAAsB,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE;QACpD,sBAAsB,IAAI,CAAC,0BAA0B,IAAI,EAAE,EAAE;QAC7D,cAAc,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE;QAChE,oBAAoB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACpD,kBAAkB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAChD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACP,CAAC;AACJ,CAAC;AAED,MAAM,QAAQ,GAA2C,KAAK,EAC5D,OAAO,EACP,OAAO,EACP,EAAE;IACF,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChE,MAAM,YAAY,GAAG,IAAA,0BAAe,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnD,eAAM,CAAC,IAAI,CAAC,IAAA,iCAAsB,EAAC,YAAY,CAAC,CAAC,CAAC;YAClD,IAAA,iCAAsB,EAAC,YAAY,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,wCAA6B,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAA,wCAA6B,EAAC,MAAM,EAAE;YACjD,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,MAAM,CAAC,OAAO,CACtB,OAAO,CAAC,sBAAsB,EAAE,QAAQ,IAAI,EAAE,CAC/C,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1B,IAAI;gBACJ,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;YACH,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE;gBACzB,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;gBAC9C,CAAC,CAAC,EAAE,CAAC;YACP,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QACH,eAAM,CAAC,IAAI,CACT,sDAAsD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACtF,CAAC;QACF,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"version": 2,
|
|
4
|
+
"title": "Empire Builder Kit protected deployment plan",
|
|
5
|
+
"description": "Validate the complete protected project set before any AWS credentials or mutation are available.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"action": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"enum": ["deploy", "refresh", "remove", "unlock"]
|
|
12
|
+
},
|
|
13
|
+
"stage": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"enum": ["staging", "production"]
|
|
16
|
+
},
|
|
17
|
+
"project": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
20
|
+
"description": "Required only for explicit remove or unlock recovery. Deploy and refresh derive their complete set from policy."
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"required": ["action", "stage"]
|
|
24
|
+
}
|
|
@@ -4,6 +4,7 @@ const devkit_1 = require("@nx/devkit");
|
|
|
4
4
|
const preflight_js_1 = require("../../foundation/preflight.js");
|
|
5
5
|
const discovery_js_1 = require("../../foundation/discovery.js");
|
|
6
6
|
const stages_js_1 = require("../../foundation/stages.js");
|
|
7
|
+
const index_js_1 = require("../../repository-policy/index.js");
|
|
7
8
|
const run_sst_command_js_1 = require("../sst-lifecycle/run-sst-command.js");
|
|
8
9
|
async function deployFoundation(options, context, foundationStage) {
|
|
9
10
|
const project = options.foundationProject?.trim() || 'foundation';
|
|
@@ -33,6 +34,22 @@ const executor = async (options, context) => {
|
|
|
33
34
|
devkit_1.logger.error(error instanceof Error ? error.message : String(error));
|
|
34
35
|
return { success: false };
|
|
35
36
|
}
|
|
37
|
+
if (stages.consumerStage === 'production') {
|
|
38
|
+
try {
|
|
39
|
+
if (!context.projectName) {
|
|
40
|
+
throw new Error('Production Foundation preflight requires an Nx Product Slice project name.');
|
|
41
|
+
}
|
|
42
|
+
(0, index_js_1.assertRepositoryPolicyRequest)(context.root, {
|
|
43
|
+
action: 'deploy',
|
|
44
|
+
projects: [{ kind: 'slice', name: context.projectName }],
|
|
45
|
+
stage: stages.consumerStage,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
devkit_1.logger.error(error instanceof Error ? error.message : String(error));
|
|
50
|
+
return { success: false };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
36
53
|
const requestedRegion = options.region?.trim() ||
|
|
37
54
|
process.env.AWS_REGION?.trim() ||
|
|
38
55
|
process.env.AWS_DEFAULT_REGION?.trim();
|
|
@@ -56,6 +73,11 @@ const executor = async (options, context) => {
|
|
|
56
73
|
if (report.state === 'absent' &&
|
|
57
74
|
options.deployIfMissing === true &&
|
|
58
75
|
!stages.mapped) {
|
|
76
|
+
if (stages.foundationStage === 'staging' ||
|
|
77
|
+
stages.foundationStage === 'production') {
|
|
78
|
+
devkit_1.logger.error(`[foundation-preflight] ${stages.foundationStage} Foundation is absent. Protected workflows must run the Foundation target and its profile capability preflight before Product Slices; Foundation auto-deploy is disabled for protected stages.`);
|
|
79
|
+
return { success: false };
|
|
80
|
+
}
|
|
59
81
|
const deployed = await deployFoundation(options, context, stages.foundationStage);
|
|
60
82
|
if (!deployed)
|
|
61
83
|
return { success: false };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foundation-preflight.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/foundation-preflight/foundation-preflight.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"foundation-preflight.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/foundation-preflight/foundation-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const devkit_1 = require("@nx/devkit");
|
|
4
|
+
const index_js_1 = require("../../repository-policy/index.js");
|
|
5
|
+
const stages_js_1 = require("../../foundation/stages.js");
|
|
6
|
+
const run_sst_command_js_1 = require("../sst-lifecycle/run-sst-command.js");
|
|
7
|
+
const executor = async (options, context) => {
|
|
8
|
+
try {
|
|
9
|
+
const stage = (0, stages_js_1.requireFoundationStage)(options.stage);
|
|
10
|
+
if (stage === 'development') {
|
|
11
|
+
devkit_1.logger.info('[foundation-profile-preflight] development uses the generated non-production profile; no protected profile check is required.');
|
|
12
|
+
return { success: true };
|
|
13
|
+
}
|
|
14
|
+
(0, run_sst_command_js_1.assertSstLifecyclePolicy)('deploy', stage);
|
|
15
|
+
(0, index_js_1.assertRepositoryPolicyRequest)(context.root, {
|
|
16
|
+
action: 'deploy',
|
|
17
|
+
projects: [{ kind: 'foundation', name: 'foundation' }],
|
|
18
|
+
stage,
|
|
19
|
+
});
|
|
20
|
+
const requestedRegion = options.region?.trim() ||
|
|
21
|
+
process.env.AWS_REGION?.trim() ||
|
|
22
|
+
process.env.AWS_DEFAULT_REGION?.trim();
|
|
23
|
+
const reader = (0, index_js_1.createAuroraProfileCapabilityReader)({
|
|
24
|
+
...(options.profile?.trim() ? { profile: options.profile.trim() } : {}),
|
|
25
|
+
...(requestedRegion ? { region: requestedRegion } : {}),
|
|
26
|
+
});
|
|
27
|
+
const region = requestedRegion ?? (await reader.resolveRegion());
|
|
28
|
+
const report = (0, index_js_1.evaluateAuroraProfileCapability)(await reader.read(), region);
|
|
29
|
+
if (!report.ok) {
|
|
30
|
+
throw new Error(`Aurora ${report.engine} ${report.engineVersion} is not orderable as db.serverless in ${report.region}; protected Foundation deployment is blocked before mutation.`);
|
|
31
|
+
}
|
|
32
|
+
devkit_1.logger.info(`[foundation-profile-preflight] Aurora ${report.engine} ${report.engineVersion} is orderable as db.serverless in ${report.region}.`);
|
|
33
|
+
return { success: true };
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
devkit_1.logger.error(error instanceof Error ? error.message : String(error));
|
|
37
|
+
return { success: false };
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
exports.default = executor;
|
|
41
|
+
//# sourceMappingURL=foundation-profile-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foundation-profile-preflight.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/foundation-profile-preflight/foundation-profile-preflight.ts"],"names":[],"mappings":";;AAAA,uCAA0D;AAC1D,+DAI0C;AAC1C,0DAAoE;AACpE,4EAA+E;AAQ/E,MAAM,QAAQ,GAAuD,KAAK,EACxE,OAAO,EACP,OAAO,EACP,EAAE;IACF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,kCAAsB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;YAC5B,eAAM,CAAC,IAAI,CACT,+HAA+H,CAChI,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAED,IAAA,6CAAwB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAA,wCAA6B,EAAC,OAAO,CAAC,IAAI,EAAE;YAC1C,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YACtD,KAAK;SACN,CAAC,CAAC;QAEH,MAAM,eAAe,GACnB,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAA,8CAAmC,EAAC;YACjD,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,eAAe,IAAI,CAAC,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAA,0CAA+B,EAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,yCAAyC,MAAM,CAAC,MAAM,+DAA+D,CACrK,CAAC;QACJ,CAAC;QACD,eAAM,CAAC,IAAI,CACT,yCAAyC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,qCAAqC,MAAM,CAAC,MAAM,GAAG,CACpI,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"version": 2,
|
|
4
|
+
"title": "Empire Builder Kit production Foundation profile preflight",
|
|
5
|
+
"description": "Verify the pinned Aurora Serverless engine is orderable in the selected Region before Foundation mutation.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"stage": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
12
|
+
"default": "development"
|
|
13
|
+
},
|
|
14
|
+
"profile": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Optional local AWS profile. Protected stages are still restricted to the generated GitHub workflow."
|
|
17
|
+
},
|
|
18
|
+
"region": { "type": "string" }
|
|
19
|
+
},
|
|
20
|
+
"required": ["stage"]
|
|
21
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type PromiseExecutor } from '@nx/devkit';
|
|
2
|
+
interface GitHubBootstrapExecutorOptions {
|
|
3
|
+
apply?: boolean;
|
|
4
|
+
productionReviewerIds?: string;
|
|
5
|
+
repository?: string;
|
|
6
|
+
}
|
|
7
|
+
declare const executor: PromiseExecutor<GitHubBootstrapExecutorOptions>;
|
|
8
|
+
export default executor;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const devkit_1 = require("@nx/devkit");
|
|
4
|
+
const index_js_1 = require("../../git-policy/index.js");
|
|
5
|
+
function parseReviewerIds(value) {
|
|
6
|
+
if (!value?.trim())
|
|
7
|
+
return [];
|
|
8
|
+
return value.split(',').map((item) => Number(item.trim()));
|
|
9
|
+
}
|
|
10
|
+
const executor = async (options) => {
|
|
11
|
+
try {
|
|
12
|
+
const report = await (0, index_js_1.runGitHubBootstrap)({
|
|
13
|
+
apply: options.apply === true,
|
|
14
|
+
productionReviewerIds: parseReviewerIds(options.productionReviewerIds),
|
|
15
|
+
repository: options.repository?.trim() || process.env.GH_REPO?.trim() || '',
|
|
16
|
+
token: process.env.GH_TOKEN?.trim() || process.env.GITHUB_TOKEN?.trim() || '',
|
|
17
|
+
});
|
|
18
|
+
devkit_1.logger.info(JSON.stringify(report, null, 2));
|
|
19
|
+
return { success: options.apply ? report.ready : true };
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
devkit_1.logger.error(error instanceof Error ? error.message : String(error));
|
|
23
|
+
return { success: false };
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.default = executor;
|
|
27
|
+
//# sourceMappingURL=github-bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-bootstrap.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/github-bootstrap/github-bootstrap.ts"],"names":[],"mappings":";;AAAA,uCAA0D;AAC1D,wDAA+D;AAQ/D,SAAS,gBAAgB,CAAC,KAAyB;IACjD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,QAAQ,GAAoD,KAAK,EACrE,OAAO,EACP,EAAE;IACF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAkB,EAAC;YACtC,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI;YAC7B,qBAAqB,EAAE,gBAAgB,CAAC,OAAO,CAAC,qBAAqB,CAAC;YACtE,UAAU,EACR,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;YACjE,KAAK,EACH,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;SACzE,CAAC,CAAC;QACH,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"version": 2,
|
|
4
|
+
"title": "Empire Builder Kit GitHub bootstrap",
|
|
5
|
+
"description": "Report or explicitly apply protected repository rules and environments without creating secrets, branches, or credentials.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$",
|
|
12
|
+
"description": "Explicit GitHub owner/repository target."
|
|
13
|
+
},
|
|
14
|
+
"apply": {
|
|
15
|
+
"type": "boolean",
|
|
16
|
+
"default": false,
|
|
17
|
+
"description": "Apply the reported GitHub settings. Omit for the default read-only report."
|
|
18
|
+
},
|
|
19
|
+
"productionReviewerIds": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"pattern": "^[1-9][0-9]*(,[1-9][0-9]*)*$",
|
|
22
|
+
"description": "Optional comma-separated GitHub user IDs for production approval. Existing reviewers are preserved when omitted."
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -16,9 +16,11 @@ export interface SstCommandInvocation {
|
|
|
16
16
|
environment: {
|
|
17
17
|
EBK_CONSUMER_STAGE: string;
|
|
18
18
|
EBK_FOUNDATION_STAGE: string;
|
|
19
|
+
EBK_PRODUCTION_FOUNDATION_PROFILE?: string;
|
|
19
20
|
};
|
|
20
21
|
executable: string;
|
|
21
22
|
}
|
|
23
|
+
export declare function createSstChildEnvironment(ambient: NodeJS.ProcessEnv, invocation: SstCommandInvocation['environment']): NodeJS.ProcessEnv;
|
|
22
24
|
export declare function assertSafeSstForwardedArguments(args: readonly string[]): void;
|
|
23
25
|
export declare function assertSstLifecyclePolicy(command: SstLifecycleCommand, stage: string, environment?: NodeJS.ProcessEnv): void;
|
|
24
26
|
export declare function resolveSstLifecycleStages(options: SstLifecycleOptions, environment?: NodeJS.ProcessEnv): FoundationStageResolution;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSstChildEnvironment = createSstChildEnvironment;
|
|
3
4
|
exports.assertSafeSstForwardedArguments = assertSafeSstForwardedArguments;
|
|
4
5
|
exports.assertSstLifecyclePolicy = assertSstLifecyclePolicy;
|
|
5
6
|
exports.resolveSstLifecycleStages = resolveSstLifecycleStages;
|
|
@@ -9,6 +10,8 @@ const devkit_1 = require("@nx/devkit");
|
|
|
9
10
|
const node_child_process_1 = require("node:child_process");
|
|
10
11
|
const node_path_1 = require("node:path");
|
|
11
12
|
const stages_js_1 = require("../../foundation/stages.js");
|
|
13
|
+
const index_js_1 = require("../../repository-policy/index.js");
|
|
14
|
+
const index_js_2 = require("../../work-markers/index.js");
|
|
12
15
|
const PROTECTED_STAGES = new Set(['staging', 'production']);
|
|
13
16
|
const RESERVED_FORWARDED_OPTIONS = new Set([
|
|
14
17
|
'--config',
|
|
@@ -16,6 +19,23 @@ const RESERVED_FORWARDED_OPTIONS = new Set([
|
|
|
16
19
|
'--stage',
|
|
17
20
|
'--target',
|
|
18
21
|
]);
|
|
22
|
+
function projectKind(context) {
|
|
23
|
+
if (!context.projectName) {
|
|
24
|
+
throw new Error('SST lifecycle requires an Nx project name for tag-derived Repository Operating Policy evaluation.');
|
|
25
|
+
}
|
|
26
|
+
const tags = context.projectsConfigurations?.projects[context.projectName]?.tags ?? [];
|
|
27
|
+
const foundation = tags.includes('scope:foundation');
|
|
28
|
+
const slice = tags.includes('type:slice');
|
|
29
|
+
if (foundation === slice) {
|
|
30
|
+
throw new Error(`Nx project ${context.projectName} must declare exactly one lifecycle kind tag: scope:foundation or type:slice.`);
|
|
31
|
+
}
|
|
32
|
+
return foundation ? 'foundation' : 'slice';
|
|
33
|
+
}
|
|
34
|
+
function createSstChildEnvironment(ambient, invocation) {
|
|
35
|
+
const sanitized = { ...ambient };
|
|
36
|
+
delete sanitized.EBK_PRODUCTION_FOUNDATION_PROFILE;
|
|
37
|
+
return { ...sanitized, ...invocation };
|
|
38
|
+
}
|
|
19
39
|
function assertSafeSstForwardedArguments(args) {
|
|
20
40
|
const reserved = args.find((argument) => {
|
|
21
41
|
const option = argument.split('=', 1)[0].toLowerCase();
|
|
@@ -33,16 +53,21 @@ function assertSstLifecyclePolicy(command, stage, environment = process.env) {
|
|
|
33
53
|
throw new Error(`SST dev is not permitted for protected stage ${stage}.`);
|
|
34
54
|
}
|
|
35
55
|
const repository = environment.GITHUB_REPOSITORY;
|
|
56
|
+
const expectedBranch = stage === 'staging' ? 'develop' : 'main';
|
|
57
|
+
const expectedRef = `refs/heads/${expectedBranch}`;
|
|
36
58
|
const expectedWorkflowRef = repository
|
|
37
|
-
? `${repository}/.github/workflows/deploy.yml
|
|
59
|
+
? `${repository}/.github/workflows/deploy.yml@${expectedRef}`
|
|
38
60
|
: undefined;
|
|
61
|
+
const eventName = environment.GITHUB_EVENT_NAME;
|
|
62
|
+
const allowedEvent = eventName === 'workflow_dispatch' ||
|
|
63
|
+
(eventName === 'push' && command === 'deploy');
|
|
39
64
|
const trustedWorkflow = Boolean(repository) &&
|
|
40
65
|
environment.GITHUB_ACTIONS === 'true' &&
|
|
41
|
-
|
|
42
|
-
environment.GITHUB_REF ===
|
|
66
|
+
allowedEvent &&
|
|
67
|
+
environment.GITHUB_REF === expectedRef &&
|
|
43
68
|
environment.GITHUB_WORKFLOW_REF === expectedWorkflowRef;
|
|
44
69
|
if (!trustedWorkflow) {
|
|
45
|
-
throw new Error(`SST ${command} for protected stage ${stage} must run from the
|
|
70
|
+
throw new Error(`SST ${command} for protected stage ${stage} must run from the ${expectedBranch}-branch deploy workflow; pushes may run only deploy and other lifecycle actions require workflow_dispatch.`);
|
|
46
71
|
}
|
|
47
72
|
if (command === 'remove' &&
|
|
48
73
|
stage === 'production' &&
|
|
@@ -72,6 +97,11 @@ function resolveSstLifecycleStages(options, environment = process.env) {
|
|
|
72
97
|
});
|
|
73
98
|
}
|
|
74
99
|
function buildSstCommandInvocation(command, options, context, environment = process.env) {
|
|
100
|
+
const kind = projectKind(context);
|
|
101
|
+
const expectedStageMode = kind === 'foundation' ? 'foundation' : 'consumer';
|
|
102
|
+
if (options.stageMode !== expectedStageMode) {
|
|
103
|
+
throw new Error(`Nx project ${context.projectName} is tagged as ${kind} and requires stageMode ${expectedStageMode}; executor options cannot change project kind.`);
|
|
104
|
+
}
|
|
75
105
|
const configuredRoot = context.projectName
|
|
76
106
|
? context.projectsConfigurations?.projects[context.projectName]?.root
|
|
77
107
|
: undefined;
|
|
@@ -86,6 +116,24 @@ function buildSstCommandInvocation(command, options, context, environment = proc
|
|
|
86
116
|
throw new Error(`Full deploy is not permitted for mapped consumer stage ${stages.consumerStage}. Use dev against the ${stages.foundationStage} Foundation until preview routing is supported.`);
|
|
87
117
|
}
|
|
88
118
|
assertSstLifecyclePolicy(command, stages.consumerStage, environment);
|
|
119
|
+
if (PROTECTED_STAGES.has(stages.consumerStage) &&
|
|
120
|
+
(command === 'deploy' || command === 'refresh')) {
|
|
121
|
+
(0, index_js_2.assertWorkMarkerReport)((0, index_js_2.scanWorkMarkers)(context.root), {
|
|
122
|
+
protectedPromotion: true,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const policyDecision = stages.consumerStage === 'production'
|
|
126
|
+
? (0, index_js_1.assertRepositoryPolicyRequest)(context.root, {
|
|
127
|
+
action: command,
|
|
128
|
+
projects: [
|
|
129
|
+
{
|
|
130
|
+
kind,
|
|
131
|
+
name: context.projectName ?? '',
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
stage: stages.consumerStage,
|
|
135
|
+
})
|
|
136
|
+
: undefined;
|
|
89
137
|
const args = [command, '--stage', stages.consumerStage];
|
|
90
138
|
if (options.profile) {
|
|
91
139
|
args.push('--profile', options.profile);
|
|
@@ -106,6 +154,11 @@ function buildSstCommandInvocation(command, options, context, environment = proc
|
|
|
106
154
|
environment: {
|
|
107
155
|
EBK_CONSUMER_STAGE: stages.consumerStage,
|
|
108
156
|
EBK_FOUNDATION_STAGE: stages.foundationStage,
|
|
157
|
+
...(policyDecision?.effectiveProductionProfile
|
|
158
|
+
? {
|
|
159
|
+
EBK_PRODUCTION_FOUNDATION_PROFILE: policyDecision.effectiveProductionProfile,
|
|
160
|
+
}
|
|
161
|
+
: {}),
|
|
109
162
|
},
|
|
110
163
|
executable: process.execPath,
|
|
111
164
|
};
|
|
@@ -123,7 +176,7 @@ async function runSstCommand(command, options, context) {
|
|
|
123
176
|
return new Promise((resolve) => {
|
|
124
177
|
const child = (0, node_child_process_1.spawn)(invocation.executable, invocation.args, {
|
|
125
178
|
cwd: invocation.cwd,
|
|
126
|
-
env:
|
|
179
|
+
env: createSstChildEnvironment(process.env, invocation.environment),
|
|
127
180
|
shell: false,
|
|
128
181
|
stdio: 'inherit',
|
|
129
182
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-sst-command.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/sst-lifecycle/run-sst-command.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"run-sst-command.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/executors/sst-lifecycle/run-sst-command.ts"],"names":[],"mappings":";;AAgEA,8DAOC;AAED,0EAWC;AAED,4DAuCC;AAED,8DA4BC;AAED,8DAmFC;AAED,sCAoDC;AAtSD,uCAA0D;AAC1D,2DAA2C;AAC3C,yCAA6C;AAC7C,0DAIoC;AACpC,+DAAiF;AACjF,0DAGqC;AA0BrC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AAC5D,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC;IACzC,UAAU;IACV,WAAW;IACX,SAAS;IACT,UAAU;CACX,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,OAAwB;IAC3C,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GACR,OAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC1C,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,cAAc,OAAO,CAAC,WAAW,+EAA+E,CACjH,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7C,CAAC;AAED,SAAgB,yBAAyB,CACvC,OAA0B,EAC1B,UAA+C;IAE/C,MAAM,SAAS,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACjC,OAAO,SAAS,CAAC,iCAAiC,CAAC;IACnD,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;AACzC,CAAC;AAED,SAAgB,+BAA+B,CAAC,IAAuB;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,OAAO,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,4DAA4D,MAAM,qDAAqD,CACxH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,wBAAwB,CACtC,OAA4B,EAC5B,KAAa,EACb,cAAiC,OAAO,CAAC,GAAG;IAE5C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO;IACzC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,gDAAgD,KAAK,GAAG,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,UAAU,GAAG,WAAW,CAAC,iBAAiB,CAAC;IACjD,MAAM,cAAc,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,WAAW,GAAG,cAAc,cAAc,EAAE,CAAC;IACnD,MAAM,mBAAmB,GAAG,UAAU;QACpC,CAAC,CAAC,GAAG,UAAU,iCAAiC,WAAW,EAAE;QAC7D,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,SAAS,GAAG,WAAW,CAAC,iBAAiB,CAAC;IAChD,MAAM,YAAY,GAChB,SAAS,KAAK,mBAAmB;QACjC,CAAC,SAAS,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,CAAC,CAAC;IACjD,MAAM,eAAe,GACnB,OAAO,CAAC,UAAU,CAAC;QACnB,WAAW,CAAC,cAAc,KAAK,MAAM;QACrC,YAAY;QACZ,WAAW,CAAC,UAAU,KAAK,WAAW;QACtC,WAAW,CAAC,mBAAmB,KAAK,mBAAmB,CAAC;IAC1D,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,OAAO,OAAO,wBAAwB,KAAK,sBAAsB,cAAc,4GAA4G,CAC5L,CAAC;IACJ,CAAC;IACD,IACE,OAAO,KAAK,QAAQ;QACpB,KAAK,KAAK,YAAY;QACtB,WAAW,CAAC,2BAA2B,KAAK,MAAM,EAClD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,yBAAyB,CACvC,OAA4B,EAC5B,cAAiC,OAAO,CAAC,GAAG;IAE5C,IAAI,OAAO,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAA,kCAAsB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,IACE,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE;YAC/B,IAAA,kCAAsB,EAAC,OAAO,CAAC,eAAe,CAAC,KAAK,KAAK,EACzD,CAAC;YACD,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,mCAAmC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CACxG,CAAC;QACJ,CAAC;QACD,OAAO;YACL,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,KAAK;YACtB,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAA,mCAAuB,EAAC;QAC7B,aAAa,EAAE,OAAO,CAAC,KAAK;QAC5B,eAAe,EACb,OAAO,CAAC,eAAe,IAAI,WAAW,CAAC,oBAAoB;KAC9D,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,yBAAyB,CACvC,OAA4B,EAC5B,OAA4B,EAC5B,OAAwB,EACxB,cAAiC,OAAO,CAAC,GAAG;IAE5C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,iBAAiB,GAAG,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5E,IAAI,OAAO,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CACb,cAAc,OAAO,CAAC,WAAW,iBAAiB,IAAI,2BAA2B,iBAAiB,gDAAgD,CACnJ,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW;QACxC,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI;QACrE,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,IAAI,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IACpE,MAAM,GAAG,GAAG,IAAA,sBAAU,EAAC,aAAa,CAAC;QACnC,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,IAAA,gBAAI,EAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/D,IACE,OAAO,CAAC,SAAS,KAAK,UAAU;QAChC,OAAO,KAAK,QAAQ;QACpB,MAAM,CAAC,MAAM,EACb,CAAC;QACD,MAAM,IAAI,KAAK,CACb,0DAA0D,MAAM,CAAC,aAAa,yBAAyB,MAAM,CAAC,eAAe,iDAAiD,CAC/K,CAAC;IACJ,CAAC;IACD,wBAAwB,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACrE,IACE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;QAC1C,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,CAAC,EAC/C,CAAC;QACD,IAAA,iCAAsB,EAAC,IAAA,0BAAe,EAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpD,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,cAAc,GAClB,MAAM,CAAC,aAAa,KAAK,YAAY;QACnC,CAAC,CAAC,IAAA,wCAA6B,EAAC,OAAO,CAAC,IAAI,EAAE;YAC1C,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE;gBACR;oBACE,IAAI;oBACJ,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;iBAChC;aACF;YACD,KAAK,EAAE,MAAM,CAAC,aAAa;SAC5B,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAExD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,+BAA+B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,IAAI,EAAE;YACJ,IAAA,gBAAI,EAAC,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;YAC3D,GAAG,IAAI;SACR;QACD,GAAG;QACH,WAAW,EAAE;YACX,kBAAkB,EAAE,MAAM,CAAC,aAAa;YACxC,oBAAoB,EAAE,MAAM,CAAC,eAAe;YAC5C,GAAG,CAAC,cAAc,EAAE,0BAA0B;gBAC5C,CAAC,CAAC;oBACE,iCAAiC,EAC/B,cAAc,CAAC,0BAA0B;iBAC5C;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;QACD,UAAU,EAAE,OAAO,CAAC,QAAQ;KAC7B,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,OAA4B,EAC5B,OAA4B,EAC5B,OAAwB;IAExB,IAAI,UAAgC,CAAC;IACrC,IAAI,CAAC;QACH,UAAU,GAAG,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,eAAM,CAAC,IAAI,CACT,0BAA0B,OAAO,YAAY,UAAU,CAAC,WAAW,CAAC,kBAAkB,oBAAoB,UAAU,CAAC,WAAW,CAAC,oBAAoB,KAAK,UAAU,CAAC,GAAG,GAAG,CAC5K,CAAC;IAEF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE;YAC1D,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,GAAG,EAAE,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC;YACnE,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAE,EAAE;YAClC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,eAAM,CAAC,KAAK,CAAC,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,eAAM,CAAC,KAAK,CACV,MAAM;oBACJ,CAAC,CAAC,OAAO,OAAO,2BAA2B,MAAM,GAAG;oBACpD,CAAC,CAAC,OAAO,OAAO,uBAAuB,IAAI,IAAI,SAAS,GAAG,CAC9D,CAAC;gBACF,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACjD,eAAM,CAAC,KAAK,CACV,2CAA2C,OAAO,CAAC,WAAW,IAAI,WAAW,mBAAmB,OAAO,CAAC,KAAK,GAAG,CACjH,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"version": 2,
|
|
4
|
+
"title": "Empire Builder Kit work markers",
|
|
5
|
+
"description": "Report source work markers and enforce syntax, generated-file ownership, and optional protected-promotion blockers.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"protected": {
|
|
10
|
+
"type": "boolean",
|
|
11
|
+
"description": "Fail when unresolved EBK-SECURITY or EBK-BLOCKER markers are present. Protected deploy and refresh set this automatically."
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|