@factiii/stack 0.1.57 → 0.1.59
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 +19 -1
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/scan.d.ts.map +1 -1
- package/dist/cli/scan.js +11 -1
- 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 -1
- 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 +9 -4
- package/dist/generators/generate-stack-yml.js.map +1 -1
- package/dist/plugins/addons/vercel/index.d.ts.map +1 -1
- package/dist/plugins/addons/vercel/index.js +1 -1
- package/dist/plugins/addons/vercel/index.js.map +1 -1
- package/dist/plugins/addons/vercel/scanfix/config.d.ts +1 -0
- package/dist/plugins/addons/vercel/scanfix/config.d.ts.map +1 -1
- package/dist/plugins/addons/vercel/scanfix/config.js +160 -53
- package/dist/plugins/addons/vercel/scanfix/config.js.map +1 -1
- package/dist/plugins/addons/vercel/scanfix/token.d.ts.map +1 -1
- package/dist/plugins/addons/vercel/scanfix/token.js +13 -20
- package/dist/plugins/addons/vercel/scanfix/token.js.map +1 -1
- package/dist/plugins/addons/vercel/utils/vercel-api.d.ts +32 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.d.ts.map +1 -1
- package/dist/plugins/addons/vercel/utils/vercel-api.js +50 -1
- package/dist/plugins/addons/vercel/utils/vercel-api.js.map +1 -1
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/index.js +1 -1
- 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.js +1 -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/mac/scanfix/config.js +1 -1
- package/dist/plugins/servers/mac/scanfix/config.js.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/config.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/package.json +2 -2
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Vercel Configuration Scanfixes
|
|
4
4
|
*
|
|
5
5
|
* Detects and fixes Vercel project configuration issues.
|
|
6
|
+
* Uses Vercel REST API for auto-fixing (no CLI required).
|
|
6
7
|
*/
|
|
7
8
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
9
|
if (k2 === undefined) k2 = k;
|
|
@@ -48,34 +49,107 @@ exports.fixes = [
|
|
|
48
49
|
severity: 'critical',
|
|
49
50
|
description: 'Vercel configuration missing in stack.yml',
|
|
50
51
|
scan: async (config, _rootDir) => {
|
|
51
|
-
//
|
|
52
|
-
if (!config.vercel)
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
// Check if vercel config exists
|
|
56
|
-
if (!config.vercel) {
|
|
52
|
+
// Skip if vercel not configured at all
|
|
53
|
+
if (!config.vercel)
|
|
57
54
|
return false;
|
|
58
|
-
}
|
|
59
55
|
// Check required fields
|
|
60
56
|
const projectName = config.vercel.project_name;
|
|
61
57
|
if (!projectName || projectName.toUpperCase().startsWith('EXAMPLE')) {
|
|
58
|
+
return true; // Problem: missing or example project name
|
|
59
|
+
}
|
|
60
|
+
return false; // Configured properly
|
|
61
|
+
},
|
|
62
|
+
fix: async (config, rootDir) => {
|
|
63
|
+
console.log(' Auto-detecting Vercel project via API...');
|
|
64
|
+
try {
|
|
65
|
+
const { getVercelToken, findVercelProject, listVercelProjects, createVercelProject } = await Promise.resolve().then(() => __importStar(require('../utils/vercel-api.js')));
|
|
66
|
+
// Get token
|
|
67
|
+
let token;
|
|
68
|
+
try {
|
|
69
|
+
token = await getVercelToken(config, rootDir);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
console.log(' [!] VERCEL_TOKEN not found — cannot auto-detect project');
|
|
73
|
+
console.log(' Run: npx stack fix --secrets (to set VERCEL_TOKEN first)');
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
const repoName = config.name ?? path.basename(rootDir);
|
|
77
|
+
const teamId = config.vercel?.org_id;
|
|
78
|
+
// Try to find existing project by repo name
|
|
79
|
+
console.log(' Looking for project matching "' + repoName + '"...');
|
|
80
|
+
let project = await findVercelProject(token, repoName, teamId);
|
|
81
|
+
if (!project) {
|
|
82
|
+
// List all projects so user can see what's available
|
|
83
|
+
const allProjects = await listVercelProjects(token, teamId);
|
|
84
|
+
if (allProjects.length > 0) {
|
|
85
|
+
console.log(' No project named "' + repoName + '" found.');
|
|
86
|
+
console.log(' Available projects:');
|
|
87
|
+
for (const p of allProjects.slice(0, 10)) {
|
|
88
|
+
console.log(' - ' + p.name + ' (id: ' + p.id + ')');
|
|
89
|
+
}
|
|
90
|
+
if (allProjects.length > 10) {
|
|
91
|
+
console.log(' ... and ' + (allProjects.length - 10) + ' more');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Create the project automatically
|
|
95
|
+
console.log('');
|
|
96
|
+
console.log(' Creating Vercel project "' + repoName + '"...');
|
|
97
|
+
const gitRepo = config.github_repo;
|
|
98
|
+
const cleanGitRepo = gitRepo && !gitRepo.toUpperCase().startsWith('EXAMPLE')
|
|
99
|
+
? gitRepo
|
|
100
|
+
: undefined;
|
|
101
|
+
project = await createVercelProject(token, repoName, {
|
|
102
|
+
teamId,
|
|
103
|
+
gitRepo: cleanGitRepo,
|
|
104
|
+
framework: 'nextjs',
|
|
105
|
+
});
|
|
106
|
+
console.log(' [OK] Created Vercel project: ' + project.name);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
console.log(' [OK] Found existing project: ' + project.name);
|
|
110
|
+
}
|
|
111
|
+
// Update stack.yml with project info
|
|
112
|
+
const { getStackConfigPath } = await Promise.resolve().then(() => __importStar(require('../../../../constants/config-files.js')));
|
|
113
|
+
const configPath = getStackConfigPath(rootDir);
|
|
114
|
+
let configContent = fs.readFileSync(configPath, 'utf8');
|
|
115
|
+
// Check if there's an existing vercel section to update
|
|
116
|
+
if (configContent.includes('vercel:')) {
|
|
117
|
+
// Replace EXAMPLE values or add missing fields
|
|
118
|
+
configContent = configContent
|
|
119
|
+
.replace(/project_name:\s*EXAMPLE_[^\n]*/i, 'project_name: ' + project.name)
|
|
120
|
+
.replace(/project_id:\s*EXAMPLE_[^\n]*/i, 'project_id: ' + project.id)
|
|
121
|
+
.replace(/org_id:\s*EXAMPLE_[^\n]*/i, 'org_id: ' + (project.orgId ?? ''));
|
|
122
|
+
// If project_id wasn't in the file, add it
|
|
123
|
+
if (!configContent.includes('project_id:')) {
|
|
124
|
+
configContent = configContent.replace(/project_name:\s*.+/, '$&\n project_id: ' + project.id);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Add new vercel section
|
|
129
|
+
const vercelSection = '\nvercel:\n' +
|
|
130
|
+
' project_name: ' + project.name + '\n' +
|
|
131
|
+
' project_id: ' + project.id + '\n' +
|
|
132
|
+
(project.orgId ? ' org_id: ' + project.orgId + '\n' : '');
|
|
133
|
+
configContent += vercelSection;
|
|
134
|
+
}
|
|
135
|
+
fs.writeFileSync(configPath, configContent, 'utf8');
|
|
136
|
+
console.log(' [OK] Updated stack.yml with Vercel project config');
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
console.log(' [!] Failed: ' + (e instanceof Error ? e.message : String(e)));
|
|
62
141
|
return false;
|
|
63
142
|
}
|
|
64
|
-
return true;
|
|
65
143
|
},
|
|
66
|
-
fix: null,
|
|
67
144
|
manualFix: `
|
|
68
145
|
Add Vercel configuration to stack.yml:
|
|
69
146
|
|
|
70
147
|
vercel:
|
|
71
|
-
project_name:
|
|
72
|
-
org_id:
|
|
73
|
-
project_id:
|
|
148
|
+
project_name: EXAMPLE_my-project
|
|
149
|
+
org_id: EXAMPLE_team_xxx # Optional: your Vercel team/org ID
|
|
150
|
+
project_id: EXAMPLE_prj_xxx # Optional: auto-detected after linking
|
|
74
151
|
|
|
75
|
-
|
|
76
|
-
vercel link
|
|
77
|
-
|
|
78
|
-
Or use the Vercel dashboard to create a project and add the IDs to stack.yml.
|
|
152
|
+
Or run: npx stack fix (auto-detects from Vercel API if VERCEL_TOKEN is set)
|
|
79
153
|
`,
|
|
80
154
|
},
|
|
81
155
|
{
|
|
@@ -84,53 +158,93 @@ Or use the Vercel dashboard to create a project and add the IDs to stack.yml.
|
|
|
84
158
|
severity: 'warning',
|
|
85
159
|
description: 'Vercel project not linked (missing .vercel/project.json)',
|
|
86
160
|
scan: async (config, rootDir) => {
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
161
|
+
// Skip if vercel not configured
|
|
162
|
+
if (!config.vercel)
|
|
163
|
+
return false;
|
|
164
|
+
// Skip if project_name is still EXAMPLE
|
|
165
|
+
const projectName = config.vercel.project_name;
|
|
166
|
+
if (!projectName || projectName.toUpperCase().startsWith('EXAMPLE')) {
|
|
167
|
+
return false; // Will be caught by vercel-config-missing
|
|
93
168
|
}
|
|
94
169
|
// Check if .vercel/project.json exists
|
|
95
170
|
const vercelConfigPath = path.join(rootDir, '.vercel', 'project.json');
|
|
96
|
-
|
|
171
|
+
return !fs.existsSync(vercelConfigPath);
|
|
172
|
+
},
|
|
173
|
+
fix: async (config, rootDir) => {
|
|
174
|
+
console.log(' Auto-linking Vercel project via API...');
|
|
175
|
+
try {
|
|
176
|
+
const projectId = config.vercel?.project_id;
|
|
177
|
+
const orgId = config.vercel?.org_id;
|
|
178
|
+
const projectName = config.vercel?.project_name;
|
|
179
|
+
if (!projectId && !projectName) {
|
|
180
|
+
console.log(' [!] No project_id or project_name in stack.yml');
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
let finalProjectId = projectId;
|
|
184
|
+
let finalOrgId = orgId;
|
|
185
|
+
// If we have name but no ID, look it up via API
|
|
186
|
+
if (!finalProjectId && projectName) {
|
|
187
|
+
const { getVercelToken, findVercelProject } = await Promise.resolve().then(() => __importStar(require('../utils/vercel-api.js')));
|
|
188
|
+
const token = await getVercelToken(config, rootDir);
|
|
189
|
+
const project = await findVercelProject(token, projectName, orgId);
|
|
190
|
+
if (project) {
|
|
191
|
+
finalProjectId = project.id;
|
|
192
|
+
finalOrgId = finalOrgId ?? project.orgId;
|
|
193
|
+
console.log(' Found project: ' + project.name + ' (id: ' + project.id + ')');
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
console.log(' [!] Project "' + projectName + '" not found in Vercel');
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Create .vercel directory
|
|
201
|
+
const vercelDir = path.join(rootDir, '.vercel');
|
|
202
|
+
if (!fs.existsSync(vercelDir)) {
|
|
203
|
+
fs.mkdirSync(vercelDir, { recursive: true });
|
|
204
|
+
}
|
|
205
|
+
// Write project.json (same format as vercel link creates)
|
|
206
|
+
const projectJson = {
|
|
207
|
+
projectId: finalProjectId,
|
|
208
|
+
orgId: finalOrgId ?? '',
|
|
209
|
+
};
|
|
210
|
+
fs.writeFileSync(path.join(vercelDir, 'project.json'), JSON.stringify(projectJson, null, 2) + '\n', 'utf8');
|
|
211
|
+
console.log(' [OK] Created .vercel/project.json');
|
|
212
|
+
console.log(' Project ID: ' + finalProjectId);
|
|
213
|
+
if (finalOrgId)
|
|
214
|
+
console.log(' Org ID: ' + finalOrgId);
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
catch (e) {
|
|
218
|
+
console.log(' [!] Failed: ' + (e instanceof Error ? e.message : String(e)));
|
|
97
219
|
return false;
|
|
98
220
|
}
|
|
99
|
-
return true;
|
|
100
221
|
},
|
|
101
|
-
fix: null,
|
|
102
222
|
manualFix: `
|
|
103
223
|
Link your project to Vercel:
|
|
104
224
|
|
|
105
225
|
vercel link
|
|
106
226
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
2. Ask if you want to link to an existing project or create new one
|
|
110
|
-
3. Create .vercel/project.json with project metadata
|
|
111
|
-
|
|
112
|
-
After linking, the project_id and org_id will be saved in .vercel/project.json.
|
|
113
|
-
You can optionally copy these to stack.yml for documentation.
|
|
227
|
+
Or set project_id in stack.yml and run: npx stack fix
|
|
228
|
+
(The fix will auto-create .vercel/project.json from the API)
|
|
114
229
|
`,
|
|
115
230
|
},
|
|
116
231
|
{
|
|
117
232
|
id: 'vercel-cli-not-installed',
|
|
118
233
|
stage: 'dev',
|
|
119
|
-
severity: '
|
|
120
|
-
description: 'Vercel CLI not installed (
|
|
234
|
+
severity: 'info',
|
|
235
|
+
description: 'Vercel CLI not installed (optional — API is used for deployments)',
|
|
121
236
|
scan: async (config, _rootDir) => {
|
|
122
|
-
//
|
|
123
|
-
if (!config.vercel)
|
|
124
|
-
return
|
|
125
|
-
}
|
|
237
|
+
// Skip if vercel not configured
|
|
238
|
+
if (!config.vercel)
|
|
239
|
+
return false;
|
|
126
240
|
// Check if vercel CLI is installed
|
|
127
241
|
try {
|
|
128
242
|
const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
|
|
129
|
-
execSync('which vercel', { stdio: 'pipe' });
|
|
130
|
-
return
|
|
243
|
+
execSync('which vercel || where vercel', { stdio: 'pipe' });
|
|
244
|
+
return false; // CLI installed = no problem
|
|
131
245
|
}
|
|
132
246
|
catch {
|
|
133
|
-
return
|
|
247
|
+
return true; // CLI not installed = info-level (API works without it)
|
|
134
248
|
}
|
|
135
249
|
},
|
|
136
250
|
fix: async (_config, _rootDir) => {
|
|
@@ -146,7 +260,7 @@ You can optionally copy these to stack.yml for documentation.
|
|
|
146
260
|
return false;
|
|
147
261
|
}
|
|
148
262
|
},
|
|
149
|
-
manualFix: 'Install Vercel CLI manually: npm install -g vercel',
|
|
263
|
+
manualFix: 'Install Vercel CLI manually: npm install -g vercel\n(Optional — deployments use the Vercel API, not CLI)',
|
|
150
264
|
},
|
|
151
265
|
{
|
|
152
266
|
id: 'vercel-gitignore-missing',
|
|
@@ -154,20 +268,13 @@ You can optionally copy these to stack.yml for documentation.
|
|
|
154
268
|
severity: 'info',
|
|
155
269
|
description: '.vercel directory not in .gitignore',
|
|
156
270
|
scan: async (config, rootDir) => {
|
|
157
|
-
//
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const usesVercel = Object.values(environments).some((env) => env.pipeline === 'vercel');
|
|
161
|
-
if (!usesVercel) {
|
|
162
|
-
return true;
|
|
163
|
-
}
|
|
271
|
+
// Skip if vercel not configured
|
|
272
|
+
if (!config.vercel)
|
|
273
|
+
return false;
|
|
164
274
|
// Check if .vercel is in .gitignore
|
|
165
275
|
const { isGitignored } = await Promise.resolve().then(() => __importStar(require('../../../../utils/gitignore.js')));
|
|
166
276
|
const isIgnored = await isGitignored('.vercel', rootDir);
|
|
167
|
-
|
|
168
|
-
return false;
|
|
169
|
-
}
|
|
170
|
-
return true;
|
|
277
|
+
return !isIgnored; // Not ignored = problem
|
|
171
278
|
},
|
|
172
279
|
fix: async (_config, rootDir) => {
|
|
173
280
|
console.log(' Adding .vercel to .gitignore...');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/config.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/token.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/token.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAItD,eAAO,MAAM,KAAK,EAAE,GAAG,EAsFtB,CAAC"}
|
|
@@ -39,6 +39,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
39
39
|
})();
|
|
40
40
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
41
|
exports.fixes = void 0;
|
|
42
|
+
const config_helpers_js_1 = require("../../../../utils/config-helpers.js");
|
|
42
43
|
exports.fixes = [
|
|
43
44
|
{
|
|
44
45
|
id: 'vercel-token-missing',
|
|
@@ -46,26 +47,22 @@ exports.fixes = [
|
|
|
46
47
|
severity: 'critical',
|
|
47
48
|
description: 'VERCEL_TOKEN not found in Ansible Vault',
|
|
48
49
|
scan: async (config, rootDir) => {
|
|
49
|
-
//
|
|
50
|
-
if (!config.vercel)
|
|
51
|
-
return
|
|
52
|
-
}
|
|
50
|
+
// Skip if vercel not configured
|
|
51
|
+
if (!config.vercel)
|
|
52
|
+
return false;
|
|
53
53
|
// Check if VERCEL_TOKEN exists in vault
|
|
54
54
|
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
55
55
|
const vault = new AnsibleVaultSecrets({
|
|
56
|
-
vault_path: config.ansible?.vault_path ||
|
|
56
|
+
vault_path: config.ansible?.vault_path || (0, config_helpers_js_1.getDefaultVaultPath)(config),
|
|
57
57
|
vault_password_file: config.ansible?.vault_password_file,
|
|
58
58
|
rootDir,
|
|
59
59
|
});
|
|
60
60
|
try {
|
|
61
61
|
const token = await vault.getSecret('VERCEL_TOKEN');
|
|
62
|
-
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
return true;
|
|
62
|
+
return !token; // No token = problem (true), token exists = no problem (false)
|
|
66
63
|
}
|
|
67
64
|
catch {
|
|
68
|
-
return
|
|
65
|
+
return true; // Vault error = assume token is missing
|
|
69
66
|
}
|
|
70
67
|
},
|
|
71
68
|
fix: async (config, rootDir) => {
|
|
@@ -79,7 +76,7 @@ exports.fixes = [
|
|
|
79
76
|
const { promptForSecret } = await Promise.resolve().then(() => __importStar(require('../../../../utils/interactive-prompts.js')));
|
|
80
77
|
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
81
78
|
const vault = new AnsibleVaultSecrets({
|
|
82
|
-
vault_path: config.ansible?.vault_path ||
|
|
79
|
+
vault_path: config.ansible?.vault_path || (0, config_helpers_js_1.getDefaultVaultPath)(config),
|
|
83
80
|
vault_password_file: config.ansible?.vault_password_file,
|
|
84
81
|
rootDir,
|
|
85
82
|
});
|
|
@@ -108,15 +105,11 @@ Or get token from: https://vercel.com/account/tokens
|
|
|
108
105
|
severity: 'info',
|
|
109
106
|
description: 'VERCEL_TOKEN not available in environment (deployments will read from vault)',
|
|
110
107
|
scan: async (config, _rootDir) => {
|
|
111
|
-
//
|
|
112
|
-
if (!config.vercel)
|
|
113
|
-
return
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
if (process.env.VERCEL_TOKEN) {
|
|
117
|
-
return true;
|
|
118
|
-
}
|
|
119
|
-
return false;
|
|
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;
|
|
120
113
|
},
|
|
121
114
|
fix: null,
|
|
122
115
|
manualFix: `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/token.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/token.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,38 @@ interface DeployOptions {
|
|
|
19
19
|
branch?: string;
|
|
20
20
|
commit?: string;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Get VERCEL_TOKEN from vault or environment
|
|
24
|
+
*/
|
|
25
|
+
export declare function getVercelToken(config: FactiiiConfig, rootDir: string): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* List all Vercel projects for the authenticated user/team
|
|
28
|
+
*/
|
|
29
|
+
export declare function listVercelProjects(token: string, teamId?: string): Promise<{
|
|
30
|
+
id: string;
|
|
31
|
+
name: string;
|
|
32
|
+
orgId?: string;
|
|
33
|
+
}[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Find a Vercel project by name (case-insensitive match)
|
|
36
|
+
*/
|
|
37
|
+
export declare function findVercelProject(token: string, projectName: string, teamId?: string): Promise<{
|
|
38
|
+
id: string;
|
|
39
|
+
name: string;
|
|
40
|
+
orgId?: string;
|
|
41
|
+
} | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Create a new Vercel project via API
|
|
44
|
+
*/
|
|
45
|
+
export declare function createVercelProject(token: string, name: string, options?: {
|
|
46
|
+
teamId?: string;
|
|
47
|
+
gitRepo?: string;
|
|
48
|
+
framework?: string;
|
|
49
|
+
}): Promise<{
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
orgId?: string;
|
|
53
|
+
}>;
|
|
22
54
|
/**
|
|
23
55
|
* Deploy to Vercel via API
|
|
24
56
|
*
|
|
@@ -1 +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;
|
|
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;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB5F;AAmHD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CASzD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAI9D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACtE,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBvD;AAED;;;;;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"}
|
|
@@ -41,11 +41,16 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
};
|
|
42
42
|
})();
|
|
43
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.getVercelToken = getVercelToken;
|
|
45
|
+
exports.listVercelProjects = listVercelProjects;
|
|
46
|
+
exports.findVercelProject = findVercelProject;
|
|
47
|
+
exports.createVercelProject = createVercelProject;
|
|
44
48
|
exports.deployToVercel = deployToVercel;
|
|
45
49
|
exports.getDeploymentStatus = getDeploymentStatus;
|
|
46
50
|
const fs = __importStar(require("fs"));
|
|
47
51
|
const path = __importStar(require("path"));
|
|
48
52
|
const child_process_1 = require("child_process");
|
|
53
|
+
const config_helpers_js_1 = require("../../../../utils/config-helpers.js");
|
|
49
54
|
/**
|
|
50
55
|
* Get VERCEL_TOKEN from vault or environment
|
|
51
56
|
*/
|
|
@@ -57,7 +62,7 @@ async function getVercelToken(config, rootDir) {
|
|
|
57
62
|
// Read from Ansible Vault
|
|
58
63
|
const { AnsibleVaultSecrets } = await Promise.resolve().then(() => __importStar(require('../../../../utils/ansible-vault-secrets.js')));
|
|
59
64
|
const vault = new AnsibleVaultSecrets({
|
|
60
|
-
vault_path: config.ansible?.vault_path ||
|
|
65
|
+
vault_path: config.ansible?.vault_path || (0, config_helpers_js_1.getDefaultVaultPath)(config),
|
|
61
66
|
vault_password_file: config.ansible?.vault_password_file,
|
|
62
67
|
rootDir,
|
|
63
68
|
});
|
|
@@ -153,6 +158,50 @@ async function callVercelAPI(endpoint, token, options = {}) {
|
|
|
153
158
|
}
|
|
154
159
|
return await response.json();
|
|
155
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* List all Vercel projects for the authenticated user/team
|
|
163
|
+
*/
|
|
164
|
+
async function listVercelProjects(token, teamId) {
|
|
165
|
+
const result = (await callVercelAPI('/v10/projects?limit=100', token, { teamId }));
|
|
166
|
+
return (result.projects ?? []).map(p => ({
|
|
167
|
+
id: p.id,
|
|
168
|
+
name: p.name,
|
|
169
|
+
orgId: p.accountId ?? teamId,
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Find a Vercel project by name (case-insensitive match)
|
|
174
|
+
*/
|
|
175
|
+
async function findVercelProject(token, projectName, teamId) {
|
|
176
|
+
const projects = await listVercelProjects(token, teamId);
|
|
177
|
+
const normalizedName = projectName.toLowerCase();
|
|
178
|
+
return projects.find(p => p.name.toLowerCase() === normalizedName) ?? null;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Create a new Vercel project via API
|
|
182
|
+
*/
|
|
183
|
+
async function createVercelProject(token, name, options = {}) {
|
|
184
|
+
const body = { name };
|
|
185
|
+
if (options.gitRepo) {
|
|
186
|
+
body.gitRepository = {
|
|
187
|
+
type: 'github',
|
|
188
|
+
repo: options.gitRepo,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
if (options.framework) {
|
|
192
|
+
body.framework = options.framework;
|
|
193
|
+
}
|
|
194
|
+
const result = (await callVercelAPI('/v9/projects', token, {
|
|
195
|
+
method: 'POST',
|
|
196
|
+
body,
|
|
197
|
+
teamId: options.teamId,
|
|
198
|
+
}));
|
|
199
|
+
return {
|
|
200
|
+
id: result.id,
|
|
201
|
+
name: result.name,
|
|
202
|
+
orgId: result.accountId ?? options.teamId,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
156
205
|
/**
|
|
157
206
|
* Deploy to Vercel via API
|
|
158
207
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-api.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/utils/vercel-api.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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/pipelines/factiii/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAKH,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EACL,YAAY,EACZ,GAAG,EACH,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,aAAa,EACd,MAAM,yBAAyB,CAAC;AAkCjC,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AAKvD,cAAM,eAAe;IAKnB,MAAM,CAAC,QAAQ,CAAC,EAAE,aAAa;IAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,sBAAsB;IAC1C,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAc;IAClD,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAGlC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/pipelines/factiii/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -122,7 +122,7 @@ class FactiiiPipeline {
|
|
|
122
122
|
static category = 'pipeline';
|
|
123
123
|
static version = '1.0.0';
|
|
124
124
|
// Env vars this plugin requires (none - pipeline doesn't need app env vars)
|
|
125
|
-
static requiredEnvVars = [];
|
|
125
|
+
static requiredEnvVars = ['GITHUB_TOKEN', 'ANSIBLE_VAULT_PASSWORD_FILE'];
|
|
126
126
|
// Schema for stack.yml (user-editable)
|
|
127
127
|
static configSchema = {
|
|
128
128
|
// No user config - workflows are auto-generated
|