Implement platform management features

This commit is contained in:
npc0-hue
2026-08-17 08:48:45 +08:00
parent 65353cf269
commit 302f1f64b7
38 changed files with 2185 additions and 110 deletions
@@ -66,7 +66,17 @@ func (svc *CoreService) enqueueDistributionBuild(job domain.Job) {
delete(svc.distributionBuilds, job.ID)
svc.distributionBuildMu.Unlock()
}()
_ = svc.executeDistributionBuild(job)
defer func() {
if recover() != nil {
_ = svc.failDistributionBuildJob(job, "platform builder failed unexpectedly")
}
}()
if err := svc.executeDistributionBuild(job); err != nil {
// executeDistributionBuild may fail after persisting the running state.
// A second terminalization attempt is idempotent when the specific
// failure path already marked the job failed.
_ = svc.failDistributionBuildJob(job, "platform builder failed before completion")
}
}()
}
@@ -99,7 +109,7 @@ func (svc *CoreService) executeDistributionBuild(job domain.Job) error {
payload, buildErr = builder.Build(input)
}
if buildErr != nil {
return svc.failDistributionBuildJob(job, builderJobFailureMessage(buildErr))
return svc.failDistributionBuildJob(job, builderJobFailureMessage(buildErr, input.AuthKey))
}
if _, err := svc.platformDistributionBuildInput(job); err != nil {
return svc.failDistributionBuildJob(job, "platform builder discarded output because the component key is no longer current")