boxwart: Update-Verlauf zeigt das echte Ergebnis je Baustein, festgehaltene Bausteine sichtbar
Ampel / ampel (push) Failing after 22s
Ampel / ampel (push) Failing after 22s
Der Verlauf las bisher nur den Hermes-Cron-Status ("Skript lief") und zeigte die
Laeufe vom 06. und 13.09. als "durchgelaufen", obwohl dort zurueckgerollt und
festgehalten wurde; ein abgebrochener Lauf stand als "laeuft" da. Jetzt kommt der
Verlauf aus dem Meldeprotokoll (~/mc2-notify.log), also aus dem, was autoupdate.sh
selbst je Baustein meldet.
Festgehaltene Bausteine (Pin-Register) werden zum Waechter-Hinweis mit Knopf
"Freigeben", auf der Updates-Seite markiert und in der Updates-Lampe gezaehlt.
Hermes zeigt seine laufende Version und die Zahl der neuen Aenderungen.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
f3af2adec3
commit
790de19f1a
@@ -46,6 +46,8 @@ export const useSicherungen = () =>
|
||||
|
||||
export interface UpdateDetails {
|
||||
kind: string
|
||||
installed_version?: string | null
|
||||
behind?: number
|
||||
installed_build?: number | null
|
||||
latest_build?: number | null
|
||||
latest_tag?: string | null
|
||||
@@ -66,11 +68,12 @@ export const useUpdateDetails = (art: string | null) =>
|
||||
})
|
||||
|
||||
export interface UpdateLauf {
|
||||
start: string | null
|
||||
ende: string | null
|
||||
status: string
|
||||
fehler: string | null
|
||||
job: string
|
||||
start: string
|
||||
ende: string
|
||||
anlass: string
|
||||
stufe: "rot" | "gelb" | "gruen" | "info" | "grau"
|
||||
titel: string
|
||||
zeilen: { baustein: string; ergebnis: string; stufe: UpdateLauf["stufe"]; text: string }[]
|
||||
}
|
||||
|
||||
export const useUpdateVerlauf = () =>
|
||||
@@ -138,6 +141,12 @@ export const useUpdateStarten = () =>
|
||||
neuLaden: ["jobs", "start"],
|
||||
})
|
||||
|
||||
export const useFreigeben = () =>
|
||||
useAktion(
|
||||
(baustein: string) => post<AktionsErgebnis>(`/api/updates/festgehalten/${encodeURIComponent(baustein)}/freigeben`),
|
||||
{ erfolg: (_, e) => (e as AktionsErgebnis).text ?? "Freigegeben.", neuLaden: ["start"] },
|
||||
)
|
||||
|
||||
export const useJetztSichern = () =>
|
||||
useAktion(() => post<AktionsErgebnis>("/api/system/backup"), {
|
||||
erfolg: () => "Sicherung erstellt.",
|
||||
|
||||
@@ -61,6 +61,13 @@ export function hauptleuchte(z: Start["zustand"]) {
|
||||
export function versionen(id: string, d: UpdateDetails | undefined): { laeuft: string; neu: string | null } {
|
||||
if (!d) return { laeuft: "…", neu: null }
|
||||
if (id === "os") return { laeuft: "Ubuntu", neu: d.count ? `${d.count} Pakete` : null }
|
||||
// Hermes kommt aus git: „Neu“ ist die Zahl der Änderungen seit dem eingespielten Stand.
|
||||
if (id === "hermes") {
|
||||
return {
|
||||
laeuft: d.installed_version ? `v${d.installed_version}` : "–",
|
||||
neu: d.behind ? `+${d.behind.toLocaleString("de-DE")} Änderungen` : null,
|
||||
}
|
||||
}
|
||||
const pre = id === "engine" ? "b" : "v"
|
||||
const laeuft = d.installed_build != null ? `${pre}${d.installed_build}` : "–"
|
||||
const neuer = d.latest_build != null && d.installed_build != null && d.latest_build > d.installed_build
|
||||
|
||||
@@ -66,10 +66,20 @@ export interface Start {
|
||||
updates: {
|
||||
bausteine: { id: string; name: string; neu: string }[]
|
||||
modelle: { role: string; title: string; repo: string }[]
|
||||
festgehalten: Festgehalten[]
|
||||
}
|
||||
flugplan: { gelaufen: FlugplanEintrag[]; geplant: FlugplanEintrag[] }
|
||||
}
|
||||
|
||||
/** Ein Baustein, den der Sonntags-Lauf nach einem gescheiterten Update überspringt. */
|
||||
export interface Festgehalten {
|
||||
baustein: string
|
||||
name: string
|
||||
version: string
|
||||
seit: string
|
||||
grund: string
|
||||
}
|
||||
|
||||
export interface AktionsErgebnis {
|
||||
ok: boolean
|
||||
text?: string
|
||||
|
||||
@@ -50,6 +50,12 @@ describe("versionen", () => {
|
||||
it("zählt beim Betriebssystem die Pakete", () => {
|
||||
expect(versionen("os", { kind: "os", count: 24 })).toEqual({ laeuft: "Ubuntu", neu: "24 Pakete" })
|
||||
})
|
||||
|
||||
it("zeigt bei Hermes die Version und die Zahl der Änderungen", () => {
|
||||
expect(versionen("hermes", { kind: "hermes", installed_version: "0.21.3", behind: 2523 }))
|
||||
.toEqual({ laeuft: "v0.21.3", neu: "+2.523 Änderungen" })
|
||||
expect(versionen("hermes", { kind: "hermes", behind: 0 })).toEqual({ laeuft: "–", neu: null })
|
||||
})
|
||||
})
|
||||
|
||||
describe("rolleVon", () => {
|
||||
|
||||
Reference in New Issue
Block a user