Enhance CI Workflow: Automate .deb Package Build and Release for Multiple Distributions by hacksysteam · Pull Request #4427 · Genymobile/scrcpy (original) (raw)

Conversation

@hacksysteam

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

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

@hacksysteam

@rom1v

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 👍

rom1v

- 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 rom1v mentioned this pull request

Dec 3, 2023

@hacksysteam

@hacksysteam

@1fexd

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 rom1v mentioned this pull request

Sep 18, 2024

@hacksysteam

@hacksysteam

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

@rom1v

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:

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 }})