Enhance CI Workflow: Automate .deb Package Build and Release for Multiple Distributions by hacksysteam · Pull Request #4427 · Genymobile/scrcpy (original) (raw)
Conversation
Overview
This pull request introduces enhancements to the CI/CD pipeline by automating the build process of .deb packages for scrcpy across multiple Linux distributions. The updated GitHub Actions workflow builds the packages and publishes them as assets to a GitHub release, streamlining the release process and ensuring consistent delivery of the latest builds to users.
Changes
- Implemented a matrix strategy in the GitHub Actions workflow to build
scrcpyfor Debian Bullseye, Bookworm, and Ubuntu Focal. - Configured caching for APT packages and Gradle dependencies to speed up the build process.
- Added steps to automatically create a GitHub release with the commit hash as a tag and upload the built
.debpackages to this release.
Testing
The updated workflow has been tested in a fork of the repository, where it successfully built .deb packages and published them to a release. The packages were then downloaded and tested in their respective distributions to confirm their integrity and functionality.
This still might need some more changes, feel free to comment.
Thanks
Thank you. That looks cool 👍
I really need to take the time to read the doc about GitHub actions (my CI knowledge is very limited). By the way, I would like to also build the Windows releases (just executing ./release.sh from the CI), and maybe to build macOS binaries too (later). There were other PR for that in the past, but IIRC there were always unsolved problems for me.
I have many things to do on my TODO list before that, but that would be great to publish .deb with scrvpy releases 👍
| - name: Create Release |
| if: env.release_id == '' |
| uses: ncipollo/release-action@v1 |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This adds a dependency from a "random" user in the process, doesn't it? Ditto below.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Github actions allow you to use community actions. The one you highlighted uses ncipollo/release-action@v1 to create a release.
You can check the release here: https://github.com/hacksysteam/scrcpy/releases
The workflow file was designed to just create 1 release per push, we can make changes and adapt this to the project requirements. I just tested the bookworm deb file and it works, both server and app are included in the same deb file.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll get it fixed.
rom1v mentioned this pull request
Looking forward to this PR being merged, I'm running Mint 21.3 (based on Ubuntu 22) and had a lot of issues with building due the ffmpeg/libavcodec version being very outdated - just forked this PR, added focal, started the action and now it works - thanks!
rom1v mentioned this pull request
@rom1v Kudos on merging #5306 but I do not see the deb files being built? It's much easier to use the deb file as we can include the dependencies information and it will be auto-downloaded and installed.
but I do not see the deb files being built
We could add deb files for the latest Ubuntu/Debian versions in addition.
The GitHub Action script from this PR would need to be adapted to:
- retrieve the server binary built for the other action
- be minimal (no unnecessary steps)
- do not depend on external actions
But if the static binary works well, it's maybe not necessary (a single version, and .deb would not offer much benefits since they would not auto-update).
What would be great is for the package to be provided upstream, but it's not possible anymore due to broken/obsolete android SDK packages in Debian: https://tracker.debian.org/pkg/scrcpy
It's much easier to use the deb file as we can include the dependencies information and it will be auto-downloaded and installed.
(The provided binary for Linux is static, so it does not depend on installing FFmpeg, SDL or libusb anymore.)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
[ Show hidden characters]({{ revealButtonHref }})