feat(v2): full spec implementation — root SSH, bootstrap sentinel, HMAC webhook, all parametric routes fixed #1
@@ -13,7 +13,7 @@ import {
|
|||||||
deleteKeyPairAws,
|
deleteKeyPairAws,
|
||||||
deleteSecurityGroupAws,
|
deleteSecurityGroupAws,
|
||||||
} from "./ec2";
|
} from "./ec2";
|
||||||
import { connectSsh, waitForBootstrap, type SshSession } from "./ssh";
|
import { connectSsh, type SshSession } from "./ssh";
|
||||||
import {
|
import {
|
||||||
buildPrCommentBody,
|
buildPrCommentBody,
|
||||||
postComment,
|
postComment,
|
||||||
@@ -232,8 +232,10 @@ async function firstDeploy(
|
|||||||
activeSshSessions.set(previewId, sshSession);
|
activeSshSessions.set(previewId, sshSession);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await appendLog(previewId, `[PP] SSH connected. Waiting for bootstrap to complete...\n`);
|
// Root SSH is enabled as the final bootstrap step, after the completion
|
||||||
await waitForBootstrap(sshSession, 900_000);
|
// marker is written. A successful root connection is therefore the
|
||||||
|
// readiness signal; polling the same long-lived SSH connection can leave
|
||||||
|
// a completed instance stuck when its exec channel goes stale.
|
||||||
await appendLog(previewId, `[PP] Bootstrap complete. Starting setup...\n`);
|
await appendLog(previewId, `[PP] Bootstrap complete. Starting setup...\n`);
|
||||||
|
|
||||||
if (repoConfig.aptPackages.length > 0) {
|
if (repoConfig.aptPackages.length > 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user