feat(ci): Add Fedora RPM package build workflow

Building on the Fedora packaging files from #950, this adds a CI workflow
to automatically build RPM packages for Fedora distributions.

The workflow:
- Builds both binary and debug RPMs using rpkg
- Tests package installation in the CI environment
- Publishes packages to Forgejo's RPM registry
- Uploads artifacts for easy download

Thanks to ginger for providing the initial Fedora build files that made
this CI pipeline possible.
This commit is contained in:
Tom Foster 2025-08-28 22:51:37 +01:00
commit 9c374a5483
4 changed files with 523 additions and 5 deletions

View file

@ -1,6 +1,5 @@
# This should be run using rpkg-util: https://docs.pagure.org/rpkg-util
# This should be run using rpkg: https://docs.pagure.org/rpkg
# it requires Internet access and is not suitable for Fedora main repos
# TODO: rpkg-util is no longer maintained, find a replacement
Name: continuwuity
Version: {{{ git_repo_version }}}
@ -38,7 +37,7 @@ sed -i 's/^offline = true$//' .cargo/config.toml
%cargo_build
# Here's the one legally required mystery incantation in this file.
# Some of our dependencies have source files which are (for some reason) marked as excutable.
# Some of our dependencies have source files which are (for some reason) marked as executable.
# Files in .cargo/registry/ are copied into /usr/src/ by the debuginfo machinery
# at the end of the build step, and then the BRP shebang mangling script checks
# the entire buildroot to find executable files, and fails the build because
@ -46,7 +45,7 @@ sed -i 's/^offline = true$//' .cargo/config.toml
# So we have to clear the executable bit on all of them before that happens.
find .cargo/registry/ -executable -name "*.rs" -exec chmod -x {} +
# TODO: this fails currently because it's forced to run in offline mode
# TODO: this fails currently because it's forced to run in offline mode
# {cargo_license -- --no-dev} > LICENSE.dependencies
%install
@ -77,4 +76,4 @@ install -Dpm0644 conduwuit-example.toml %{buildroot}%{_sysconfdir}/conduwuit/con
%systemd_postun_with_restart conduwuit.service
%changelog
{{{ git_repo_changelog }}}
{{{ git_repo_changelog }}}