JellyBoxPlayer icon indicating copy to clipboard operation
JellyBoxPlayer copied to clipboard

ci(build): Add Build And Release Pipeline

Open Thogsit opened this issue 1 year ago • 6 comments

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 own v<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 the pubspec.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.

Thogsit avatar Sep 03 '24 14:09 Thogsit

Hey, thanks for making this, big work!

I'm away these days, will check once get fully back

avdept avatar Sep 06 '24 09:09 avdept

@Thogsit Btw for linux - does it packs with lib_mpv or that should be installed separately?

avdept avatar Sep 06 '24 09:09 avdept

@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 avatar Sep 09 '24 10:09 Thogsit

@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 :)

Sorry, been away as well. Ill check PR over weekends

avdept avatar Sep 19 '24 13:09 avdept

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:.

Thogsit avatar Oct 04 '24 09:10 Thogsit

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 👍.

Hey, welcome back!

And thanks for your work. I'll have a bit of time over weekends to check and merge it!

avdept avatar Oct 09 '24 12:10 avdept