Files
IBKRTrader/.gitea/workflows/build.yml
T
RichardandClaude Opus 5 3513a0b2d9 L4: Modul-Fenster auf Avalonia - Funktionsgleichheit mit der WinForms-Shell
Die drei Modul-Fenster sind portiert; die Avalonia-Shell zeigt jetzt
dieselben sieben Ansichten wie die WinForms-Shell.

- CongressTradingWindow: Kennzahlen als Kacheln, manueller Scrape-Ausloeser,
  offene Positionen des Moduls.
- SupervisorWindow: Analyse mit Live-Anzeige der Tool-Aufrufe, Dossier-
  Browser mit Splitter, Berichte, Hinweise. Der Hinweistext nennt jetzt die
  Betriebszeitzone, weil die Tagesbericht-Stunde in ihr gilt und nicht in
  der Zeitzone des Rechners.
- AccountingWindow: gemeinsame Filterleiste, Uebersicht/BWA, Ledger, Steuer
  (Platzhalter), Export und Abruf/Status.

Ersetzte WinForms-Bausteine:
- SaveFileDialog -> IStorageProvider.SaveFilePickerAsync (asynchron, anderer
  Zuschnitt). Betrifft die drei Exporte des Accounting-Moduls.
- MessageBox bei Fehlern -> Statuszeile im Fenster. Ein modaler Dialog fuer
  einen fehlgeschlagenen Ladevorgang war ohnehin zu laut.
- Anonyme Typen an DataGridView.DataSource -> benannte Records. Kompilierte
  Bindings pruefen die Spalten dadurch beim Kompilieren; ein Tippfehler in
  einer Spaltendefinition (Binding="{Binding Profile}}") ist beim Build
  aufgefallen statt im Betrieb.

Accounting-Betraege werden beim Laden gegen InvariantCulture formatiert, das
Delta eines Ingest-Laufs ist nullable behandelt (ohne Saldo-Anker gibt es
keins) - vorher waere dort eine NullReferenceException moeglich gewesen.

CI-Matrix (Gitea Actions, Actions-kompatibel): ubuntu-latest und
windows-latest. Sie ist der Waechter gegen Rueckfaelle - ein neues
DateTime.Now, ein ToString ohne Formatanbieter oder eine WinForms-Referenz
im Core faellt auf dem Entwicklungsrechner nicht auf, hier schon. Der
Linux-Lauf baut bewusst NICHT die ganze Mappe, weil IBKRTrader.App
(net10.0-windows) dort nicht baubar ist; die Aufzaehlung entfaellt, sobald
die WinForms-Shell aus dem Build genommen wird.

Der Smoke-UI-Lauf ist Teil der CI - mit Avalonia braucht er kein
Anzeigegeraet mehr (SetupWithoutStarting). Mit WinForms war das auf einem
Build-Server nicht moeglich.

Verifiziert: Build 0 Fehler/0 Warnungen, 193 Tests gruen, Smoke-UI
konstruiert alle 7 Ansichten + Launcher + Dialog, publish -r linux-x64
liefert 32 MB mit ELF-Launcher. Die WinForms-Shell ist unveraendert
lauffaehig.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 10:25:54 +02:00

74 lines
2.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Build- und Testlauf auf beiden Zielplattformen.
#
# Zweck: Die Portierung ist nur so lange etwas wert, wie sie nicht wieder zurückschleicht. Ein
# neues DateTime.Now, ein ToString("N2") ohne Formatanbieter oder eine WinForms-Referenz im Core
# fallen auf dem Windows-Entwicklungsrechner nicht auf hier schon.
#
# Gitea Actions ist Actions-kompatibel; unter GitHub läuft dieselbe Datei als .github/workflows/.
name: Build & Test
on:
push:
branches: [main, 'feat/**']
pull_request:
branches: [main]
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
# Windows: die gesamte Projektmappe, inklusive der alten WinForms-Shell.
- name: Build (Windows, gesamte Mappe)
if: matrix.os == 'windows-latest'
run: |
dotnet build IBKRTrader.slnx -c Release
dotnet test IBKRTrader.slnx --no-build -c Release --logger "trx;LogFileName=test-results.trx"
# Linux: alles AUSSER IBKRTrader.App (WinForms, net10.0-windows) das lässt sich hier
# naturgemäß nicht bauen. Diese Aufzählung entfällt, sobald die WinForms-Shell aus dem
# Build genommen wird; dann baut auch hier wieder die ganze Mappe.
- name: Build (Linux, plattformneutrale Projekte)
if: matrix.os == 'ubuntu-latest'
run: |
dotnet build src/IBKRTrader.App.Avalonia -c Release
dotnet build src/IBKRTrader.Daemon -c Release
dotnet test tests/IBKRTrader.Tests -c Release --logger "trx;LogFileName=test-results.trx"
# Die Konstruktionsprüfung der Oberfläche braucht mit Avalonia KEIN Anzeigegerät mehr
# (SetupWithoutStarting). Mit WinForms war das auf einem Build-Server nicht möglich.
- name: Smoke-UI (Fenster-Konstruktion)
run: dotnet run --project src/IBKRTrader.App.Avalonia --no-build -c Release -- --smoke-ui
# Trockenlauf des kopflosen Dienstes: Host bauen, Startprüfungen fahren, nichts starten.
- name: Daemon-Prüflauf
run: dotnet run --project src/IBKRTrader.Daemon --no-build -c Release -- --check
# Der eigentliche Portierungs-Wächter: läuft nur unter Linux und schlägt fehl, sobald ein
# Projekt wieder eine Windows-Abhängigkeit hereinzieht.
- name: Linux-Publish (Daemon + Oberfläche)
if: matrix.os == 'ubuntu-latest'
run: |
dotnet publish src/IBKRTrader.Daemon -c Release -r linux-x64 --self-contained false -o out/daemon
dotnet publish src/IBKRTrader.App.Avalonia -c Release -r linux-x64 --self-contained false -o out/gui
- name: Testergebnisse sichern
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-${{ matrix.os }}
path: '**/test-results.trx'
if-no-files-found: ignore