feat(ci): Add Fedora RPM package build workflow

Implement automated RPM package building using rpkg-util in CI, publishing
to Forgejo's native RPM registry with three channels: stable (tags), dev
(main branch), and testing (feature branches).

Packages include branch-specific version suffixes to avoid registry conflicts.
Users can configure dnf repositories for automatic updates or directly install
specific builds. The workflow builds on all branches, uploads CI artifacts,
and publishes to the appropriate package registry channel.
This commit is contained in:
Tom Foster 2025-08-28 22:51:37 +01:00
commit 18e3967177
4 changed files with 547 additions and 5 deletions

186
docs/deploying/fedora.md Normal file
View file

@ -0,0 +1,186 @@
# RPM Installation Guide
Continuwuity is available as RPM packages for Fedora, RHEL, and compatible distributions.
## Quick install (stable)
For the latest stable version from release tags:
```bash
# Add the Continuwuity repository
sudo dnf config-manager --add-repo https://forgejo.ellis.link/api/packages/continuwuation/rpm/stable/continuwuation.repo
# Install Continuwuity
sudo dnf install continuwuity
# Enable automatic updates (optional)
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
```
## Development builds
For development builds from the main branch:
```bash
# Add the dev repository
sudo dnf config-manager --add-repo https://forgejo.ellis.link/api/packages/continuwuation/rpm/dev/continuwuation.repo
# Install Continuwuity
sudo dnf install continuwuity
```
## Testing builds
For testing builds from feature branches:
```bash
# Add the testing repository
sudo dnf config-manager --add-repo https://forgejo.ellis.link/api/packages/continuwuation/rpm/testing/continuwuation.repo
# Install Continuwuity
sudo dnf install continuwuity
```
## Direct package installation
To install a specific version without adding the repository:
```bash
# Latest stable release
sudo dnf install https://forgejo.ellis.link/api/packages/continuwuation/rpm/stable/continuwuity
# Latest development build (main branch)
sudo dnf install https://forgejo.ellis.link/api/packages/continuwuation/rpm/dev/continuwuity
# Latest testing build (feature branches)
sudo dnf install https://forgejo.ellis.link/api/packages/continuwuation/rpm/testing/continuwuity
```
## Managing automatic updates
### Option 1: DNF Automatic (recommended)
```bash
# Install dnf-automatic
sudo dnf install dnf-automatic
# Configure update policy
sudo nano /etc/dnf/automatic.conf
# Set: apply_updates = yes
# Enable the service
sudo systemctl enable --now dnf-automatic.timer
```
### Option 2: Manual updates
```bash
# Check for updates
sudo dnf check-update continuwuity
# Update to latest version
sudo dnf update continuwuity
```
## Switching between channels
```bash
# Disable current repository
sudo dnf config-manager --set-disabled continuwuation-stable
# or
sudo dnf config-manager --set-disabled continuwuation-dev
# or
sudo dnf config-manager --set-disabled continuwuation-testing
# Enable desired repository
sudo dnf config-manager --set-enabled continuwuation-stable
# or
sudo dnf config-manager --set-enabled continuwuation-dev
# or
sudo dnf config-manager --set-enabled continuwuation-testing
# Update to the new channel's version
sudo dnf update continuwuity
```
## Verifying installation
```bash
# Check installed version
rpm -q continuwuity
# View package information
rpm -qi continuwuity
# List installed files
rpm -ql continuwuity
# Verify package integrity
rpm -V continuwuity
```
## Systemd service management
Continuwuity includes a systemd service file:
```bash
# Start the service
sudo systemctl start conduwuit
# Enable on boot
sudo systemctl enable conduwuit
# Check status
sudo systemctl status conduwuit
# View logs
sudo journalctl -u conduwuit -f
```
## Uninstallation
```bash
# Stop and disable the service
sudo systemctl stop conduwuit
sudo systemctl disable conduwuit
# Remove the package
sudo dnf remove continuwuity
# Remove the repository (optional)
sudo rm /etc/yum.repos.d/continuwuation-*.repo
```
## Troubleshooting
### GPG key issues
If you encounter GPG key errors, you can temporarily disable GPG checking:
```bash
sudo dnf --nogpgcheck install continuwuity
```
### Repository metadata issues
Clear and rebuild the cache:
```bash
sudo dnf clean all
sudo dnf makecache
```
### Finding specific versions
List all available versions:
```bash
dnf --showduplicates list continuwuity
```
Install a specific version:
```bash
sudo dnf install continuwuity-<version>
```