@factiii/stack 0.1.25 → 0.1.27
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/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +285 -6
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/scan.d.ts.map +1 -1
- package/dist/cli/scan.js +28 -13
- package/dist/cli/scan.js.map +1 -1
- package/dist/constants/config-files.d.ts +6 -0
- package/dist/constants/config-files.d.ts.map +1 -1
- package/dist/constants/config-files.js +16 -1
- package/dist/constants/config-files.js.map +1 -1
- package/dist/plugins/pipelines/factiii/index.d.ts +5 -3
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/index.js +14 -77
- package/dist/plugins/pipelines/factiii/index.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/env-files.d.ts +12 -0
- package/dist/plugins/pipelines/factiii/scanfix/env-files.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/env-files.js +310 -0
- package/dist/plugins/pipelines/factiii/scanfix/env-files.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/local-config.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/local-config.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/local-config.js +70 -0
- package/dist/plugins/pipelines/factiii/scanfix/local-config.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js +10 -24
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js.map +1 -1
- package/dist/plugins/pipelines/factiii/utils/workflows.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/utils/workflows.js +5 -20
- package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -1
- package/dist/plugins/pipelines/factiii/workflows/stack-ci.yml +56 -0
- package/dist/plugins/pipelines/factiii/workflows/stack-cicd-prod.yml +35 -96
- package/dist/utils/config-helpers.d.ts +15 -0
- package/dist/utils/config-helpers.d.ts.map +1 -1
- package/dist/utils/config-helpers.js +57 -5
- package/dist/utils/config-helpers.js.map +1 -1
- package/package.json +1 -1
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-prod.yml +0 -115
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-staging.yml +0 -120
- package/dist/plugins/pipelines/factiii/workflows/factiii-command.yml +0 -132
- package/dist/plugins/pipelines/factiii/workflows/factiii-deploy.yml +0 -202
- package/dist/plugins/pipelines/factiii/workflows/factiii-dev-sync.yml +0 -181
- package/dist/plugins/pipelines/factiii/workflows/factiii-fix.yml +0 -178
- package/dist/plugins/pipelines/factiii/workflows/factiii-pr-check.yml +0 -106
- package/dist/plugins/pipelines/factiii/workflows/factiii-scan.yml +0 -183
- package/dist/plugins/pipelines/factiii/workflows/factiii-undeploy.yml +0 -96
- package/dist/plugins/pipelines/factiii/workflows/stack-cicd-staging.yml +0 -120
- package/dist/plugins/pipelines/factiii/workflows/stack-command.yml +0 -132
- package/dist/plugins/pipelines/factiii/workflows/stack-deploy.yml +0 -202
- package/dist/plugins/pipelines/factiii/workflows/stack-dev-sync.yml +0 -181
- package/dist/plugins/pipelines/factiii/workflows/stack-fix.yml +0 -177
- package/dist/plugins/pipelines/factiii/workflows/stack-pr-check.yml +0 -106
- package/dist/plugins/pipelines/factiii/workflows/stack-scan.yml +0 -182
- package/dist/plugins/pipelines/factiii/workflows/stack-undeploy.yml +0 -96
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Local config scanfix for Factiii Pipeline plugin
|
|
4
|
+
* Warns if stack.local.yml is missing (per-developer, gitignored config)
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.localConfigFixes = void 0;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const config_files_js_1 = require("../../../../constants/config-files.js");
|
|
43
|
+
exports.localConfigFixes = [
|
|
44
|
+
{
|
|
45
|
+
id: 'missing-local-config',
|
|
46
|
+
stage: 'dev',
|
|
47
|
+
severity: 'warning',
|
|
48
|
+
description: config_files_js_1.STACK_LOCAL_FILENAME + ' not found (specifies your dev OS)',
|
|
49
|
+
scan: async (_config, rootDir) => {
|
|
50
|
+
const localPath = (0, config_files_js_1.getStackLocalPath)(rootDir);
|
|
51
|
+
return !fs.existsSync(localPath);
|
|
52
|
+
},
|
|
53
|
+
fix: async (_config, rootDir) => {
|
|
54
|
+
const localPath = (0, config_files_js_1.getStackLocalPath)(rootDir);
|
|
55
|
+
let devOS = 'ubuntu';
|
|
56
|
+
if (process.platform === 'darwin')
|
|
57
|
+
devOS = 'mac';
|
|
58
|
+
else if (process.platform === 'win32')
|
|
59
|
+
devOS = 'windows';
|
|
60
|
+
const content = '# Local machine config (gitignored - each developer has their own)\n' +
|
|
61
|
+
'# Generated by: npx stack fix\n' +
|
|
62
|
+
'\n' +
|
|
63
|
+
'dev_os: ' + devOS + '\n';
|
|
64
|
+
fs.writeFileSync(localPath, content, 'utf8');
|
|
65
|
+
return true;
|
|
66
|
+
},
|
|
67
|
+
manualFix: 'Create ' + config_files_js_1.STACK_LOCAL_FILENAME + ' with: dev_os: mac|windows|ubuntu',
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
//# sourceMappingURL=local-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-config.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/local-config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AAEzB,2EAAgG;AAEnF,QAAA,gBAAgB,GAAU;IACrC;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sCAAoB,GAAG,oCAAoC;QACxE,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,MAAM,SAAS,GAAG,IAAA,mCAAiB,EAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,SAAS,GAAG,IAAA,mCAAiB,EAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,KAAK,GAAG,QAAQ,CAAC;YACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAAE,KAAK,GAAG,KAAK,CAAC;iBAC5C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;gBAAE,KAAK,GAAG,SAAS,CAAC;YAEzD,MAAM,OAAO,GACX,sEAAsE;gBACtE,iCAAiC;gBACjC,IAAI;gBACJ,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;YAE5B,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,SAAS,GAAG,sCAAoB,GAAG,mCAAmC;KAClF;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/workflows.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAIrE,eAAO,MAAM,aAAa,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/workflows.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAIrE,eAAO,MAAM,aAAa,EAAE,GAAG,EAmI9B,CAAC"}
|
|
@@ -51,7 +51,7 @@ exports.workflowFixes = [
|
|
|
51
51
|
description: 'GitHub workflows not generated',
|
|
52
52
|
scan: async (_config, rootDir) => {
|
|
53
53
|
const workflowsDir = path.join(rootDir, '.github', 'workflows');
|
|
54
|
-
return !fs.existsSync(path.join(workflowsDir, 'stack-
|
|
54
|
+
return !fs.existsSync(path.join(workflowsDir, 'stack-ci.yml'));
|
|
55
55
|
},
|
|
56
56
|
fix: async (_config, rootDir) => {
|
|
57
57
|
await (0, workflows_js_1.generateWorkflows)(rootDir);
|
|
@@ -65,7 +65,7 @@ exports.workflowFixes = [
|
|
|
65
65
|
severity: 'info',
|
|
66
66
|
description: 'GitHub workflows may be outdated',
|
|
67
67
|
scan: async (_config, rootDir) => {
|
|
68
|
-
const workflowPath = path.join(rootDir, '.github', 'workflows', 'stack-
|
|
68
|
+
const workflowPath = path.join(rootDir, '.github', 'workflows', 'stack-ci.yml');
|
|
69
69
|
if (!fs.existsSync(workflowPath))
|
|
70
70
|
return false;
|
|
71
71
|
const content = fs.readFileSync(workflowPath, 'utf8');
|
|
@@ -95,41 +95,27 @@ exports.workflowFixes = [
|
|
|
95
95
|
const workflowsDir = path.join(rootDir, '.github', 'workflows');
|
|
96
96
|
if (!fs.existsSync(workflowsDir))
|
|
97
97
|
return false;
|
|
98
|
-
// List of workflows we currently generate
|
|
98
|
+
// List of workflows we currently generate (CI testing only)
|
|
99
99
|
const validWorkflows = [
|
|
100
|
-
'stack-
|
|
101
|
-
'stack-fix.yml',
|
|
102
|
-
'stack-scan.yml',
|
|
103
|
-
'stack-undeploy.yml',
|
|
104
|
-
'stack-pr-check.yml',
|
|
105
|
-
'stack-command.yml',
|
|
106
|
-
'stack-cicd-staging.yml',
|
|
100
|
+
'stack-ci.yml',
|
|
107
101
|
'stack-cicd-prod.yml',
|
|
108
|
-
'stack-dev-sync.yml', // Only in dev mode
|
|
109
102
|
];
|
|
110
|
-
// Find all stack-*.yml files
|
|
103
|
+
// Find all stack-*.yml and factiii-*.yml files (clean up legacy too)
|
|
111
104
|
const files = fs.readdirSync(workflowsDir);
|
|
112
|
-
const
|
|
105
|
+
const managedFiles = files.filter((f) => (f.startsWith('stack-') || f.startsWith('factiii-')) && f.endsWith('.yml'));
|
|
113
106
|
// Check for orphaned files
|
|
114
|
-
const orphaned =
|
|
107
|
+
const orphaned = managedFiles.filter((f) => !validWorkflows.includes(f));
|
|
115
108
|
return orphaned.length > 0;
|
|
116
109
|
},
|
|
117
110
|
fix: async (_config, rootDir) => {
|
|
118
111
|
const workflowsDir = path.join(rootDir, '.github', 'workflows');
|
|
119
112
|
const validWorkflows = [
|
|
120
|
-
'stack-
|
|
121
|
-
'stack-fix.yml',
|
|
122
|
-
'stack-scan.yml',
|
|
123
|
-
'stack-undeploy.yml',
|
|
124
|
-
'stack-pr-check.yml',
|
|
125
|
-
'stack-command.yml',
|
|
126
|
-
'stack-cicd-staging.yml',
|
|
113
|
+
'stack-ci.yml',
|
|
127
114
|
'stack-cicd-prod.yml',
|
|
128
|
-
'stack-dev-sync.yml',
|
|
129
115
|
];
|
|
130
116
|
const files = fs.readdirSync(workflowsDir);
|
|
131
|
-
const
|
|
132
|
-
const orphaned =
|
|
117
|
+
const managedFiles = files.filter((f) => (f.startsWith('stack-') || f.startsWith('factiii-')) && f.endsWith('.yml'));
|
|
118
|
+
const orphaned = managedFiles.filter((f) => !validWorkflows.includes(f));
|
|
133
119
|
for (const file of orphaned) {
|
|
134
120
|
const filePath = path.join(workflowsDir, file);
|
|
135
121
|
fs.unlinkSync(filePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/workflows.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AAEzC,wDAAmF;AACnF,yEAAuE;AAE1D,QAAA,aAAa,GAAU;IAClC;QACE,EAAE,EAAE,mBAAmB;QACvB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,gCAAgC;QAC7C,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAChE,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/workflows.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCtE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -60,29 +60,14 @@ async function generateWorkflows(rootDir) {
|
|
|
60
60
|
if (!fs.existsSync(workflowsDir)) {
|
|
61
61
|
fs.mkdirSync(workflowsDir, { recursive: true });
|
|
62
62
|
}
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
// - stack-
|
|
66
|
-
//
|
|
67
|
-
// - stack-scan.yml: Manual scan with matrix for all configured envs
|
|
68
|
-
// - stack-undeploy.yml: Manual cleanup
|
|
69
|
-
// CI/CD (auto on push):
|
|
70
|
-
// - stack-cicd-staging.yml: Auto-deploy on push to main
|
|
71
|
-
// - stack-cicd-prod.yml: Auto-deploy on push to prod
|
|
63
|
+
// CI workflows (testing only - no SSH, no deployment):
|
|
64
|
+
// - stack-ci.yml: Build + test on push/PR to main
|
|
65
|
+
// - stack-cicd-prod.yml: Build + test on push to prod
|
|
66
|
+
// Deployment is handled via SSH from dev machine, not workflows.
|
|
72
67
|
const workflows = [
|
|
73
|
-
'stack-
|
|
74
|
-
'stack-fix.yml',
|
|
75
|
-
'stack-scan.yml',
|
|
76
|
-
'stack-undeploy.yml',
|
|
77
|
-
'stack-pr-check.yml',
|
|
78
|
-
'stack-cicd-staging.yml',
|
|
68
|
+
'stack-ci.yml',
|
|
79
69
|
'stack-cicd-prod.yml',
|
|
80
|
-
'stack-command.yml',
|
|
81
70
|
];
|
|
82
|
-
// Only add dev-sync workflow in dev mode
|
|
83
|
-
if (process.env.DEV_MODE === 'true') {
|
|
84
|
-
workflows.push('stack-dev-sync.yml');
|
|
85
|
-
}
|
|
86
71
|
for (const workflow of workflows) {
|
|
87
72
|
const sourcePath = path.join(sourceDir, workflow);
|
|
88
73
|
const destPath = path.join(workflowsDir, workflow);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/workflows.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYH,
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/workflows.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYH,8CAmCC;AAKD,0CAmCC;AArFD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AACzC,wCAAwC;AACxC,wEAAgE;AAChE,yEAAuE;AAEvE;;GAEG;AACI,KAAK,UAAU,iBAAiB,CAAC,OAAe;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAEvD,sBAAsB;IACtB,MAAM,OAAO,GAAG,IAAA,oCAAiB,GAAE,CAAC;IAEpC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,uDAAuD;IACvD,oDAAoD;IACpD,wDAAwD;IACxD,iEAAiE;IACjE,MAAM,SAAS,GAAG;QAChB,cAAc;QACd,qBAAqB;KACtB,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAEnD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAElD,kDAAkD;YAClD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;YAE1D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,YAAoB,EACpB,SAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAG,4CAAkB,CAAC,WAAW,EAAE,CAAC;IAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,qBAAqB;IACrB,IAAI,GAAG,GAAG,MAAM,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAA,wBAAQ,EAAC,iCAAiC,EAAE;YAChD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;SAClC,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;IACpD,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,cAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7C,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;QAChD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,WAAW,EAAE,YAAY;QACzB,GAAG;QACH,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: Stack CI
|
|
2
|
+
|
|
3
|
+
# Generated by @factiii/stack v{VERSION}
|
|
4
|
+
# Runs builds and tests on push/PR to main.
|
|
5
|
+
# No deployment - deploy via SSH from dev machine.
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
branches: [main]
|
|
10
|
+
pull_request:
|
|
11
|
+
branches: [main]
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
ci:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Setup Node.js
|
|
21
|
+
uses: actions/setup-node@v4
|
|
22
|
+
with:
|
|
23
|
+
node-version: '20'
|
|
24
|
+
|
|
25
|
+
- name: Setup pnpm
|
|
26
|
+
uses: pnpm/action-setup@v4
|
|
27
|
+
with:
|
|
28
|
+
version: 9
|
|
29
|
+
|
|
30
|
+
- name: Install dependencies
|
|
31
|
+
run: pnpm install --frozen-lockfile
|
|
32
|
+
|
|
33
|
+
- name: Build server
|
|
34
|
+
run: pnpm build
|
|
35
|
+
working-directory: apps/server
|
|
36
|
+
|
|
37
|
+
- name: Build client
|
|
38
|
+
run: pnpm build
|
|
39
|
+
working-directory: client
|
|
40
|
+
if: hashFiles('client/package.json') != ''
|
|
41
|
+
|
|
42
|
+
- name: Setup Java (for Android)
|
|
43
|
+
uses: actions/setup-java@v4
|
|
44
|
+
with:
|
|
45
|
+
distribution: 'temurin'
|
|
46
|
+
java-version: '17'
|
|
47
|
+
if: hashFiles('apps/mobile/android/build.gradle') != ''
|
|
48
|
+
|
|
49
|
+
- name: Build Android
|
|
50
|
+
run: |
|
|
51
|
+
cd apps/mobile/android
|
|
52
|
+
./gradlew assembleRelease
|
|
53
|
+
if: hashFiles('apps/mobile/android/build.gradle') != ''
|
|
54
|
+
|
|
55
|
+
- name: Run tests
|
|
56
|
+
run: pnpm test
|
|
@@ -1,115 +1,54 @@
|
|
|
1
|
-
name: Stack CI
|
|
1
|
+
name: Stack CI Prod
|
|
2
2
|
|
|
3
3
|
# Generated by @factiii/stack v{VERSION}
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# For manual infrastructure operations, use stack-deploy.yml
|
|
4
|
+
# Runs builds and tests on push to prod branch.
|
|
5
|
+
# No deployment - deploy via SSH from dev machine.
|
|
7
6
|
|
|
8
7
|
on:
|
|
9
8
|
push:
|
|
10
|
-
branches:
|
|
11
|
-
- prod
|
|
9
|
+
branches: [prod]
|
|
12
10
|
|
|
13
11
|
jobs:
|
|
14
|
-
|
|
12
|
+
ci:
|
|
15
13
|
runs-on: ubuntu-latest
|
|
16
14
|
steps:
|
|
17
|
-
- name: Checkout
|
|
15
|
+
- name: Checkout
|
|
18
16
|
uses: actions/checkout@v4
|
|
19
17
|
|
|
20
|
-
- name:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
- name: Setup Node.js
|
|
19
|
+
uses: actions/setup-node@v4
|
|
20
|
+
with:
|
|
21
|
+
node-version: '20'
|
|
24
22
|
|
|
25
|
-
- name:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if [ ! -f "$CONFIG_FILE" ]; then CONFIG_FILE="factiii.yml"; fi
|
|
30
|
-
if [ ! -f "$CONFIG_FILE" ]; then
|
|
31
|
-
echo "❌ stack.yml or factiii.yml not found"
|
|
32
|
-
exit 1
|
|
33
|
-
fi
|
|
23
|
+
- name: Setup pnpm
|
|
24
|
+
uses: pnpm/action-setup@v4
|
|
25
|
+
with:
|
|
26
|
+
version: 9
|
|
34
27
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
SSH_USER=$(yq eval '.prod.ssh_user // "ubuntu"' "$CONFIG_FILE")
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: pnpm install --frozen-lockfile
|
|
38
30
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
- name: Build server
|
|
32
|
+
run: pnpm build
|
|
33
|
+
working-directory: apps/server
|
|
42
34
|
|
|
43
|
-
- name:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
HAS_PROD=$(yq eval '.prod != null' "$CONFIG_FILE")
|
|
48
|
-
echo "has_prod=$HAS_PROD" >> $GITHUB_OUTPUT
|
|
35
|
+
- name: Build client
|
|
36
|
+
run: pnpm build
|
|
37
|
+
working-directory: client
|
|
38
|
+
if: hashFiles('client/package.json') != ''
|
|
49
39
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
40
|
+
- name: Setup Java (for Android)
|
|
41
|
+
uses: actions/setup-java@v4
|
|
42
|
+
with:
|
|
43
|
+
distribution: 'temurin'
|
|
44
|
+
java-version: '17'
|
|
45
|
+
if: hashFiles('apps/mobile/android/build.gradle') != ''
|
|
54
46
|
|
|
55
|
-
- name:
|
|
56
|
-
if: steps.check_prod.outputs.has_prod == 'true'
|
|
57
|
-
env:
|
|
58
|
-
SSH_KEY: ${{ secrets.PROD_SSH }}
|
|
47
|
+
- name: Build Android
|
|
59
48
|
run: |
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
fi
|
|
64
|
-
|
|
65
|
-
mkdir -p ~/.ssh
|
|
66
|
-
echo "$SSH_KEY" > ~/.ssh/deploy_key
|
|
67
|
-
chmod 600 ~/.ssh/deploy_key
|
|
49
|
+
cd apps/mobile/android
|
|
50
|
+
./gradlew assembleRelease
|
|
51
|
+
if: hashFiles('apps/mobile/android/build.gradle') != ''
|
|
68
52
|
|
|
69
|
-
- name:
|
|
70
|
-
|
|
71
|
-
env:
|
|
72
|
-
HOST: ${{ steps.config.outputs.host }}
|
|
73
|
-
USER: ${{ steps.config.outputs.ssh_user }}
|
|
74
|
-
REPO_NAME: ${{ steps.config.outputs.repo_name }}
|
|
75
|
-
COMMIT_HASH: ${{ github.sha }}
|
|
76
|
-
BRANCH: ${{ github.ref_name }}
|
|
77
|
-
GITHUB_REPO: ${{ github.repository }}
|
|
78
|
-
PROD_ENVS: ${{ secrets.PROD_ENVS }}
|
|
79
|
-
run: |
|
|
80
|
-
if [ -z "$HOST" ]; then
|
|
81
|
-
echo "❌ Missing prod.domain in config"
|
|
82
|
-
exit 1
|
|
83
|
-
fi
|
|
84
|
-
|
|
85
|
-
echo "🚀 Deploying to prod ($HOST)..."
|
|
86
|
-
|
|
87
|
-
# Prepare environment variables for SSH (base64 encode to handle special characters)
|
|
88
|
-
ENV_VARS_EXPORT=""
|
|
89
|
-
if [ -n "$PROD_ENVS" ]; then
|
|
90
|
-
ENV_VARS_B64=$(echo -n "$PROD_ENVS" | base64 -w 0)
|
|
91
|
-
ENV_VARS_EXPORT="PROD_ENVS=\$(echo '$ENV_VARS_B64' | base64 -d) && export PROD_ENVS && "
|
|
92
|
-
fi
|
|
93
|
-
|
|
94
|
-
ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no "$USER@$HOST" \
|
|
95
|
-
"export PATH=\"/opt/homebrew/bin:/usr/local/bin:\$PATH\" && \
|
|
96
|
-
REPO_DIR=\"\$HOME/.factiii/$REPO_NAME\" && \
|
|
97
|
-
if [ -d \"\$REPO_DIR\" ]; then \
|
|
98
|
-
cd \"\$REPO_DIR\" && \
|
|
99
|
-
$ENV_VARS_EXPORT GITHUB_ACTIONS=true COMMIT_HASH=$COMMIT_HASH BRANCH=$BRANCH GITHUB_REPO=$GITHUB_REPO \
|
|
100
|
-
npx stack deploy --prod --commit $COMMIT_HASH --branch $BRANCH; \
|
|
101
|
-
else \
|
|
102
|
-
echo \"❌ Repo directory not found at \$REPO_DIR\"; \
|
|
103
|
-
echo \"Run deployment first to clone the repository\"; \
|
|
104
|
-
exit 1; \
|
|
105
|
-
fi"
|
|
106
|
-
|
|
107
|
-
DEPLOY_EXIT_CODE=$?
|
|
108
|
-
rm -f ~/.ssh/deploy_key
|
|
109
|
-
|
|
110
|
-
if [ $DEPLOY_EXIT_CODE -eq 0 ]; then
|
|
111
|
-
echo "✅ Prod deployment complete!"
|
|
112
|
-
else
|
|
113
|
-
echo "❌ Prod deployment failed with exit code $DEPLOY_EXIT_CODE"
|
|
114
|
-
exit $DEPLOY_EXIT_CODE
|
|
115
|
-
fi
|
|
53
|
+
- name: Run tests
|
|
54
|
+
run: pnpm test
|
|
@@ -68,5 +68,20 @@ export declare function getUsedPlugins(config: FactiiiConfig): Set<string>;
|
|
|
68
68
|
* @param name - Environment name to validate
|
|
69
69
|
* @returns Error message if invalid, null if valid
|
|
70
70
|
*/
|
|
71
|
+
/**
|
|
72
|
+
* Local config interface (stack.local.yml)
|
|
73
|
+
* Per-developer settings that are gitignored
|
|
74
|
+
*/
|
|
75
|
+
export interface LocalConfig {
|
|
76
|
+
dev_os?: 'mac' | 'windows' | 'ubuntu';
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Load local config from stack.local.yml (or factiii.local.yml)
|
|
80
|
+
* Returns empty object if file doesn't exist
|
|
81
|
+
*
|
|
82
|
+
* @param rootDir - Root directory of the project
|
|
83
|
+
* @returns Parsed local config or empty object
|
|
84
|
+
*/
|
|
85
|
+
export declare function loadLocalConfig(rootDir: string): LocalConfig;
|
|
71
86
|
export declare function validateEnvironmentName(name: string): string | null;
|
|
72
87
|
//# sourceMappingURL=config-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/config-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"config-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/config-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAW1E;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sKAWvB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,GACpB,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAgBnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAU9D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,KAAK,GACX,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAgBnC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAWvE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAED;;;;;;;GAOG;AACH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;CACvC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAW5D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBnE"}
|
|
@@ -5,6 +5,42 @@
|
|
|
5
5
|
* Helper functions for working with factiii.yml config where
|
|
6
6
|
* environments are stored as top-level keys.
|
|
7
7
|
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
+
};
|
|
8
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
45
|
exports.RESERVED_CONFIG_KEYS = void 0;
|
|
10
46
|
exports.extractEnvironments = extractEnvironments;
|
|
@@ -12,7 +48,11 @@ exports.getStageFromEnvironment = getStageFromEnvironment;
|
|
|
12
48
|
exports.getEnvironmentsForStage = getEnvironmentsForStage;
|
|
13
49
|
exports.getUsedServerPlugins = getUsedServerPlugins;
|
|
14
50
|
exports.getUsedPlugins = getUsedPlugins;
|
|
51
|
+
exports.loadLocalConfig = loadLocalConfig;
|
|
15
52
|
exports.validateEnvironmentName = validateEnvironmentName;
|
|
53
|
+
const fs = __importStar(require("fs"));
|
|
54
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
55
|
+
const config_files_js_1 = require("../constants/config-files.js");
|
|
16
56
|
// ============================================================
|
|
17
57
|
// CRITICAL: Config Environment Extraction
|
|
18
58
|
// ============================================================
|
|
@@ -142,13 +182,25 @@ function getUsedPlugins(config) {
|
|
|
142
182
|
return plugins;
|
|
143
183
|
}
|
|
144
184
|
/**
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* and follows naming conventions
|
|
185
|
+
* Load local config from stack.local.yml (or factiii.local.yml)
|
|
186
|
+
* Returns empty object if file doesn't exist
|
|
148
187
|
*
|
|
149
|
-
* @param
|
|
150
|
-
* @returns
|
|
188
|
+
* @param rootDir - Root directory of the project
|
|
189
|
+
* @returns Parsed local config or empty object
|
|
151
190
|
*/
|
|
191
|
+
function loadLocalConfig(rootDir) {
|
|
192
|
+
const localPath = (0, config_files_js_1.getStackLocalPath)(rootDir);
|
|
193
|
+
if (!fs.existsSync(localPath)) {
|
|
194
|
+
return {};
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
const content = fs.readFileSync(localPath, 'utf8');
|
|
198
|
+
return js_yaml_1.default.load(content) ?? {};
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return {};
|
|
202
|
+
}
|
|
203
|
+
}
|
|
152
204
|
function validateEnvironmentName(name) {
|
|
153
205
|
// Check for reserved key conflicts
|
|
154
206
|
if (exports.RESERVED_CONFIG_KEYS.includes(name)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-helpers.js","sourceRoot":"","sources":["../../src/utils/config-helpers.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"config-helpers.js","sourceRoot":"","sources":["../../src/utils/config-helpers.ts"],"names":[],"mappings":"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"}
|