Skip to content

feat: add RPM/Fedora support with DNF repository#168

Open
seifzellaban wants to merge 19 commits into
jsgrrchg:mainfrom
seifzellaban:feat/rpm-fedora-support
Open

feat: add RPM/Fedora support with DNF repository#168
seifzellaban wants to merge 19 commits into
jsgrrchg:mainfrom
seifzellaban:feat/rpm-fedora-support

Conversation

@seifzellaban
Copy link
Copy Markdown
Contributor

See design doc: docs/superpowers/specs/2026-05-29-rpm-fedora-support-design.md

Summary

  • RPM packages: electron-builder now builds .rpm alongside .deb and .AppImage
  • DNF repository: metadata-only repo on gh-pages (binaries stay on GitHub Releases), with GPG-signed repomd.xml
  • CI integration: build, validate, sign, and validate-with-docker steps in the release workflow
  • Download table: release body shows Fedora/RHEL rows with RPM links and DNF setup instructions
  • Full validation: platform validation, release metadata checks, and staging tests all enforce RPM presence

Files changed

  • scripts/: 6 new files (dnf-repo-lib, build/sign/validate-dnf-repository, validate-linux-rpm-package), 5 modified (appcast-lib, electron-release-lib, platform-validation-lib, release-assets-lib, release-metadata-lib)
  • apps/desktop/: electron-builder config + staging + validation (3 modified, 1 new)
  • .github/workflows/release-desktop.yml: RPM/DNF CI pipeline
  • release/dnf/README.md: DNF usage docs

@jsgrrchg jsgrrchg marked this pull request as draft May 29, 2026 07:08
@jsgrrchg
Copy link
Copy Markdown
Owner

Hey, thanks this PR :) , it looks that is failing because it needs to specify author 'email' in the application package.json
It is required to set Linux .deb package maintainer. Or you can set maintainer in the custom linux options.

@seifzellaban seifzellaban force-pushed the feat/rpm-fedora-support branch from ed87382 to d1833d4 Compare May 29, 2026 11:42
@seifzellaban
Copy link
Copy Markdown
Contributor Author

Added "NeverWrite Maintainers jsgrrchg@users.noreply.github.com" to the RPM options, matching the existing .deb maintainer. Also added a test that asserts the RPM metadata is stable.

Copy link
Copy Markdown
Owner

jsgrrchg commented May 30, 2026

Hey @seifzellaban, thanks again for the RPM/Fedora groundwork here.

I reviewed the latest follow-up commits on the PR and pushed a few release-hardening fixes on top:

  • RPM packages are now signed before upload, and RPM validation requires a trusted package signature.
  • DNF repository metadata is now generated with createrepo_c from the actual signed RPM headers instead of handwritten primary.xml/filelists.xml metadata.
  • Public Fedora/RHEL install instructions no longer depend on dnf config-manager; they write /etc/yum.repos.d/neverwrite.repo directly.
  • The DNF validation path now does a real dnf install --downloadonly neverwrite check in CI.

Local validation passed with node --test scripts/*.test.mjs (58/58), syntax checks, workflow YAML parsing, and git diff --check. I could not run the real createrepo_c/rpm/rpmsign/Docker validation locally because those tools are not installed on this machine, so that part is covered by the GitHub Actions runner.

At the time I checked, Rust, Web Clipper, and validate were green; the desktop/release matrix jobs were still pending.

Give it a spin and let me know what you think ;)

@jsgrrchg jsgrrchg marked this pull request as ready for review May 30, 2026 12:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants