@quiltdata/benchling-webhook 0.6.1-20251104T051705Z → 0.6.1
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/bin/check-logs.d.ts +7 -0
- package/dist/bin/check-logs.d.ts.map +1 -0
- package/dist/bin/check-logs.js +51 -60
- package/dist/bin/check-logs.js.map +1 -0
- package/dist/bin/dev-deploy.d.ts +20 -0
- package/dist/bin/dev-deploy.d.ts.map +1 -0
- package/dist/bin/dev-deploy.js +289 -0
- package/dist/bin/dev-deploy.js.map +1 -0
- package/dist/bin/get-env.d.ts +16 -0
- package/dist/bin/get-env.d.ts.map +1 -0
- package/dist/bin/get-env.js +61 -31
- package/dist/bin/get-env.js.map +1 -0
- package/dist/bin/publish.d.ts +20 -0
- package/dist/bin/publish.d.ts.map +1 -0
- package/dist/bin/publish.js +280 -280
- package/dist/bin/publish.js.map +1 -0
- package/dist/bin/release.d.ts +11 -0
- package/dist/bin/release.d.ts.map +1 -0
- package/dist/bin/release.js +125 -102
- package/dist/bin/release.js.map +1 -0
- package/dist/bin/send-event.d.ts +6 -0
- package/dist/bin/send-event.d.ts.map +1 -0
- package/dist/bin/send-event.js +73 -59
- package/dist/bin/send-event.js.map +1 -0
- package/dist/bin/test-invalid-signature.d.ts +3 -0
- package/dist/bin/test-invalid-signature.d.ts.map +1 -0
- package/dist/bin/test-invalid-signature.js +64 -74
- package/dist/bin/test-invalid-signature.js.map +1 -0
- package/dist/bin/version.d.ts +13 -0
- package/dist/bin/version.d.ts.map +1 -0
- package/dist/bin/version.js +194 -181
- package/dist/bin/version.js.map +1 -0
- package/dist/lib/utils/secrets.d.ts +14 -0
- package/dist/lib/utils/secrets.d.ts.map +1 -1
- package/dist/lib/utils/secrets.js +19 -0
- package/dist/lib/utils/secrets.js.map +1 -1
- package/dist/package.json +7 -7
- package/dist/scripts/config-health-check.d.ts +1 -1
- package/dist/scripts/config-health-check.d.ts.map +1 -1
- package/dist/scripts/config-health-check.js +33 -43
- package/dist/scripts/config-health-check.js.map +1 -1
- package/dist/scripts/sync-secrets.d.ts.map +1 -1
- package/dist/scripts/sync-secrets.js +2 -16
- package/dist/scripts/sync-secrets.js.map +1 -1
- package/package.json +7 -7
- package/dist/bin/cdk-dev.js +0 -308
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-logs.d.ts","sourceRoot":"","sources":["../../bin/check-logs.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,eAAe,CAAC"}
|
package/dist/bin/check-logs.js
CHANGED
|
@@ -1,63 +1,58 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
2
3
|
/**
|
|
3
4
|
* Check CloudWatch logs for the deployed Benchling webhook ECS service
|
|
4
5
|
* Uses CloudFormation stack outputs to find the correct log group
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
8
|
require("dotenv/config");
|
|
8
|
-
const
|
|
9
|
-
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
10
|
const STACK_NAME = "BenchlingWebhookStack";
|
|
11
|
-
|
|
12
11
|
// Validate required environment variables
|
|
13
12
|
if (!process.env.CDK_DEFAULT_REGION) {
|
|
14
13
|
console.error("Error: CDK_DEFAULT_REGION is not set in .env file");
|
|
15
14
|
console.error("Please set CDK_DEFAULT_REGION in your .env file");
|
|
16
15
|
process.exit(1);
|
|
17
16
|
}
|
|
18
|
-
|
|
19
17
|
const AWS_REGION = process.env.CDK_DEFAULT_REGION;
|
|
20
|
-
|
|
21
18
|
function getStackOutputs() {
|
|
22
19
|
try {
|
|
23
|
-
const output = execSync(
|
|
24
|
-
`aws cloudformation describe-stacks --stack-name ${STACK_NAME} --region ${AWS_REGION} --query 'Stacks[0].Outputs' --output json`,
|
|
25
|
-
{ encoding: "utf-8" },
|
|
26
|
-
);
|
|
20
|
+
const output = (0, child_process_1.execSync)(`aws cloudformation describe-stacks --stack-name ${STACK_NAME} --region ${AWS_REGION} --query 'Stacks[0].Outputs' --output json`, { encoding: "utf-8" });
|
|
27
21
|
return JSON.parse(output);
|
|
28
|
-
}
|
|
22
|
+
}
|
|
23
|
+
catch (_error) {
|
|
29
24
|
console.error(`Error: Could not get stack outputs for ${STACK_NAME}`);
|
|
30
25
|
console.error("Make sure the stack is deployed and AWS credentials are configured.");
|
|
31
26
|
process.exit(1);
|
|
32
27
|
}
|
|
33
28
|
}
|
|
34
|
-
|
|
35
29
|
function getLogGroupFromOutputs(outputs, logType) {
|
|
36
30
|
let outputKey;
|
|
37
31
|
if (logType === "ecs") {
|
|
38
32
|
outputKey = "EcsLogGroup";
|
|
39
|
-
}
|
|
33
|
+
}
|
|
34
|
+
else if (logType === "api") {
|
|
40
35
|
outputKey = "ApiGatewayLogGroup";
|
|
41
|
-
}
|
|
36
|
+
}
|
|
37
|
+
else if (logType === "api-exec") {
|
|
42
38
|
outputKey = "ApiGatewayExecutionLogGroup";
|
|
43
39
|
}
|
|
44
|
-
|
|
40
|
+
else {
|
|
41
|
+
console.error(`Error: Invalid log type '${logType}'`);
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
45
44
|
const logGroupOutput = outputs.find((o) => o.OutputKey === outputKey);
|
|
46
|
-
|
|
47
45
|
if (!logGroupOutput) {
|
|
48
46
|
console.error(`Error: Could not find ${outputKey} in stack outputs`);
|
|
49
47
|
console.error("Make sure the stack has been deployed with the latest changes.");
|
|
50
48
|
process.exit(1);
|
|
51
49
|
}
|
|
52
|
-
|
|
53
50
|
return logGroupOutput.OutputValue;
|
|
54
51
|
}
|
|
55
|
-
|
|
56
52
|
function printStackInfo(outputs, logGroup, logType) {
|
|
57
53
|
console.log("=".repeat(80));
|
|
58
54
|
console.log("Benchling Webhook Stack Information");
|
|
59
55
|
console.log("=".repeat(80));
|
|
60
|
-
|
|
61
56
|
const clusterName = outputs.find((o) => o.OutputKey === "FargateServiceClusterNameCD3B109F");
|
|
62
57
|
const serviceName = outputs.find((o) => o.OutputKey === "FargateServiceServiceName24CFD869");
|
|
63
58
|
const webhookEndpoint = outputs.find((o) => o.OutputKey === "WebhookEndpoint");
|
|
@@ -66,23 +61,27 @@ function printStackInfo(outputs, logGroup, logType) {
|
|
|
66
61
|
const apiLogGroup = outputs.find((o) => o.OutputKey === "ApiGatewayLogGroup");
|
|
67
62
|
const apiExecLogGroup = outputs.find((o) => o.OutputKey === "ApiGatewayExecutionLogGroup");
|
|
68
63
|
const albDns = outputs.find((o) => o.OutputKey === "LoadBalancerDNS");
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (serviceName)
|
|
72
|
-
|
|
73
|
-
if (
|
|
74
|
-
|
|
75
|
-
|
|
64
|
+
if (clusterName)
|
|
65
|
+
console.log(`Cluster: ${clusterName.OutputValue}`);
|
|
66
|
+
if (serviceName)
|
|
67
|
+
console.log(`Service: ${serviceName.OutputValue}`);
|
|
68
|
+
if (webhookEndpoint)
|
|
69
|
+
console.log(`Endpoint: ${webhookEndpoint.OutputValue}`);
|
|
70
|
+
if (albDns)
|
|
71
|
+
console.log(`ALB DNS: ${albDns.OutputValue}`);
|
|
72
|
+
if (version)
|
|
73
|
+
console.log(`Version: ${version.OutputValue}`);
|
|
76
74
|
console.log("");
|
|
77
75
|
console.log("Log Groups:");
|
|
78
|
-
if (ecsLogGroup)
|
|
79
|
-
|
|
80
|
-
if (
|
|
81
|
-
|
|
76
|
+
if (ecsLogGroup)
|
|
77
|
+
console.log(` ECS: ${ecsLogGroup.OutputValue}${logType === "ecs" ? " (viewing)" : ""}`);
|
|
78
|
+
if (apiLogGroup)
|
|
79
|
+
console.log(` API Access: ${apiLogGroup.OutputValue}${logType === "api" ? " (viewing)" : ""}`);
|
|
80
|
+
if (apiExecLogGroup)
|
|
81
|
+
console.log(` API Exec: ${apiExecLogGroup.OutputValue}${logType === "api-exec" ? " (viewing)" : ""}`);
|
|
82
82
|
console.log("=".repeat(80));
|
|
83
83
|
console.log("");
|
|
84
84
|
}
|
|
85
|
-
|
|
86
85
|
function main() {
|
|
87
86
|
const args = process.argv.slice(2);
|
|
88
87
|
const logType = args.find((arg) => arg.startsWith("--type="))?.split("=")[1] || "all";
|
|
@@ -90,27 +89,22 @@ function main() {
|
|
|
90
89
|
const since = args.find((arg) => arg.startsWith("--since="))?.split("=")[1] || "5m";
|
|
91
90
|
const follow = args.includes("--follow") || args.includes("-f");
|
|
92
91
|
const tail = args.find((arg) => arg.startsWith("--tail="))?.split("=")[1] || "100";
|
|
93
|
-
|
|
94
92
|
// Validate log type
|
|
95
93
|
if (!["ecs", "api", "api-exec", "all"].includes(logType)) {
|
|
96
94
|
console.error("Error: --type must be 'ecs', 'api', 'api-exec', or 'all'");
|
|
97
95
|
process.exit(1);
|
|
98
96
|
}
|
|
99
|
-
|
|
100
97
|
// Get stack outputs
|
|
101
98
|
const outputs = getStackOutputs();
|
|
102
|
-
|
|
103
99
|
// Handle 'all' type - show all three log groups
|
|
104
100
|
if (logType === "all") {
|
|
105
101
|
printStackInfo(outputs, null, "all");
|
|
106
102
|
console.log("Showing logs from all sources (most recent first):\n");
|
|
107
|
-
|
|
108
103
|
const logGroupDefs = [
|
|
109
104
|
{ type: "ECS", group: outputs.find((o) => o.OutputKey === "EcsLogGroup")?.OutputValue },
|
|
110
105
|
{ type: "API-Access", group: outputs.find((o) => o.OutputKey === "ApiGatewayLogGroup")?.OutputValue },
|
|
111
106
|
{ type: "API-Exec", group: outputs.find((o) => o.OutputKey === "ApiGatewayExecutionLogGroup")?.OutputValue },
|
|
112
107
|
];
|
|
113
|
-
|
|
114
108
|
// Warn about missing log groups
|
|
115
109
|
const missingGroups = logGroupDefs.filter(lg => !lg.group);
|
|
116
110
|
if (missingGroups.length > 0) {
|
|
@@ -120,63 +114,60 @@ function main() {
|
|
|
120
114
|
});
|
|
121
115
|
console.log("");
|
|
122
116
|
}
|
|
123
|
-
|
|
124
117
|
const logGroups = logGroupDefs.filter(lg => lg.group);
|
|
125
|
-
|
|
126
118
|
for (const { type, group } of logGroups) {
|
|
127
119
|
console.log(`\n${"=".repeat(80)}`);
|
|
128
120
|
console.log(`${type}: ${group}`);
|
|
129
121
|
console.log("=".repeat(80));
|
|
130
|
-
|
|
131
122
|
let command = `aws logs tail "${group}"`;
|
|
132
123
|
command += ` --region ${AWS_REGION}`;
|
|
133
124
|
command += ` --since ${since}`;
|
|
134
|
-
command +=
|
|
125
|
+
command += " --format short";
|
|
135
126
|
if (filterPattern) {
|
|
136
127
|
command += ` --filter-pattern "${filterPattern}"`;
|
|
137
128
|
}
|
|
138
129
|
command += ` 2>&1 | tail -${tail}`;
|
|
139
|
-
|
|
140
130
|
try {
|
|
141
|
-
const output = execSync(command, { encoding: "utf-8", shell: "/bin/bash" });
|
|
131
|
+
const output = (0, child_process_1.execSync)(command, { encoding: "utf-8", shell: "/bin/bash" });
|
|
142
132
|
if (output.trim()) {
|
|
143
133
|
console.log(output);
|
|
144
|
-
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
145
136
|
console.log(`(No logs in the last ${since})`);
|
|
146
137
|
}
|
|
147
|
-
}
|
|
148
|
-
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
141
|
+
console.log(`Error reading ${type} logs: ${errorMessage}`);
|
|
149
142
|
}
|
|
150
143
|
}
|
|
151
144
|
return;
|
|
152
145
|
}
|
|
153
|
-
|
|
154
146
|
const logGroup = getLogGroupFromOutputs(outputs, logType);
|
|
155
147
|
printStackInfo(outputs, logGroup, logType);
|
|
156
|
-
|
|
157
148
|
// Build AWS logs command
|
|
158
149
|
let command = `aws logs tail ${logGroup}`;
|
|
159
150
|
command += ` --region ${AWS_REGION}`;
|
|
160
151
|
command += ` --since ${since}`;
|
|
161
|
-
command +=
|
|
162
|
-
|
|
152
|
+
command += " --format short";
|
|
163
153
|
if (filterPattern) {
|
|
164
154
|
command += ` --filter-pattern "${filterPattern}"`;
|
|
165
155
|
}
|
|
166
|
-
|
|
167
156
|
if (follow) {
|
|
168
157
|
command += " --follow";
|
|
169
158
|
console.log("Following logs (Press Ctrl+C to stop)...\n");
|
|
170
|
-
}
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
171
161
|
command += ` | tail -${tail}`;
|
|
172
162
|
console.log(`Showing last ${tail} log entries from the past ${since}...\n`);
|
|
173
163
|
}
|
|
174
|
-
|
|
175
164
|
// Execute logs command
|
|
176
165
|
try {
|
|
177
|
-
execSync(command, { stdio: "inherit" });
|
|
178
|
-
}
|
|
179
|
-
|
|
166
|
+
(0, child_process_1.execSync)(command, { stdio: "inherit" });
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
const hasStatus = error && typeof error === "object" && "status" in error;
|
|
170
|
+
if (hasStatus && error.status !== 130) {
|
|
180
171
|
// Ignore Ctrl+C exit (status 130)
|
|
181
172
|
console.error("\nError fetching logs. Make sure:");
|
|
182
173
|
console.error("1. The stack is deployed");
|
|
@@ -186,7 +177,6 @@ function main() {
|
|
|
186
177
|
}
|
|
187
178
|
}
|
|
188
179
|
}
|
|
189
|
-
|
|
190
180
|
function printHelp() {
|
|
191
181
|
console.log("Usage: npm run logs [options]");
|
|
192
182
|
console.log("");
|
|
@@ -214,18 +204,19 @@ function printHelp() {
|
|
|
214
204
|
console.log(" npm run logs -- --type=ecs --follow # Follow ECS logs");
|
|
215
205
|
console.log(" npm run logs -- --type=api-exec --since=10m # Last 10 min of execution logs");
|
|
216
206
|
}
|
|
217
|
-
|
|
218
207
|
if (require.main === module) {
|
|
219
208
|
const args = process.argv.slice(2);
|
|
220
209
|
if (args.includes("--help") || args.includes("-h")) {
|
|
221
210
|
printHelp();
|
|
222
211
|
process.exit(0);
|
|
223
212
|
}
|
|
224
|
-
|
|
225
213
|
try {
|
|
226
214
|
main();
|
|
227
|
-
}
|
|
228
|
-
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
218
|
+
console.error("Error:", errorMessage);
|
|
229
219
|
process.exit(1);
|
|
230
220
|
}
|
|
231
221
|
}
|
|
222
|
+
//# sourceMappingURL=check-logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-logs.js","sourceRoot":"","sources":["../../bin/check-logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env ts-node
|
|
2
|
+
/**
|
|
3
|
+
* Development deployment workflow script
|
|
4
|
+
*
|
|
5
|
+
* This script:
|
|
6
|
+
* 1. Creates a dev git tag with timestamp (v{version}-{timestamp})
|
|
7
|
+
* 2. Pushes the tag to GitHub (triggers CI to build Docker image)
|
|
8
|
+
* 3. Waits for CI/CD pipeline to complete (monitors GitHub Actions)
|
|
9
|
+
* 4. Deploys CDK stack using the CI-built image tag
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* npm run deploy:dev # Full workflow
|
|
13
|
+
* npm run deploy:dev -- --continue # Skip tag creation, wait for CI and deploy
|
|
14
|
+
* npm run deploy:dev -- --tag <tag> # Use specific existing tag
|
|
15
|
+
*
|
|
16
|
+
* IMPORTANT: This uses CI-built images (x86_64), NOT local builds.
|
|
17
|
+
* Local ARM builds would fail in AWS which runs on x86_64.
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=dev-deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-deploy.d.ts","sourceRoot":"","sources":["../../bin/dev-deploy.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
#!/usr/bin/env ts-node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Development deployment workflow script
|
|
5
|
+
*
|
|
6
|
+
* This script:
|
|
7
|
+
* 1. Creates a dev git tag with timestamp (v{version}-{timestamp})
|
|
8
|
+
* 2. Pushes the tag to GitHub (triggers CI to build Docker image)
|
|
9
|
+
* 3. Waits for CI/CD pipeline to complete (monitors GitHub Actions)
|
|
10
|
+
* 4. Deploys CDK stack using the CI-built image tag
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* npm run deploy:dev # Full workflow
|
|
14
|
+
* npm run deploy:dev -- --continue # Skip tag creation, wait for CI and deploy
|
|
15
|
+
* npm run deploy:dev -- --tag <tag> # Use specific existing tag
|
|
16
|
+
*
|
|
17
|
+
* IMPORTANT: This uses CI-built images (x86_64), NOT local builds.
|
|
18
|
+
* Local ARM builds would fail in AWS which runs on x86_64.
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
const child_process_1 = require("child_process");
|
|
22
|
+
const fs_1 = require("fs");
|
|
23
|
+
const path_1 = require("path");
|
|
24
|
+
const os_1 = require("os");
|
|
25
|
+
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
26
|
+
const secrets_1 = require("../lib/utils/secrets");
|
|
27
|
+
// Read package.json for version
|
|
28
|
+
const packagePath = (0, path_1.join)(__dirname, "..", "package.json");
|
|
29
|
+
const pkg = JSON.parse((0, fs_1.readFileSync)(packagePath, "utf8"));
|
|
30
|
+
function run(command, options = {}) {
|
|
31
|
+
const silent = options.silent || false;
|
|
32
|
+
if (!silent) {
|
|
33
|
+
console.log(`\n$ ${command}\n`);
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
return (0, child_process_1.execSync)(command, {
|
|
37
|
+
stdio: silent ? "pipe" : "inherit",
|
|
38
|
+
encoding: "utf-8",
|
|
39
|
+
...options,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (!silent) {
|
|
44
|
+
console.error(`\n❌ Command failed: ${command}`);
|
|
45
|
+
}
|
|
46
|
+
if (options.allowFailure) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async function waitForWorkflow(commitSha, timeoutMinutes = 15) {
|
|
53
|
+
console.log("");
|
|
54
|
+
console.log(`Waiting for CI workflow to complete (timeout: ${timeoutMinutes} minutes)...`);
|
|
55
|
+
console.log("");
|
|
56
|
+
// Check if gh CLI is available
|
|
57
|
+
try {
|
|
58
|
+
(0, child_process_1.execSync)("gh --version", { stdio: "ignore" });
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
console.error("❌ GitHub CLI (gh) is not installed or not in PATH");
|
|
62
|
+
console.error(" Install from: https://cli.github.com/");
|
|
63
|
+
console.error("\n Alternatively, monitor the workflow manually and deploy when complete:");
|
|
64
|
+
console.error(" 1. Watch: https://github.com/quiltdata/benchling-webhook/actions");
|
|
65
|
+
console.error(" 2. Deploy: npm run cli -- --image-tag <version> --yes");
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
const startTime = Date.now();
|
|
69
|
+
const timeoutMs = timeoutMinutes * 60 * 1000;
|
|
70
|
+
let attempt = 0;
|
|
71
|
+
let workflowUrl = null;
|
|
72
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
73
|
+
attempt++;
|
|
74
|
+
try {
|
|
75
|
+
// Use gh to list recent workflow runs for this commit
|
|
76
|
+
const result = run(`gh run list --commit ${commitSha} --json status,conclusion,url,databaseId --limit 5`, {
|
|
77
|
+
silent: true,
|
|
78
|
+
allowFailure: true,
|
|
79
|
+
});
|
|
80
|
+
if (!result) {
|
|
81
|
+
process.stdout.write(`\r Attempt ${attempt}: Waiting for workflow to start (commit ${commitSha.substring(0, 7)})...`);
|
|
82
|
+
await new Promise((resolve) => setTimeout(resolve, 10000));
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const runs = JSON.parse(result);
|
|
86
|
+
if (runs && runs.length > 0) {
|
|
87
|
+
const workflowRun = runs[0]; // Most recent run for this commit
|
|
88
|
+
const status = workflowRun.status;
|
|
89
|
+
const conclusion = workflowRun.conclusion;
|
|
90
|
+
workflowUrl = workflowRun.url;
|
|
91
|
+
process.stdout.write(`\r Attempt ${attempt}: Status=${status}, Conclusion=${conclusion || "pending"}... ${workflowUrl}`);
|
|
92
|
+
if (status === "completed") {
|
|
93
|
+
console.log("\n");
|
|
94
|
+
if (conclusion === "success") {
|
|
95
|
+
console.log("✅ CI workflow completed successfully!");
|
|
96
|
+
console.log(` Run: ${workflowUrl}`);
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
console.error(`\n❌ CI workflow failed with conclusion: ${conclusion}`);
|
|
101
|
+
console.error(` Run: ${workflowUrl}`);
|
|
102
|
+
console.error(" Please check the workflow logs and fix any issues.");
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
process.stdout.write(`\r Attempt ${attempt}: Waiting for workflow to start (commit ${commitSha.substring(0, 7)})...`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
// Errors are non-fatal, just retry
|
|
113
|
+
if (attempt % 10 === 0) {
|
|
114
|
+
console.log(`\n Warning: ${error.message}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Wait 10 seconds between checks
|
|
118
|
+
await new Promise((resolve) => setTimeout(resolve, 10000));
|
|
119
|
+
}
|
|
120
|
+
console.error("\n\n❌ Timeout waiting for CI workflow to complete");
|
|
121
|
+
console.error(` Waited ${timeoutMinutes} minutes`);
|
|
122
|
+
if (workflowUrl) {
|
|
123
|
+
console.error(` Check status at: ${workflowUrl}`);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
console.error(" Check status at: https://github.com/quiltdata/benchling-webhook/actions");
|
|
127
|
+
}
|
|
128
|
+
console.error("\n Once the workflow completes, you can deploy manually with:");
|
|
129
|
+
console.error(" npm run cli -- --image-tag <version> --yes");
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
async function main() {
|
|
133
|
+
console.log("🚀 Starting development deployment workflow...");
|
|
134
|
+
console.log("");
|
|
135
|
+
console.log("This workflow uses CI-built Docker images (x86_64 for AWS).");
|
|
136
|
+
console.log("Local ARM builds are NOT used as they would fail in AWS.");
|
|
137
|
+
console.log("");
|
|
138
|
+
// Parse command line arguments
|
|
139
|
+
const args = process.argv.slice(2);
|
|
140
|
+
const continueMode = args.includes("--continue");
|
|
141
|
+
const tagIndex = args.indexOf("--tag");
|
|
142
|
+
const specificTag = tagIndex !== -1 ? args[tagIndex + 1] : null;
|
|
143
|
+
let devTag;
|
|
144
|
+
let version;
|
|
145
|
+
if (specificTag) {
|
|
146
|
+
// Use specific tag provided by user
|
|
147
|
+
devTag = specificTag;
|
|
148
|
+
version = specificTag.replace(/^v/, "").split("-")[0]; // Extract version from tag
|
|
149
|
+
console.log(`Using specified tag: ${devTag}`);
|
|
150
|
+
console.log(`Extracted version: ${version}`);
|
|
151
|
+
}
|
|
152
|
+
else if (continueMode) {
|
|
153
|
+
// Continue mode - find most recent dev tag
|
|
154
|
+
console.log("Continue mode: Finding most recent dev tag...");
|
|
155
|
+
try {
|
|
156
|
+
const tagsOutput = run("git tag --sort=-creatordate", { silent: true });
|
|
157
|
+
if (!tagsOutput) {
|
|
158
|
+
throw new Error("No tags found");
|
|
159
|
+
}
|
|
160
|
+
const tags = tagsOutput.trim().split("\n");
|
|
161
|
+
const recentDevTag = tags.find((t) => t.match(/^v[\d.]+-.+Z$/));
|
|
162
|
+
if (!recentDevTag) {
|
|
163
|
+
console.error("❌ No dev tags found");
|
|
164
|
+
console.error(" Run without --continue to create a new dev tag first");
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
devTag = recentDevTag;
|
|
168
|
+
version = devTag.replace(/^v/, "").split("-")[0];
|
|
169
|
+
console.log(`✅ Found recent dev tag: ${devTag}`);
|
|
170
|
+
console.log(` Version: ${version}`);
|
|
171
|
+
}
|
|
172
|
+
catch (e) {
|
|
173
|
+
console.error("❌ Failed to find recent dev tag");
|
|
174
|
+
process.exit(1);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
// Normal mode - create new tag
|
|
179
|
+
// 1. Check for uncommitted changes
|
|
180
|
+
console.log("Step 1: Checking for uncommitted changes...");
|
|
181
|
+
try {
|
|
182
|
+
(0, child_process_1.execSync)("git diff-index --quiet HEAD --", { stdio: "ignore" });
|
|
183
|
+
}
|
|
184
|
+
catch (e) {
|
|
185
|
+
console.error("❌ You have uncommitted changes");
|
|
186
|
+
console.error(" Commit or stash your changes before creating a dev deployment");
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
console.log("✅ Working directory is clean");
|
|
190
|
+
// 2. Generate dev tag name
|
|
191
|
+
version = pkg.version;
|
|
192
|
+
const timestamp = new Date().toISOString().replace(/[-:]/g, "").replace(/\.\d+Z$/, "Z");
|
|
193
|
+
devTag = `v${version}-${timestamp}`;
|
|
194
|
+
console.log("");
|
|
195
|
+
console.log(`Step 2: Creating dev tag: ${devTag}`);
|
|
196
|
+
// Check if tag already exists
|
|
197
|
+
try {
|
|
198
|
+
(0, child_process_1.execSync)(`git rev-parse ${devTag}`, { stdio: "ignore" });
|
|
199
|
+
console.error(`❌ Tag ${devTag} already exists`);
|
|
200
|
+
process.exit(1);
|
|
201
|
+
}
|
|
202
|
+
catch (e) {
|
|
203
|
+
// Tag doesn't exist, continue
|
|
204
|
+
}
|
|
205
|
+
// Create tag
|
|
206
|
+
const message = `Development release ${devTag}\n\nThis is a pre-release for testing purposes.`;
|
|
207
|
+
run(`git tag -a ${devTag} -m "${message}"`);
|
|
208
|
+
console.log(`✅ Created git tag ${devTag}`);
|
|
209
|
+
// 3. Push tag to origin (triggers CI)
|
|
210
|
+
console.log("");
|
|
211
|
+
console.log("Step 3: Pushing tag to origin (this triggers CI/CD)...");
|
|
212
|
+
run(`git push origin ${devTag}`);
|
|
213
|
+
console.log(`✅ Pushed tag ${devTag} to origin`);
|
|
214
|
+
console.log(" CI will now build Docker image for x86_64 (AWS-compatible)");
|
|
215
|
+
}
|
|
216
|
+
// 4. Wait for CI to complete
|
|
217
|
+
console.log("");
|
|
218
|
+
console.log("Step 4: Waiting for CI to build Docker image...");
|
|
219
|
+
// Get the commit SHA for the tag (use ^{commit} to dereference annotated tags)
|
|
220
|
+
const commitShaOutput = run(`git rev-parse ${devTag}^{commit}`, { silent: true });
|
|
221
|
+
if (!commitShaOutput) {
|
|
222
|
+
console.error("❌ Failed to get commit SHA");
|
|
223
|
+
process.exit(1);
|
|
224
|
+
}
|
|
225
|
+
const commitSha = commitShaOutput.trim();
|
|
226
|
+
await waitForWorkflow(commitSha);
|
|
227
|
+
// 5. Deploy CDK stack with CI-built image tag using secrets-only mode
|
|
228
|
+
console.log("");
|
|
229
|
+
console.log("Step 5: Deploying CDK stack with CI-built image (secrets-only mode)...");
|
|
230
|
+
process.chdir((0, path_1.join)(__dirname, ".."));
|
|
231
|
+
// Use the full version with timestamp (without 'v' prefix)
|
|
232
|
+
const imageTag = devTag.replace(/^v/, "");
|
|
233
|
+
// Secrets-only mode parameters
|
|
234
|
+
const quiltStackArn = "arn:aws:cloudformation:us-east-1:712023778557:stack/quilt-staging/e51b0c10-10c9-11ee-9b41-12fda87498a3";
|
|
235
|
+
const benchlingSecret = (0, secrets_1.generateSecretName)("default", "quilt-dtt");
|
|
236
|
+
run(`npm run deploy:prod -- --quilt-stack-arn ${quiltStackArn} --benchling-secret ${benchlingSecret} --image-tag ${imageTag} --yes`);
|
|
237
|
+
// 6. Get and store the deployment endpoint
|
|
238
|
+
console.log("");
|
|
239
|
+
console.log("Step 6: Retrieving deployment endpoint...");
|
|
240
|
+
try {
|
|
241
|
+
const cloudformation = new client_cloudformation_1.CloudFormationClient({ region: "us-east-1" });
|
|
242
|
+
const command = new client_cloudformation_1.DescribeStacksCommand({ StackName: "BenchlingWebhookStack" });
|
|
243
|
+
const response = await cloudformation.send(command);
|
|
244
|
+
if (response.Stacks && response.Stacks.length > 0) {
|
|
245
|
+
const stack = response.Stacks[0];
|
|
246
|
+
const endpointOutput = stack.Outputs?.find((o) => o.OutputKey === "WebhookEndpoint");
|
|
247
|
+
const webhookUrl = endpointOutput?.OutputValue || "";
|
|
248
|
+
if (webhookUrl) {
|
|
249
|
+
// Store endpoint in XDG config
|
|
250
|
+
const configDir = (0, path_1.join)((0, os_1.homedir)(), ".config", "benchling-webhook");
|
|
251
|
+
const deployJsonPath = (0, path_1.join)(configDir, "deploy.json");
|
|
252
|
+
// Read existing deploy.json or create new one
|
|
253
|
+
let deployConfig = {};
|
|
254
|
+
if ((0, fs_1.existsSync)(deployJsonPath)) {
|
|
255
|
+
deployConfig = JSON.parse((0, fs_1.readFileSync)(deployJsonPath, "utf8"));
|
|
256
|
+
}
|
|
257
|
+
// Update dev section
|
|
258
|
+
deployConfig.dev = {
|
|
259
|
+
endpoint: webhookUrl,
|
|
260
|
+
imageTag: imageTag,
|
|
261
|
+
deployedAt: new Date().toISOString(),
|
|
262
|
+
stackName: "BenchlingWebhookStack",
|
|
263
|
+
};
|
|
264
|
+
// Ensure config directory exists
|
|
265
|
+
if (!(0, fs_1.existsSync)(configDir)) {
|
|
266
|
+
(0, fs_1.mkdirSync)(configDir, { recursive: true });
|
|
267
|
+
}
|
|
268
|
+
// Write deploy.json
|
|
269
|
+
(0, fs_1.writeFileSync)(deployJsonPath, JSON.stringify(deployConfig, null, 2));
|
|
270
|
+
console.log(`✅ Stored deployment endpoint in ${deployJsonPath}`);
|
|
271
|
+
console.log(` Endpoint: ${webhookUrl}`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
console.warn(`⚠️ Could not retrieve/store deployment endpoint: ${error.message}`);
|
|
277
|
+
}
|
|
278
|
+
console.log("");
|
|
279
|
+
console.log("✅ Development deployment complete!");
|
|
280
|
+
console.log("");
|
|
281
|
+
console.log(`Dev tag: ${devTag}`);
|
|
282
|
+
console.log(`Image tag: ${imageTag} (built by CI for x86_64)`);
|
|
283
|
+
console.log("");
|
|
284
|
+
}
|
|
285
|
+
main().catch((error) => {
|
|
286
|
+
console.error("\n❌ Error:", error.message);
|
|
287
|
+
process.exit(1);
|
|
288
|
+
});
|
|
289
|
+
//# sourceMappingURL=dev-deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-deploy.js","sourceRoot":"","sources":["../../bin/dev-deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Get environment configuration from a Quilt catalog's config.json
|
|
4
|
+
*
|
|
5
|
+
* This script fetches config.json from a Quilt catalog URL and attempts to:
|
|
6
|
+
* 1. Parse the configuration
|
|
7
|
+
* 2. Query AWS CloudFormation to find the stack using resource identifiers
|
|
8
|
+
* 3. Extract stack outputs and parameters
|
|
9
|
+
* 4. Generate environment variables for .env
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* node bin/get-env.js https://quilt-catalog.yourcompany.com
|
|
13
|
+
* node bin/get-env.js https://quilt-catalog.yourcompany.com --write
|
|
14
|
+
*/
|
|
15
|
+
export * from "../lib/utils/stack-inference";
|
|
16
|
+
//# sourceMappingURL=get-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-env.d.ts","sourceRoot":"","sources":["../../bin/get-env.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AA+KH,cAAc,8BAA8B,CAAC"}
|