ci(build): Add Build And Release Pipeline
Hint: This PR is built upon #80 and as such has an unclean diff
Goal
This PR contains a new workflow file that has build jobs for the 3 major OSs Linux, Windows and MacOS. Each build results gets uploaded and published in a new release with the branches' name.
TODOs (can also be adressed via later PRs)
- The build and release publishing can currently only be triggered manually for a specific branch. I'd think it should be changed to automatically run whenever a change is pushed to main so that we have an alway up to date build with the name "main" for the bleeding edge enthusiasts ;p. Also, the manual triggering should stay in my opinion and could be used to release "major" new versions by creating a new branch, e.g. "v0.0.1" and then manually running the workflow for this branch. This could also be automated but I think keeping it manually controlled is a good way here. So the result would be that we have an always up to date "main" release and for whatever steps you seem "stable" release worthy, a
v<whatever>branch is created with it's ownv<whatever>release on the Releases page. How this could look can be seen here. Feel free to suggest how you want to handle releases and I'd be glad to change this PR accordingly :). - The MacOS build doesn't work due to not having a configured release profile? I've got only limited MacOS dev experience, as such maybe you can have a look at it @avdept ? An example of the occuring build error can be found here. Just reenable the MacOS job in the workflow file by uncommenting it to test it yourself if you'd like :).
- The Windows build has only been tested with Wine on Linux which successfully opened the application but wasn't able to play music. I don't know whether this is a Wine specific problem, will test on a native Windows when I find the time. If it's not Wine specific, it could be due to a missing
media_kit_lib_<windows>or whatever dependency in thepubspec.yaml. I'll try that when I get to it. - The Linux build is currently a raw binary. It would be possible to add a Flatpak or some other release type if wanted; probably with neglectable effort.
- Android & iOS missing; will be done in the next days
EDIT: Tried on native Windows, music doesn't work as with Wine on Linux. I'll work on it. Also, on Windows no Minimize/Maximize/Close buttons exist and the window is not movable via dragging; I'll try out the same migration from window_manager to the bitsdojo one which should fix that.
Hey, thanks for making this, big work!
I'm away these days, will check once get fully back
@Thogsit Btw for linux - does it packs with lib_mpv or that should be installed separately?
@Thogsit Btw for linux - does it packs with lib_mpv or that should be installed separately?
Good point, I've got mpv installed on my machine so everything works, but for the Pipeline I had to explicitly install mpv with apt; I should check out if and how it is required for the manual Linux build. Tracked with #86
I'm away for work this week, so won't check back on this until next week :)
@Thogsit Btw for linux - does it packs with lib_mpv or that should be installed separately?
Good point, I've got
mpvinstalled on my machine so everything works, but for the Pipeline I had to explicitly installmpvwith apt; I should check out if and how it is required for the manual Linux build. Tracked with #86I'm away for work this week, so won't check back on this until next week :)
Sorry, been away as well. Ill check PR over weekends
Finally I'm back from vacation and took a look at it again :).
I've now added information to the main README regarding Linux and Windows. Also, I added Android to the CI, so that on every push to main the Release section is automatically updated with a new version of the Android, Linux and Windows builds.
This should make this PR as far as I'm concerned ready for merging :+1:.
Finally I'm back from vacation and took a look at it again :).
I've now added information to the main
READMEregarding Linux and Windows. Also, I added Android to the CI, so that on every push to main the Release section is automatically updated with a new version of the Android, Linux and Windows builds.This should make this PR as far as I'm concerned ready for merging 👍.
Hey, welcome back!
And thanks for your work. I'll have a bit of time over weekends to check and merge it!