Windows-Build / windows-exe (push) Successful in 5m30s
- Verschieben/Größe ziehen per PostMessage statt SendMessage: Die Windows-Verschiebeschleife lief innerhalb eines Tk-Ereignisses; Tk führte darin Python-Ereignisse (<Configure>) aus -> harter Absturz „PyEval_RestoreThread … thread state is NULL“ (normal und aus maximiert). - Größen-Mauszeiger am Rand wieder von Tk (blieb sonst im Fenster stehen); Windows zieht beim Drücken. - Neuer Maustest im Build (xdotool, echte Maus): Titelleiste/Rand ziehen, maximieren, herausziehen. - Export: Bei Vodafone steht in Spalte A das Aktivierungsdatum (statt Abrechnungslauf). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
61 lines
2.3 KiB
YAML
61 lines
2.3 KiB
YAML
# Baut die Windows-Version (Provisionsmanager95.exe) mit Windows-Python unter Wine.
|
||
# - jeder Push / PR: Tests + .exe als Build-Artefakt
|
||
# - Tag "v*" (z. B. v1.0.0): zusätzlich Gitea-Release mit .exe und .zip
|
||
name: Windows-Build
|
||
|
||
on:
|
||
push:
|
||
branches: [main]
|
||
tags: ["v*"]
|
||
pull_request:
|
||
workflow_dispatch:
|
||
|
||
jobs:
|
||
windows-exe:
|
||
# Label ggf. an euren Runner anpassen (Runner braucht Docker; Wine steckt im Container-Image).
|
||
runs-on: ubuntu-latest
|
||
timeout-minutes: 30 # normal ca. 5 Minuten – ein Hänger darf den Runner nicht stundenlang belegen
|
||
container:
|
||
image: tobix/pywine:3.12
|
||
env:
|
||
WINEPREFIX: /opt/wineprefix
|
||
steps:
|
||
- name: Werkzeuge für Checkout/Upload installieren
|
||
run: |
|
||
apt-get update -qq
|
||
apt-get install -y -qq --no-install-recommends git nodejs ca-certificates xdotool >/dev/null
|
||
|
||
- uses: actions/checkout@v4
|
||
|
||
- name: Tests + Build (.exe)
|
||
run: ./build/build_windows.sh
|
||
|
||
- name: Build-Artefakt hochladen
|
||
uses: actions/upload-artifact@v3
|
||
with:
|
||
name: Provisionsmanager95
|
||
path: |
|
||
dist/Provisionsmanager95.exe
|
||
dist/Provisionsmanager95-*.zip
|
||
|
||
- name: Release erstellen
|
||
if: startsWith(github.ref, 'refs/tags/v')
|
||
env:
|
||
TOKEN: ${{ secrets.RELEASE_TOKEN || secrets.GITEA_TOKEN }}
|
||
API: ${{ github.server_url }}/api/v1/repos/${{ github.repository }}
|
||
TAG: ${{ github.ref_name }}
|
||
run: |
|
||
set -eu
|
||
VERSION=$(cat dist/VERSION | tr -d '\r\n')
|
||
if [ "v$VERSION" != "$TAG" ]; then
|
||
echo "Tag $TAG passt nicht zu provtool/__init__.py (Version $VERSION)"; exit 1
|
||
fi
|
||
resp=$(curl -sf -X POST "$API/releases" -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
|
||
-d "{\"tag_name\":\"$TAG\",\"name\":\"Provisions-Manager 95 $TAG\",\"body\":\"Windows-Version $VERSION – einfach die .exe herunterladen und starten.\"}")
|
||
id=$(echo "$resp" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)
|
||
for f in dist/Provisionsmanager95.exe dist/Provisionsmanager95-$VERSION.zip; do
|
||
curl -sf -X POST "$API/releases/$id/assets?name=$(basename "$f")" \
|
||
-H "Authorization: token $TOKEN" -F "attachment=@$f" >/dev/null
|
||
echo "hochgeladen: $f"
|
||
done
|