@factiii/stack 0.1.56 → 0.1.58
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/deploy-secrets.js +1 -1
- package/dist/cli/deploy-secrets.js.map +1 -1
- package/dist/cli/fix.d.ts.map +1 -1
- package/dist/cli/fix.js +27 -4
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/scan.d.ts.map +1 -1
- package/dist/cli/scan.js +24 -3
- package/dist/cli/scan.js.map +1 -1
- package/dist/cli/secrets.js +1 -1
- package/dist/cli/secrets.js.map +1 -1
- package/dist/generators/generate-stack-auto.d.ts.map +1 -1
- package/dist/generators/generate-stack-auto.js +17 -16
- package/dist/generators/generate-stack-auto.js.map +1 -1
- package/dist/generators/generate-stack-yml.d.ts.map +1 -1
- package/dist/generators/generate-stack-yml.js +23 -1
- package/dist/generators/generate-stack-yml.js.map +1 -1
- package/dist/plugins/addons/vercel/index.d.ts +99 -0
- package/dist/plugins/addons/vercel/index.d.ts.map +1 -0
- package/dist/plugins/addons/vercel/index.js +234 -0
- package/dist/plugins/addons/vercel/index.js.map +1 -0
- package/dist/plugins/addons/vercel/scanfix/config.d.ts +8 -0
- package/dist/plugins/addons/vercel/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/addons/vercel/scanfix/config.js +182 -0
- package/dist/plugins/addons/vercel/scanfix/config.js.map +1 -0
- package/dist/plugins/addons/vercel/scanfix/token.d.ts +8 -0
- package/dist/plugins/addons/vercel/scanfix/token.d.ts.map +1 -0
- package/dist/plugins/addons/vercel/scanfix/token.js +127 -0
- package/dist/plugins/addons/vercel/scanfix/token.js.map +1 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.d.ts +34 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.d.ts.map +1 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.js +290 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.js.map +1 -0
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +9 -0
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.js +91 -0
- package/dist/plugins/pipelines/aws/scanfix/credentials.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.js +15 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/iam.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/iam.js +5 -0
- package/dist/plugins/pipelines/aws/scanfix/iam.js.map +1 -1
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/index.js +68 -7
- package/dist/plugins/pipelines/factiii/index.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.js +2 -2
- package/dist/plugins/pipelines/factiii/scanfix/config.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js +78 -1
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/vault.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/vault.js +5 -3
- package/dist/plugins/pipelines/factiii/scanfix/vault.js.map +1 -1
- package/dist/plugins/servers/amazon-linux/index.d.ts +1 -0
- package/dist/plugins/servers/amazon-linux/index.d.ts.map +1 -1
- package/dist/plugins/servers/mac/index.d.ts +1 -0
- package/dist/plugins/servers/mac/index.d.ts.map +1 -1
- package/dist/plugins/servers/mac/scanfix/config.js +1 -1
- package/dist/plugins/servers/mac/scanfix/config.js.map +1 -1
- package/dist/plugins/servers/ubuntu/index.d.ts +1 -0
- package/dist/plugins/servers/ubuntu/index.d.ts.map +1 -1
- package/dist/types/cli.d.ts +5 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/plugin.d.ts +6 -0
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/utils/config-helpers.d.ts +14 -1
- package/dist/utils/config-helpers.d.ts.map +1 -1
- package/dist/utils/config-helpers.js +51 -0
- package/dist/utils/config-helpers.js.map +1 -1
- package/dist/utils/interactive-prompts.d.ts +19 -0
- package/dist/utils/interactive-prompts.d.ts.map +1 -0
- package/dist/utils/interactive-prompts.js +101 -0
- package/dist/utils/interactive-prompts.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vercel Token Scanfixes
|
|
4
|
+
*
|
|
5
|
+
* Manages VERCEL_TOKEN in Ansible Vault for API deployments.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.fixes = void 0;
|
|
42
|
+
const config_helpers_js_1 = require("../../../../utils/config-helpers.js");
|
|
43
|
+
exports.fixes = [
|
|
44
|
+
{
|
|
45
|
+
id: 'vercel-token-missing',
|
|
46
|
+
stage: 'secrets',
|
|
47
|
+
severity: 'critical',
|
|
48
|
+
description: 'VERCEL_TOKEN not found in Ansible Vault',
|
|
49
|
+
scan: async (config, rootDir) => {
|
|
50
|
+
// Skip if vercel not configured
|
|
51
|
+
if (!config.vercel)
|
|
52
|
+
return false;
|
|
53
|
+
// Check if VERCEL_TOKEN exists in vault
|
|
54
|
+
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
55
|
+
const vault = new AnsibleVaultSecrets({
|
|
56
|
+
vault_path: config.ansible?.vault_path || (0, config_helpers_js_1.getDefaultVaultPath)(config),
|
|
57
|
+
vault_password_file: config.ansible?.vault_password_file,
|
|
58
|
+
rootDir,
|
|
59
|
+
});
|
|
60
|
+
try {
|
|
61
|
+
const token = await vault.getSecret('VERCEL_TOKEN');
|
|
62
|
+
return !token; // No token = problem (true), token exists = no problem (false)
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return true; // Vault error = assume token is missing
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
fix: async (config, rootDir) => {
|
|
69
|
+
console.log(' Setting up VERCEL_TOKEN in Ansible Vault...');
|
|
70
|
+
console.log('');
|
|
71
|
+
console.log(' Get your token from: https://vercel.com/account/tokens');
|
|
72
|
+
console.log(' Create a new token with:');
|
|
73
|
+
console.log(' - Scope: Full Account (or specific team)');
|
|
74
|
+
console.log(' - Expiration: No Expiration (or custom)');
|
|
75
|
+
console.log('');
|
|
76
|
+
const { promptForSecret } = await Promise.resolve().then(() => __importStar(require('../../../../utils/interactive-prompts.js')));
|
|
77
|
+
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
78
|
+
const vault = new AnsibleVaultSecrets({
|
|
79
|
+
vault_path: config.ansible?.vault_path || (0, config_helpers_js_1.getDefaultVaultPath)(config),
|
|
80
|
+
vault_password_file: config.ansible?.vault_password_file,
|
|
81
|
+
rootDir,
|
|
82
|
+
});
|
|
83
|
+
try {
|
|
84
|
+
const token = await promptForSecret('VERCEL_TOKEN', 'Vercel API Token');
|
|
85
|
+
await vault.setSecret('VERCEL_TOKEN', token);
|
|
86
|
+
console.log(' [OK] VERCEL_TOKEN stored in Ansible Vault');
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
console.log(' [!] Failed to store VERCEL_TOKEN: ' + (e instanceof Error ? e.message : String(e)));
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
manualFix: `
|
|
95
|
+
Store VERCEL_TOKEN in Ansible Vault manually:
|
|
96
|
+
|
|
97
|
+
npx stack deploy --secrets set VERCEL_TOKEN
|
|
98
|
+
|
|
99
|
+
Or get token from: https://vercel.com/account/tokens
|
|
100
|
+
`,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: 'vercel-token-env-not-set',
|
|
104
|
+
stage: 'dev',
|
|
105
|
+
severity: 'info',
|
|
106
|
+
description: 'VERCEL_TOKEN not available in environment (deployments will read from vault)',
|
|
107
|
+
scan: async (config, _rootDir) => {
|
|
108
|
+
// Skip if vercel not configured
|
|
109
|
+
if (!config.vercel)
|
|
110
|
+
return false;
|
|
111
|
+
// Token in env = no problem, not in env = info-level issue
|
|
112
|
+
return !process.env.VERCEL_TOKEN;
|
|
113
|
+
},
|
|
114
|
+
fix: null,
|
|
115
|
+
manualFix: `
|
|
116
|
+
VERCEL_TOKEN is not required in your environment during development.
|
|
117
|
+
It will be automatically read from Ansible Vault during deployment.
|
|
118
|
+
|
|
119
|
+
If you want to set it in your shell for testing:
|
|
120
|
+
export VERCEL_TOKEN="your-token-here"
|
|
121
|
+
|
|
122
|
+
Or add to your shell profile (~/.bashrc, ~/.zshrc):
|
|
123
|
+
export VERCEL_TOKEN="$(npx stack deploy --secrets get VERCEL_TOKEN)"
|
|
124
|
+
`,
|
|
125
|
+
},
|
|
126
|
+
];
|
|
127
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel API Utilities
|
|
3
|
+
*
|
|
4
|
+
* API-first integration with Vercel for deployments.
|
|
5
|
+
* Uses Vercel REST API for stability (more stable than CLI).
|
|
6
|
+
*
|
|
7
|
+
* Vercel API Docs: https://vercel.com/docs/rest-api
|
|
8
|
+
*/
|
|
9
|
+
import type { FactiiiConfig, DeployResult } from '../../../../types/index.js';
|
|
10
|
+
interface VercelDeployment {
|
|
11
|
+
id: string;
|
|
12
|
+
url: string;
|
|
13
|
+
state: 'BUILDING' | 'READY' | 'ERROR' | 'CANCELED';
|
|
14
|
+
readyState: 'READY' | 'ERROR' | 'BUILDING' | 'QUEUED' | 'CANCELED';
|
|
15
|
+
target: 'production' | 'staging' | 'preview';
|
|
16
|
+
}
|
|
17
|
+
interface DeployOptions {
|
|
18
|
+
production?: boolean;
|
|
19
|
+
branch?: string;
|
|
20
|
+
commit?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Deploy to Vercel via API
|
|
24
|
+
*
|
|
25
|
+
* Uses git-based deployment (most reliable for free tier).
|
|
26
|
+
* Vercel automatically builds from the git commit.
|
|
27
|
+
*/
|
|
28
|
+
export declare function deployToVercel(config: FactiiiConfig, options?: DeployOptions): Promise<DeployResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Get deployment status from Vercel API
|
|
31
|
+
*/
|
|
32
|
+
export declare function getDeploymentStatus(config: FactiiiConfig, deploymentId: string): Promise<VercelDeployment | null>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=vercel-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-api.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/utils/vercel-api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAS9E,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IACnD,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;IACnE,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;CAC9C;AAED,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA4ID;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAmIvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAelC"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vercel API Utilities
|
|
4
|
+
*
|
|
5
|
+
* API-first integration with Vercel for deployments.
|
|
6
|
+
* Uses Vercel REST API for stability (more stable than CLI).
|
|
7
|
+
*
|
|
8
|
+
* Vercel API Docs: https://vercel.com/docs/rest-api
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.deployToVercel = deployToVercel;
|
|
45
|
+
exports.getDeploymentStatus = getDeploymentStatus;
|
|
46
|
+
const fs = __importStar(require("fs"));
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
const child_process_1 = require("child_process");
|
|
49
|
+
const config_helpers_js_1 = require("../../../../utils/config-helpers.js");
|
|
50
|
+
/**
|
|
51
|
+
* Get VERCEL_TOKEN from vault or environment
|
|
52
|
+
*/
|
|
53
|
+
async function getVercelToken(config, rootDir) {
|
|
54
|
+
// Check environment first
|
|
55
|
+
if (process.env.VERCEL_TOKEN) {
|
|
56
|
+
return process.env.VERCEL_TOKEN;
|
|
57
|
+
}
|
|
58
|
+
// Read from Ansible Vault
|
|
59
|
+
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
60
|
+
const vault = new AnsibleVaultSecrets({
|
|
61
|
+
vault_path: config.ansible?.vault_path || (0, config_helpers_js_1.getDefaultVaultPath)(config),
|
|
62
|
+
vault_password_file: config.ansible?.vault_password_file,
|
|
63
|
+
rootDir,
|
|
64
|
+
});
|
|
65
|
+
const token = await vault.getSecret('VERCEL_TOKEN');
|
|
66
|
+
if (!token) {
|
|
67
|
+
throw new Error('VERCEL_TOKEN not found in vault or environment');
|
|
68
|
+
}
|
|
69
|
+
return token;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get Vercel project metadata from .vercel/project.json
|
|
73
|
+
*/
|
|
74
|
+
function getVercelProjectMetadata(rootDir) {
|
|
75
|
+
const vercelConfigPath = path.join(rootDir, '.vercel', 'project.json');
|
|
76
|
+
if (!fs.existsSync(vercelConfigPath)) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const content = fs.readFileSync(vercelConfigPath, 'utf8');
|
|
81
|
+
const data = JSON.parse(content);
|
|
82
|
+
if (!data.projectId) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
id: data.projectId,
|
|
87
|
+
name: data.name || 'unknown',
|
|
88
|
+
orgId: data.orgId,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get git repository info (needed for deployment source)
|
|
97
|
+
*/
|
|
98
|
+
function getGitInfo(rootDir) {
|
|
99
|
+
try {
|
|
100
|
+
const remote = (0, child_process_1.execSync)('git remote get-url origin', {
|
|
101
|
+
cwd: rootDir,
|
|
102
|
+
encoding: 'utf8',
|
|
103
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
104
|
+
}).trim();
|
|
105
|
+
const branch = (0, child_process_1.execSync)('git branch --show-current', {
|
|
106
|
+
cwd: rootDir,
|
|
107
|
+
encoding: 'utf8',
|
|
108
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
109
|
+
}).trim();
|
|
110
|
+
const commit = (0, child_process_1.execSync)('git rev-parse HEAD', {
|
|
111
|
+
cwd: rootDir,
|
|
112
|
+
encoding: 'utf8',
|
|
113
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
114
|
+
}).trim();
|
|
115
|
+
// Parse GitHub repo from remote
|
|
116
|
+
const match = remote.match(/github\.com[:/](.+?)(?:\.git)?$/);
|
|
117
|
+
if (!match || !match[1]) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
return { repo: match[1], branch, commit };
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Call Vercel API
|
|
128
|
+
*/
|
|
129
|
+
async function callVercelAPI(endpoint, token, options = {}) {
|
|
130
|
+
const { method = 'GET', body, teamId } = options;
|
|
131
|
+
// Build URL with team ID if provided
|
|
132
|
+
let url = 'https://api.vercel.com' + endpoint;
|
|
133
|
+
if (teamId && !url.includes('?')) {
|
|
134
|
+
url = url + '?teamId=' + teamId;
|
|
135
|
+
}
|
|
136
|
+
else if (teamId) {
|
|
137
|
+
url = url + '&teamId=' + teamId;
|
|
138
|
+
}
|
|
139
|
+
const headers = {
|
|
140
|
+
Authorization: 'Bearer ' + token,
|
|
141
|
+
'Content-Type': 'application/json',
|
|
142
|
+
};
|
|
143
|
+
const fetchOptions = {
|
|
144
|
+
method,
|
|
145
|
+
headers,
|
|
146
|
+
};
|
|
147
|
+
if (body) {
|
|
148
|
+
fetchOptions.body = JSON.stringify(body);
|
|
149
|
+
}
|
|
150
|
+
const response = await fetch(url, fetchOptions);
|
|
151
|
+
if (!response.ok) {
|
|
152
|
+
const errorText = await response.text();
|
|
153
|
+
throw new Error('Vercel API error (' + response.status + '): ' + errorText);
|
|
154
|
+
}
|
|
155
|
+
return await response.json();
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Deploy to Vercel via API
|
|
159
|
+
*
|
|
160
|
+
* Uses git-based deployment (most reliable for free tier).
|
|
161
|
+
* Vercel automatically builds from the git commit.
|
|
162
|
+
*/
|
|
163
|
+
async function deployToVercel(config, options = {}) {
|
|
164
|
+
const rootDir = process.cwd();
|
|
165
|
+
try {
|
|
166
|
+
console.log(' 🚀 Deploying to Vercel via API...');
|
|
167
|
+
// Get token
|
|
168
|
+
const token = await getVercelToken(config, rootDir);
|
|
169
|
+
// Get project metadata
|
|
170
|
+
const project = getVercelProjectMetadata(rootDir);
|
|
171
|
+
if (!project) {
|
|
172
|
+
return {
|
|
173
|
+
success: false,
|
|
174
|
+
error: 'Project not linked. Run: vercel link',
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
console.log(' 📦 Project: ' + project.name + ' (' + project.id + ')');
|
|
178
|
+
// Get git info
|
|
179
|
+
const gitInfo = getGitInfo(rootDir);
|
|
180
|
+
if (!gitInfo) {
|
|
181
|
+
return {
|
|
182
|
+
success: false,
|
|
183
|
+
error: 'Git repository not found or not a GitHub repo',
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
const targetBranch = options.branch || gitInfo.branch;
|
|
187
|
+
const targetCommit = options.commit || gitInfo.commit;
|
|
188
|
+
console.log(' 🌿 Branch: ' + targetBranch);
|
|
189
|
+
console.log(' 📝 Commit: ' + targetCommit.substring(0, 7));
|
|
190
|
+
// Trigger deployment via API
|
|
191
|
+
// For git-based deployments, we use the "deploy hook" approach
|
|
192
|
+
// First, we need to trigger a deployment via git push (Vercel automatically deploys)
|
|
193
|
+
// OR use the Vercel API to create a deployment
|
|
194
|
+
// Check if git is pushed
|
|
195
|
+
console.log(' Checking if git is pushed to remote...');
|
|
196
|
+
try {
|
|
197
|
+
const remoteBranch = (0, child_process_1.execSync)('git rev-parse origin/' + targetBranch, {
|
|
198
|
+
cwd: rootDir,
|
|
199
|
+
encoding: 'utf8',
|
|
200
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
201
|
+
}).trim();
|
|
202
|
+
if (remoteBranch !== targetCommit) {
|
|
203
|
+
console.log(' ⚠️ Local commit not pushed to remote. Pushing...');
|
|
204
|
+
(0, child_process_1.execSync)('git push origin ' + targetBranch, {
|
|
205
|
+
cwd: rootDir,
|
|
206
|
+
stdio: 'inherit',
|
|
207
|
+
});
|
|
208
|
+
console.log(' [OK] Git pushed to remote');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
console.log(' ⚠️ Remote branch not found. Pushing...');
|
|
213
|
+
(0, child_process_1.execSync)('git push -u origin ' + targetBranch, {
|
|
214
|
+
cwd: rootDir,
|
|
215
|
+
stdio: 'inherit',
|
|
216
|
+
});
|
|
217
|
+
console.log(' [OK] Git pushed to remote');
|
|
218
|
+
}
|
|
219
|
+
// Vercel automatically deploys when git is pushed (if GitHub integration is set up)
|
|
220
|
+
// For manual trigger, we can use the Vercel API to create a deployment
|
|
221
|
+
// However, for free tier, git-based deployment is recommended
|
|
222
|
+
console.log(' Triggering Vercel deployment...');
|
|
223
|
+
// Use Vercel API to get latest deployment status
|
|
224
|
+
const deploymentsResponse = (await callVercelAPI('/v6/deployments?projectId=' + project.id + '&limit=1', token, { teamId: project.orgId }));
|
|
225
|
+
if (!deploymentsResponse.deployments || deploymentsResponse.deployments.length === 0) {
|
|
226
|
+
return {
|
|
227
|
+
success: false,
|
|
228
|
+
error: 'No deployments found. Make sure Vercel is connected to your GitHub repo.',
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
const latestDeployment = deploymentsResponse.deployments[0];
|
|
232
|
+
if (!latestDeployment) {
|
|
233
|
+
return {
|
|
234
|
+
success: false,
|
|
235
|
+
error: 'No deployments found.',
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
console.log(' 📊 Latest deployment: ' + latestDeployment.id);
|
|
239
|
+
console.log(' 🌐 URL: https://' + latestDeployment.url);
|
|
240
|
+
console.log(' 📈 State: ' + latestDeployment.readyState);
|
|
241
|
+
// For free tier, Vercel auto-deploys from GitHub
|
|
242
|
+
// We just verify the deployment exists and is building/ready
|
|
243
|
+
if (latestDeployment.readyState === 'READY') {
|
|
244
|
+
return {
|
|
245
|
+
success: true,
|
|
246
|
+
message: 'Deployed to Vercel: https://' + latestDeployment.url,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
if (latestDeployment.readyState === 'BUILDING' || latestDeployment.readyState === 'QUEUED') {
|
|
250
|
+
return {
|
|
251
|
+
success: true,
|
|
252
|
+
message: 'Deployment in progress: https://' + latestDeployment.url,
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
if (latestDeployment.readyState === 'ERROR') {
|
|
256
|
+
return {
|
|
257
|
+
success: false,
|
|
258
|
+
error: 'Deployment failed. Check Vercel dashboard for details.',
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
success: true,
|
|
263
|
+
message: 'Deployment status: ' + latestDeployment.readyState,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
catch (e) {
|
|
267
|
+
return {
|
|
268
|
+
success: false,
|
|
269
|
+
error: e instanceof Error ? e.message : String(e),
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Get deployment status from Vercel API
|
|
275
|
+
*/
|
|
276
|
+
async function getDeploymentStatus(config, deploymentId) {
|
|
277
|
+
const rootDir = process.cwd();
|
|
278
|
+
try {
|
|
279
|
+
const token = await getVercelToken(config, rootDir);
|
|
280
|
+
const project = getVercelProjectMetadata(rootDir);
|
|
281
|
+
const deployment = (await callVercelAPI('/v13/deployments/' + deploymentId, token, {
|
|
282
|
+
teamId: project?.orgId,
|
|
283
|
+
}));
|
|
284
|
+
return deployment;
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=vercel-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-api.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/utils/vercel-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAyBvF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAE5E,KAAK,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC;CACrE;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CAClC;AAMD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,cAStB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins/index.js
CHANGED
|
@@ -146,6 +146,15 @@ try {
|
|
|
146
146
|
catch {
|
|
147
147
|
// Plugin not available
|
|
148
148
|
}
|
|
149
|
+
// Vercel addon
|
|
150
|
+
try {
|
|
151
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
152
|
+
const VercelAddon = require('./addons/vercel/index').default;
|
|
153
|
+
exports.registry.addons['vercel'] = VercelAddon;
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Plugin not available
|
|
157
|
+
}
|
|
149
158
|
// Framework plugins
|
|
150
159
|
try {
|
|
151
160
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/aws/scanfix/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AA4KrE,eAAO,MAAM,gBAAgB,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/aws/scanfix/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AA4KrE,eAAO,MAAM,gBAAgB,EAAE,GAAG,EA+RjC,CAAC"}
|
|
@@ -335,6 +335,97 @@ exports.credentialsFixes = [
|
|
|
335
335
|
' npx stack deploy --secrets set AWS_SECRET_ACCESS_KEY',
|
|
336
336
|
].join('\n'),
|
|
337
337
|
},
|
|
338
|
+
{
|
|
339
|
+
id: 'aws-cli-not-configured-from-vault',
|
|
340
|
+
stage: 'dev',
|
|
341
|
+
severity: 'warning',
|
|
342
|
+
description: '🔐 AWS CLI not configured on dev machine (credentials exist in vault)',
|
|
343
|
+
scan: async (config, _rootDir) => {
|
|
344
|
+
// Skip if not using AWS
|
|
345
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
|
|
346
|
+
const environments = extractEnvironments(config);
|
|
347
|
+
const hasAwsEnv = Object.values(environments).some((e) => !!e.access_key_id || !!e.config);
|
|
348
|
+
if (!hasAwsEnv && !config.aws)
|
|
349
|
+
return false;
|
|
350
|
+
// Skip if AWS CLI already configured
|
|
351
|
+
const os = await Promise.resolve().then(() => __importStar(require('os')));
|
|
352
|
+
const awsCredsPath = path.join(os.homedir(), '.aws', 'credentials');
|
|
353
|
+
if (fs.existsSync(awsCredsPath)) {
|
|
354
|
+
// Check if credentials are valid
|
|
355
|
+
const content = fs.readFileSync(awsCredsPath, 'utf8');
|
|
356
|
+
if (content.includes('aws_access_key_id')) {
|
|
357
|
+
return false; // Already configured
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// Check if credentials exist in vault
|
|
361
|
+
if (!config.ansible?.vault_path)
|
|
362
|
+
return false;
|
|
363
|
+
try {
|
|
364
|
+
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
365
|
+
const vault = new AnsibleVaultSecrets({
|
|
366
|
+
vault_path: config.ansible.vault_path,
|
|
367
|
+
vault_password_file: config.ansible.vault_password_file,
|
|
368
|
+
});
|
|
369
|
+
const result = await vault.checkSecrets(['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY']);
|
|
370
|
+
// Flag if credentials exist in vault but not in ~/.aws/credentials
|
|
371
|
+
return !!(result.status?.AWS_ACCESS_KEY_ID && result.status?.AWS_SECRET_ACCESS_KEY);
|
|
372
|
+
}
|
|
373
|
+
catch {
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
fix: async (config, _rootDir) => {
|
|
378
|
+
if (!config.ansible?.vault_path) {
|
|
379
|
+
console.log(' Ansible Vault not configured');
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
try {
|
|
383
|
+
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
384
|
+
const vault = new AnsibleVaultSecrets({
|
|
385
|
+
vault_path: config.ansible.vault_path,
|
|
386
|
+
vault_password_file: config.ansible.vault_password_file,
|
|
387
|
+
});
|
|
388
|
+
const accessKeyId = await vault.getSecret('AWS_ACCESS_KEY_ID');
|
|
389
|
+
const secretKey = await vault.getSecret('AWS_SECRET_ACCESS_KEY');
|
|
390
|
+
if (!accessKeyId || !secretKey) {
|
|
391
|
+
console.log(' AWS credentials not found in vault');
|
|
392
|
+
return false;
|
|
393
|
+
}
|
|
394
|
+
const region = config.aws?.region ?? 'us-east-1';
|
|
395
|
+
// Create ~/.aws directory
|
|
396
|
+
const os = await Promise.resolve().then(() => __importStar(require('os')));
|
|
397
|
+
const awsDir = path.join(os.homedir(), '.aws');
|
|
398
|
+
if (!fs.existsSync(awsDir)) {
|
|
399
|
+
fs.mkdirSync(awsDir, { mode: 0o755 });
|
|
400
|
+
}
|
|
401
|
+
// Write credentials file
|
|
402
|
+
const credentialsPath = path.join(awsDir, 'credentials');
|
|
403
|
+
const credentialsContent = [
|
|
404
|
+
'[default]',
|
|
405
|
+
'aws_access_key_id = ' + accessKeyId,
|
|
406
|
+
'aws_secret_access_key = ' + secretKey,
|
|
407
|
+
].join('\n') + '\n';
|
|
408
|
+
fs.writeFileSync(credentialsPath, credentialsContent, { mode: 0o600 });
|
|
409
|
+
// Write config file
|
|
410
|
+
const configPath = path.join(awsDir, 'config');
|
|
411
|
+
const configContent = [
|
|
412
|
+
'[default]',
|
|
413
|
+
'region = ' + region,
|
|
414
|
+
'output = json',
|
|
415
|
+
].join('\n') + '\n';
|
|
416
|
+
fs.writeFileSync(configPath, configContent, { mode: 0o644 });
|
|
417
|
+
console.log(' ✅ Configured ~/.aws/credentials from Ansible Vault');
|
|
418
|
+
console.log(' ✅ Configured ~/.aws/config (region: ' + region + ')');
|
|
419
|
+
return true;
|
|
420
|
+
}
|
|
421
|
+
catch (e) {
|
|
422
|
+
console.log(' Error: ' + (e instanceof Error ? e.message : String(e)));
|
|
423
|
+
return false;
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
manualFix: 'Extract AWS credentials from vault and configure CLI:\n' +
|
|
427
|
+
' npx stack fix --dev',
|
|
428
|
+
},
|
|
338
429
|
{
|
|
339
430
|
id: 'aws-credentials-invalid',
|
|
340
431
|
stage: 'secrets',
|