Version 1.7.1 — der Zweig mit der Sperren-Freigabe kommt nach main
v1.7.0 war getaggt, aber nie zusammengefuehrt. Der Update-Agent folgt Tags, die Arbeit war also live — main kannte sie nicht, und main trug VERSION=1.6.6, also UNTER dem existierenden Tag. Ein naechstes Release aus main haette 1.6.7 geheissen und waere nie ausgeliefert worden. Drei Konflikte, alle so aufgeloest, dass beide Seiten ueberleben: - VERSION auf 1.7.1, damit die Reihenfolge wieder steigt. - deploy/install-agent.sh: main brachte install-server-terminal, der Zweig release-update-lock. Zwei unabhaengige case-Arme an derselben Stelle — beide bleiben, vier Schritte und vier sudoers-Zeilen. - deploy/update.sh: nur ein Kommentar zu HOST_STEP_NEEDS=3. Der timeout -k 10 aus 1.6.5 ist dabei erhalten geblieben. Ohne ihn haengt der Agent unbegrenzt an docker compose exec, und genau das war der Ausfall, der diese ganze Kette ausgeloest hat. Dazu ein Merge-Artefakt: RbacMoveTest zaehlte 22 Berechtigungen. Beide Seiten haben je eine ergaenzt — server.terminal und deployment.unblock — also sind es 23. 2868 Tests gruen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>feat/versandtakt v1.7.1
parent
37e1914246
commit
022279a93c
|
|
@ -13,10 +13,11 @@ it('moves every permission and role to the operator guard, leaving none behind',
|
||||||
expect(Permission::where('guard_name', 'web')->count())->toBe(0)
|
expect(Permission::where('guard_name', 'web')->count())->toBe(0)
|
||||||
->and(Role::where('guard_name', 'web')->count())->toBe(0)
|
->and(Role::where('guard_name', 'web')->count())->toBe(0)
|
||||||
// 17 from the original seed, plus customers.grant_plan,
|
// 17 from the original seed, plus customers.grant_plan,
|
||||||
// instances.restart, dpa.manage, instances.manage and server.terminal
|
// instances.restart, dpa.manage, instances.manage, server.terminal and
|
||||||
|
// deployment.unblock
|
||||||
// — the later ones created straight onto this guard, because since this
|
// — the later ones created straight onto this guard, because since this
|
||||||
// migration `web` is where a permission goes to match nobody at all.
|
// migration `web` is where a permission goes to match nobody at all.
|
||||||
->and(Permission::where('guard_name', 'operator')->count())->toBe(22)
|
->and(Permission::where('guard_name', 'operator')->count())->toBe(23)
|
||||||
->and(Role::where('guard_name', 'operator')->count())->toBe(6);
|
->and(Role::where('guard_name', 'operator')->count())->toBe(6);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -159,7 +160,7 @@ it('preflights every customer conflict before mutating anything, listing all of
|
||||||
// server, which is the whole reason this has to be checked up front.
|
// server, which is the whole reason this has to be checked up front.
|
||||||
// Every capability this installation has, pushed back to `web` above to
|
// Every capability this installation has, pushed back to `web` above to
|
||||||
// stage the pre-migration shape — the figure grows with each new one.
|
// stage the pre-migration shape — the figure grows with each new one.
|
||||||
expect(Permission::where('guard_name', 'web')->count())->toBe(22)
|
expect(Permission::where('guard_name', 'web')->count())->toBe(23)
|
||||||
->and(Permission::where('guard_name', 'operator')->count())->toBe(0)
|
->and(Permission::where('guard_name', 'operator')->count())->toBe(0)
|
||||||
->and(Role::where('guard_name', 'web')->count())->toBe(6)
|
->and(Role::where('guard_name', 'web')->count())->toBe(6)
|
||||||
->and(Role::where('guard_name', 'operator')->count())->toBe(0)
|
->and(Role::where('guard_name', 'operator')->count())->toBe(0)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue