Die Plattformneutralitaet war nach dem WinForms-Ausbau eine Momentaufnahme: eine einzige net10.0-windows-Zeile oder ein "using System.Drawing" genuegt, und der Linux-Build ist kaputt, ohne dass es auf einer Windows-Maschine auffaellt - dort baut es weiter. Genau das faengt die CI ab, und zwar auf Linux. .gitea/workflows/ci.yml, zwei Jobs auf ubuntu-latest: - build-test: restore, build, die 476 Tests (brauchen keine DB, laufen gegen EF-InMemory), Linux-Publish. Der Publish ist kein Selbstzweck - dort faellt auf, wenn ein Paket doch windows-only ist. Anschliessend wird geprueft, dass die Executable, appsettings.json, setup.json und libSkiaSharp.so wirklich im Ergebnis liegen. - guard: keine windows-TFMs, kein UseWindowsForms/UseWPF, keine windows-only using-Direktiven, keine versionierten Secret-Dateien, keine anfaelligen Pakete. Alle Waechter sind in beide Richtungen gegengeprueft: sie schlagen bei simulierten Regressionen an (windows-TFM, UseWindowsForms, using System.Drawing, getrackte packager.config.json samt dc_sub_-Token, Newtonsoft 11.0.2) und schweigen beim Ist-Zustand. Die Namespace-Pruefung trifft bewusst nur echte using-Direktiven: im Bestand steht an vielen Stellen erklaert, WARUM System.Drawing nicht verwendet wird, und das darf keinen Fehlalarm ausloesen. Der Schwachstellen-Check ist Punkt 1 der wiederkehrenden Audit-Checkliste aus dem Sicherheitskonzept - laeuft ab jetzt bei jedem Push statt quartalsweise von Hand. Er wuerde zum Beispiel anschlagen, wenn der Newtonsoft-Pin im Core faellt. Bewusst kein -warnaserror: die 15 vorhandenen Warnungen muessten erst weg, sonst ist die CI ab dem ersten Tag rot und wird ignoriert. WICHTIG - die CI laeuft noch nicht: auf der Gitea-Instanz ist kein Actions-Runner registriert (auf Repo-, Benutzer- und Instanzebene geprueft, ueberall 0). has_actions ist true, es fehlt nur der Runner. Einrichtung Schritt fuer Schritt in docs/LEITFADEN-CI.md Abschnitt 3. .gitattributes neu: erzwingt LF fuer .yml/.sh/.service. Entwickelt wird mit autocrlf=true auf Windows, ausgefuehrt auf Linux - ein Shell-Skript mit CRLF scheitert dort mit irrefuehrenden Meldungen. Bisher gab es keine .gitattributes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
23 lines
757 B
Plaintext
23 lines
757 B
Plaintext
# Zeilenenden
|
|
#
|
|
# Entwickelt wird auf Windows (core.autocrlf=true), ausgeführt wird auf Linux. Für die
|
|
# meisten Dateien ist das folgenlos - für die unten aufgeführten nicht: ein Shell-Skript
|
|
# oder eine systemd-Unit mit CRLF scheitert auf Linux mit irreführenden Meldungen
|
|
# ("command not found" für einen Befehl, der sichtbar dasteht - das \r gehört noch dazu).
|
|
# Deshalb wird für diese Dateien LF erzwungen, unabhängig von der lokalen Git-Konfiguration.
|
|
|
|
# Standard: Git entscheidet, im Repo immer LF
|
|
* text=auto
|
|
|
|
# Muss im Arbeitsverzeichnis LF bleiben - wird auf Linux ausgeführt
|
|
*.yml text eol=lf
|
|
*.yaml text eol=lf
|
|
*.sh text eol=lf
|
|
*.service text eol=lf
|
|
|
|
# Binärdateien nicht anfassen
|
|
*.png binary
|
|
*.ico binary
|
|
*.nupkg binary
|
|
*.pdf binary
|