We want to add a full CI pipeline for this project using GitHub Actions on Windows. This pipeline should:
- Build the application using the existing
built.bat script (via PyInstaller)
- Run Python unit tests
- Upload the resulting
.exe files as GitHub Actions artifacts
✅ Goal
Implement a GitHub Actions workflow that:
-
Runs on windows-latest
-
Executes the build script:
pyinstaller synth_riders_discordrpc.spec
pyinstaller synth_riders_discordrpc_uninstall.spec
pyinstaller synth_riders_discordrpc_setup.spec
(This is already in built.bat)
-
Runs Python tests using pytest
-
Runs optional static analysis, e.g.:
flake8
black --check
mypy
-
Uploads all .exe binaries as artifacts so they can be downloaded from the GitHub Actions summary
🧪 Test Scope
Tests should live in a /tests folder and use pytest. Focus on:
- Config parsing and fallback/defaults
- Album art image decoding & upload logic
- WebSocket event handling (e.g.
SongStart, SongEnd)
- Discord RPC update logic (can use mocks for
pypresence)
- General utilities
Avoid mocking Windows behavior — we now run tests on Windows!
📁 Project Structure Notes
The entry points built by PyInstaller are defined in these .spec files:
synth_riders_discordrpc.spec → main executable
synth_riders_discordrpc_uninstall.spec → uninstaller
synth_riders_discordrpc_setup.spec → first-time setup
You can run built.bat to produce the full set of executables.
🛠 Tasks
We want to add a full CI pipeline for this project using GitHub Actions on Windows. This pipeline should:
built.batscript (via PyInstaller).exefiles as GitHub Actions artifacts✅ Goal
Implement a GitHub Actions workflow that:
Runs on
windows-latestExecutes the build script:
(This is already in
built.bat)Runs Python tests using
pytestRuns optional static analysis, e.g.:
flake8black --checkmypyUploads all
.exebinaries as artifacts so they can be downloaded from the GitHub Actions summary🧪 Test Scope
Tests should live in a
/testsfolder and usepytest. Focus on:SongStart,SongEnd)pypresence)Avoid mocking Windows behavior — we now run tests on Windows!
📁 Project Structure Notes
The entry points built by PyInstaller are defined in these
.specfiles:synth_riders_discordrpc.spec→ main executablesynth_riders_discordrpc_uninstall.spec→ uninstallersynth_riders_discordrpc_setup.spec→ first-time setupYou can run
built.batto produce the full set of executables.🛠 Tasks
Create
.github/workflows/windows-build-test.ymlUse
runs-on: windows-latestInstall Python dependencies:
Run
built.batRun
pytestRun
flake8,black --check,mypyUpload the built
.exefiles fromdist/as GitHub Actions artifacts