ci: add Gitea Actions workflow for Windows EXE build & release

This commit is contained in:
joel
2026-06-11 16:02:23 +02:00
parent a8d9a5ec1a
commit bb912d66a4
3 changed files with 135 additions and 1 deletions
+67
View File
@@ -0,0 +1,67 @@
name: Build Windows EXE & Release
on:
push:
tags:
- 'v*' # Wird ausgelöst wenn du z.B. "v1.0.0" pushst
jobs:
build-windows:
runs-on: windows-latest # Benötigt einen Windows-Runner!
steps:
- name: Code auschecken
uses: actions/checkout@v4
- name: Python 3.11 installieren
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: FFmpeg installieren (via Chocolatey)
run: |
choco install ffmpeg -y
shell: powershell
- name: Python-Abhängigkeiten installieren
run: |
pip install --upgrade pip
pip install mutagen pydub pyinstaller
- name: .exe bauen mit PyInstaller
run: |
pyinstaller `
--onefile `
--windowed `
--icon=icon.ico `
--name="fcco-Converter" `
--add-data="icon.ico;." `
main.py
shell: powershell
- name: Release-Archiv erstellen (ZIP)
run: |
Compress-Archive -Path dist\fcco-Converter.exe -DestinationPath dist\fcco-Converter-${{ gitea.ref_name }}-windows.zip
shell: powershell
- name: Gitea Release erstellen & EXE hochladen
uses: https://gitea.com/actions/gitea-release-action@main
with:
token: ${{ secrets.RELEASE_TOKEN }}
tag_name: ${{ gitea.ref_name }}
release_name: "fcco-Converter ${{ gitea.ref_name }}"
body: |
## fcco-Converter ${{ gitea.ref_name }}
### Download
- **fcco-Converter-${{ gitea.ref_name }}-windows.zip** Windows Standalone (.exe)
### Voraussetzungen
- FFmpeg muss auf dem System installiert sein (oder im PATH liegen)
- Beim ersten Start: `settings.json` wird automatisch erstellt
### Installation
1. ZIP entpacken
2. `fcco-Converter.exe` starten
files: |
dist/fcco-Converter-${{ gitea.ref_name }}-windows.zip
+9
View File
@@ -2,3 +2,12 @@
Cover/*
App
.venv
# PyInstaller Build-Artefakte
build/
dist/
__pycache__/
*.pyc
# Laufzeit-Dateien (werden lokal generiert)
history.json
+58
View File
@@ -0,0 +1,58 @@
# fcco-Converter.spec
# Für lokalen Build auf Windows: pyinstaller fcco-Converter.spec
block_cipher = None
a = Analysis(
['main.py'],
pathex=[],
binaries=[],
datas=[
('icon.ico', '.'), # Icon miteinbinden
('settings.json', '.'), # Standard-Settings
],
hiddenimports=[
'mutagen',
'mutagen.easyid3',
'mutagen.id3',
'pydub',
'tkinter',
'tkinter.ttk',
'tkinter.filedialog',
'tkinter.messagebox',
'tkinter.simpledialog',
],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zlib, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='fcco-Converter',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False, # Kein Konsolenfenster (GUI-App)
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon='icon.ico',
)