Sammelcommit fuer den ueber mehrere Sitzungen gewachsenen, bisher nicht
eingecheckten Stand. Getrennte Commits waeren ehrlicher gewesen, sind es
nachtraeglich aber nicht mehr: BugRepo, changelog.json und die Doku tragen
Aenderungen aus allen Straengen gleichzeitig, und keine Zwischenstufe waere
lauffaehig.
ROADMAP IM DEPLOYMENTCENTER (2.7.0)
Planungsstand, Reihenfolge und Zustaendigkeit lagen in handgepflegten
Markdown-Dateien neben einem Bugtracker, der genau diese drei Dinge bereits
fuehrt. Zwei Pfleger fuer dasselbe Feld - Drift war eine Frage der Zeit.
Ab jetzt: Zustand im DC, Begruendung in der Datei. Kein Feld hat zwei Pfleger.
- Migration 016: epic, roadmap_rank, target_build, defer_trigger,
doc_anchor, Status "deferred", Tabelle roadmap_epics.
KEINE Roadmap-Tabelle - ein Eintrag ist ein bugtracker_item.
- Zugehoerigkeit ist ein Feld: Ein Item steht auf der Roadmap, wenn es ein
epic hat. Ein zweites Kennzeichen daneben koennte auseinanderlaufen.
- Kennung ist die Item-ID. Handvergebene Kuerzel ("A12") erzeugen die
schlimmste Fehlerart: Beide Seiten stimmig, Verschiedenes gemeint, weil
die Kennung nach einer Loeschung neu vergeben wurde.
- Zurueckstellen verlangt defer_trigger. Ohne benannten Anlass ist ein
Vorhaben nicht zurueckgestellt, sondern vergessen. Die Regel sitzt im
Repository, damit sie auf allen drei Schreibwegen gleich greift.
- Modules/Bugtracker/Roadmap.php, /api/bugtracker/v1/roadmap.php,
WebUI-Modul mit Filtern, cli/roadmap.php --write/--check,
dc_roadmap und dc_roadmap_set im MCP-Adapter.
- cli/roadmap.php --write ERZEUGT den Zustandsteil der Markdown-Datei;
--check prueft nur die Prosa. Was erzeugt wird, kann nicht driften.
- docs/ROADMAP_MIGRATION.md: Uebernahme fuer die anderen Projekte.
TESTINSTANZ UND TESTTOR
- dc-dev.mhdf.de: zweite Installation, eigene DB, eigene Schluessel,
Basic-Auth davor, Rocket.Chat aus.
- 124 Testfaelle in tests/e2e gegen API, Rechte, Migrationen, Sperre.
- scripts/deploy.py bringt vor jedem Upload erst den anstehenden Stand auf
die Testinstanz und laesst dann den Testlauf laufen. Erst bei
Rueckgabewert 0 geht etwas auf die Produktion (--ohne-test als Notausgang).
Andersherum prueft der Lauf aelteren Code als den, der gleich hochgeht.
- tests/ ist aus dem Produktiv-Deploy ausgeschlossen; testctl.php kann
nicht versehentlich auf dc.mhdf.de landen.
- Ein Lauf mit mehr uebersprungenen als geprueften Faellen endet mit
Rueckgabewert 2 statt 0. Nichts ist kaputt, geprueft wurde es aber auch
nicht - der Unterschied darf nicht am Rueckgabewert verschwinden.
SUPERVISOR, PROJEKTLANDSCHAFT, NACHPRUEFUNG (2.6.0/2.6.1)
- Migration 013: projektuebergreifend melden (dev_agent, evidence,
triage_external, affects).
- Migration 014: supervisor_findings, Katalog, fuenf serverseitige
Detektoren im Tick.
- Migration 015: Nachpruefung als Arbeitsschlange statt Benachrichtigung.
- DEV-Lizenzschluessel zur Selbstbedienung, dc-testkit fuer die Test-VM.
- MCP-Adapter: 15 Werkzeuge, ohne Fremdabhaengigkeiten, mit Abgrenzung
von Fremddaten gegen Prompt-Injektion.
BEHOBEN
- observe und status im Supervisor legten den Zustand des Befundes als
"status" in die Antwort. Http::ok() merged ['status' => 'success']
darunter, also gewann der Befundzustand - eine angenommene Meldung kam
als status="open" an. Heisst jetzt finding_status. War Item #59.
Migrationen 013-016 sind auf dem Produktivserver noch NICHT ausgefuehrt.
Ohne sie bricht das WebUI, weil die Roadmap-Ansicht bei jedem Seitenaufruf
gegen bugtracker_items.epic abfragt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
69 lines
2.5 KiB
Cheetah
69 lines
2.5 KiB
Cheetah
<?php
|
|
/**
|
|
* Deploymentcenter Configuration - TESTINSTANZ
|
|
*
|
|
* ERZEUGT von scripts/deploy_dev.py aus scripts/dev/config.dev.php.tmpl.
|
|
* Aenderungen an dieser Datei auf dem Server gehen beim naechsten
|
|
* Deployment verloren - die Werte stehen in scripts/deploy_dev_config.json.
|
|
*
|
|
* Bewusst anders als die Produktion:
|
|
* - eigene Datenbank, eigene Schluessel (nie Produktivgeheimnisse hierher)
|
|
* - debug = true, damit Fehler im Testlauf lesbar sind
|
|
* - Rocket.Chat AUS: ein Testlauf darf keine echten Kanaele volllaufen
|
|
* lassen. Das ist der Unterschied, der am ehesten unbemerkt teuer wird.
|
|
*/
|
|
|
|
if (!function_exists('dc_env')) {
|
|
function dc_env(string $key, $default = null)
|
|
{
|
|
$val = getenv($key);
|
|
if ($val === false || $val === '') {
|
|
return $default;
|
|
}
|
|
return $val;
|
|
}
|
|
}
|
|
|
|
return [
|
|
'app' => [
|
|
'name' => 'Deploymentcenter (Testinstanz)',
|
|
'version' => '%APP_VERSION%',
|
|
'url' => dc_env('DC_APP_URL', '%BASE_URL%'),
|
|
'timezone' => 'Europe/Berlin',
|
|
'debug' => (bool)dc_env('DC_DEBUG', true),
|
|
'env' => 'test',
|
|
],
|
|
'db' => [
|
|
'host' => dc_env('DC_DB_HOST', '%DB_HOST%'),
|
|
'dbname' => dc_env('DC_DB_NAME', '%DB_NAME%'),
|
|
'username' => dc_env('DC_DB_USER', '%DB_USER%'),
|
|
'password' => dc_env('DC_DB_PASS', '%DB_PASS%'),
|
|
'charset' => 'utf8mb4',
|
|
],
|
|
'security' => [
|
|
'shared_key' => dc_env('DC_SHARED_KEY', '%SHARED_KEY%'),
|
|
'session_name' => 'DC_DEV_SESSION_ID',
|
|
'webhook_key' => dc_env('DC_WEBHOOK_KEY', '%WEBHOOK_KEY%'),
|
|
'license_key' => dc_env('DC_LICENSE_SIGNING_KEY', '%LICENSE_KEY%'),
|
|
'release_private_key' => dc_env('DC_RELEASE_SIGNING_KEY', __DIR__ . '/release-signing.pem'),
|
|
],
|
|
'bugtracker' => [
|
|
'self_project' => 'deploymentcenter',
|
|
'report_rate' => 60,
|
|
'lease_minutes' => 30,
|
|
],
|
|
'rocketchat' => [
|
|
'enabled' => (bool)dc_env('DC_RC_ENABLED', false),
|
|
'url' => dc_env('DC_RC_URL', ''),
|
|
'username' => dc_env('DC_RC_USER', ''),
|
|
'password' => dc_env('DC_RC_PASS', ''),
|
|
'status_channel' => dc_env('DC_RC_STATUS_CHANNEL', '#DC-Testinstanz'),
|
|
'alert_channel' => dc_env('DC_RC_ALERT_CHANNEL', '#DC-Testinstanz'),
|
|
'verify_ssl' => (bool)dc_env('DC_RC_VERIFY_SSL', false),
|
|
'report_interval' => (int)dc_env('DC_RC_REPORT_INTERVAL', 43200),
|
|
],
|
|
'testing' => [
|
|
'enabled' => true,
|
|
],
|
|
];
|