Preview: Dev-Registrierung nutzt gespeicherten Branch und Stand
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cf2841adf5
commit
3316b562af
5 files changed
+96
-56
No files matched your search
@@ -461,34 +461,46 @@ export async function waitForDevRegistration() {
|
||||
while (registering) await registering
|
||||
}
|
||||
|
||||
function registerDevSpecs(projects) {
|
||||
if (registering) return
|
||||
registering = (async () => {
|
||||
const key = envKey()
|
||||
await Promise.allSettled(
|
||||
projects.map(async (project) => {
|
||||
const sub = project.subdomain
|
||||
try {
|
||||
const repo = project.repoFullName
|
||||
if (!repo) return
|
||||
const branch = project.previewBranch || 'main'
|
||||
let sha = project.previewBuiltSha
|
||||
if (!SHA_RE.test(String(sha || ''))) {
|
||||
try { sha = await resolveSha(repo, branch, null) } catch (err) {
|
||||
console.error(`[previewDeploy] Dev-Registrierung ${sub} uebersprungen:`, err.message)
|
||||
return
|
||||
}
|
||||
}
|
||||
let env = {}
|
||||
if (project.previewEnv && key) {
|
||||
try { env = decryptEnv(project.previewEnv, key) } catch { env = {} }
|
||||
}
|
||||
await runnerClient.startDev(sub, { sub, repo, sha, branch, mode: 'dev', env })
|
||||
} catch (err) {
|
||||
console.error(`[previewDeploy] Dev-Registrierung ${sub} fehlgeschlagen:`, err.message)
|
||||
let pendingProjects = null
|
||||
|
||||
async function registerDevRound(projects) {
|
||||
const key = envKey()
|
||||
await Promise.allSettled(
|
||||
projects.map(async (project) => {
|
||||
const sub = project.subdomain
|
||||
try {
|
||||
const repo = project.repoFullName
|
||||
const { previewBranch: branch, previewBuiltSha: sha } = project
|
||||
// Kein Raten (R17): ohne gespeicherten Branch/Stand wird uebersprungen
|
||||
if (!repo || !branch || !SHA_RE.test(String(sha || ''))) {
|
||||
console.error(`[previewDeploy] Dev-Registrierung ${sub} uebersprungen: Branch oder Stand unbekannt`)
|
||||
return
|
||||
}
|
||||
})
|
||||
)
|
||||
let env = {}
|
||||
if (project.previewEnv) {
|
||||
try { env = decryptEnv(project.previewEnv, key) } catch {
|
||||
console.error(`[previewDeploy] Dev-Registrierung ${sub} uebersprungen: Variablen nicht entschluesselbar`)
|
||||
return
|
||||
}
|
||||
}
|
||||
await runnerClient.startDev(sub, { sub, repo, sha, branch, mode: 'dev', env })
|
||||
} catch (err) {
|
||||
console.error(`[previewDeploy] Dev-Registrierung ${sub} fehlgeschlagen:`, err.message)
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
function registerDevSpecs(projects) {
|
||||
// Laeuft schon eine Runde: genau eine Wiederholung danach (mit dem neuesten Stand)
|
||||
if (registering) { pendingProjects = projects; return }
|
||||
registering = (async () => {
|
||||
let next = projects
|
||||
while (next) {
|
||||
pendingProjects = null
|
||||
await registerDevRound(next)
|
||||
next = pendingProjects
|
||||
}
|
||||
})().finally(() => { registering = null })
|
||||
}
|
||||
|
||||
@@ -613,7 +625,12 @@ async function followRun({ repoFullName, project, token, runId, subdomain, job,
|
||||
const now = new Date().toISOString()
|
||||
if (!failure && run?.state === 'done') {
|
||||
const detected = detectedLabel(run.detected, run.result)
|
||||
const base = { previewDetected: detected, previewError: warning || '' }
|
||||
const base = {
|
||||
previewDetected: detected,
|
||||
previewError: warning || '',
|
||||
previewBranch: job.branch,
|
||||
previewBuiltSha: run.sha || job.sha,
|
||||
}
|
||||
if (run.result === 'dev') {
|
||||
await patchProject(repoFullName, project, { ...base, previewState: 'sleeping' })
|
||||
try { await runnerClient.startDev(subdomain, job) } catch (err) {
|
||||
@@ -621,7 +638,7 @@ async function followRun({ repoFullName, project, token, runId, subdomain, job,
|
||||
}
|
||||
} else {
|
||||
await patchProject(repoFullName, project, {
|
||||
...base, previewState: 'online', previewBuiltSha: run.sha || job.sha, previewBuiltAt: now,
|
||||
...base, previewState: 'online', previewBuiltAt: now,
|
||||
})
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in new issue
Block a user