Compare commits

..

1 commit

Author SHA1 Message Date
Tom Foster
af53ea5599 feat(ci): Add Fedora RPM package build workflow
Build and publish RPM packages for Fedora using rpkg and official
rust-packaging macros. Packages are automatically signed by Forgejo's
built-in package registry (introduced in v9.0).

Publishes packages to organised groups:
- continuwuity (binary): base group (stable/dev/branch-name)
- continuwuity-debuginfo: GROUP-debug
- continuwuity (source RPM): GROUP-src

Workflow triggers on pushes to relevant paths and version tags (v*).
Tagged releases use clean version numbers (v1.2.3 becomes 1.2.3-1)
while branch builds use sanitised branch name versioning.

Uses dnf builddep to install build dependencies directly from the
generated SRPM, ensuring consistency between CI and spec file without
duplication. This also prevents hiding packaging issues that could
occur with --nodeps fallbacks.
2025-09-06 16:52:26 +01:00
5 changed files with 51 additions and 14 deletions

View file

@ -2,12 +2,18 @@ name: sccache
description: | description: |
Install sccache for caching builds in GitHub Actions. Install sccache for caching builds in GitHub Actions.
inputs:
token:
description: 'A Github PAT'
required: false
runs: runs:
using: composite using: composite
steps: steps:
- name: Install sccache - name: Install sccache
uses: https://git.tomfos.tr/tom/sccache-action@v1 uses: https://github.com/mozilla-actions/sccache-action@v0.0.9
with:
token: ${{ inputs.token }}
- name: Configure sccache - name: Configure sccache
uses: https://github.com/actions/github-script@v7 uses: https://github.com/actions/github-script@v7
with: with:

View file

@ -88,9 +88,19 @@ runs:
# Shared toolchain cache across all Rust versions # Shared toolchain cache across all Rust versions
key: toolchain-${{ steps.runner-os.outputs.slug }} key: toolchain-${{ steps.runner-os.outputs.slug }}
- name: Debug GitHub token availability
shell: bash
run: |
if [ -z "${{ inputs.github-token }}" ]; then
echo "⚠️ No GitHub token provided - sccache will use fallback download method"
else
echo "✅ GitHub token provided for sccache"
fi
- name: Setup sccache - name: Setup sccache
uses: https://git.tomfos.tr/tom/sccache-action@v1 uses: https://github.com/mozilla-actions/sccache-action@v0.0.9
with:
token: ${{ inputs.github-token }}
- name: Cache build artifacts - name: Cache build artifacts
id: build-cache id: build-cache

View file

@ -68,7 +68,9 @@ jobs:
rust-deps-fedora${{ steps.fedora.outputs.version }}- rust-deps-fedora${{ steps.fedora.outputs.version }}-
- name: Setup sccache - name: Setup sccache
uses: https://git.tomfos.tr/tom/sccache-action@v1 uses: https://github.com/mozilla-actions/sccache-action@v0.0.9
with:
token: ${{ secrets.GH_PUBLIC_RO }}
- name: Configure sccache environment - name: Configure sccache environment
run: | run: |
@ -82,11 +84,14 @@ jobs:
- name: Install base RPM tools - name: Install base RPM tools
run: | run: |
dnf install -y --setopt=keepcache=1 \ dnf install -y --setopt=keepcache=1 \
fedora-packager \ wget \
python3-pip \ rpm-build \
rpm-sign \ rpm-sign \
rpmdevtools \
rpkg \ rpkg \
wget cargo-rpm-macros \
systemd-rpm-macros \
python3-pip
- name: Setup build environment and build SRPM - name: Setup build environment and build SRPM
run: | run: |

20
flake.lock generated
View file

@ -513,6 +513,23 @@
"type": "github" "type": "github"
} }
}, },
"rocksdb": {
"flake": false,
"locked": {
"lastModified": 1753385396,
"narHash": "sha256-/Hvy1yTH/0D5aa7bc+/uqFugCQq4InTdwlRw88vA5IY=",
"ref": "10.4.fb",
"rev": "28d4b7276c16ed3e28af1bd96162d6442ce25923",
"revCount": 13318,
"type": "git",
"url": "https://forgejo.ellis.link/continuwuation/rocksdb"
},
"original": {
"ref": "10.4.fb",
"type": "git",
"url": "https://forgejo.ellis.link/continuwuation/rocksdb"
}
},
"root": { "root": {
"inputs": { "inputs": {
"attic": "attic", "attic": "attic",
@ -522,7 +539,8 @@
"flake-compat": "flake-compat_3", "flake-compat": "flake-compat_3",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nix-filter": "nix-filter", "nix-filter": "nix-filter",
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_5",
"rocksdb": "rocksdb"
} }
}, },
"rust-analyzer-src": { "rust-analyzer-src": {

View file

@ -16,6 +16,10 @@
flake-utils.url = "github:numtide/flake-utils?ref=main"; flake-utils.url = "github:numtide/flake-utils?ref=main";
nix-filter.url = "github:numtide/nix-filter?ref=main"; nix-filter.url = "github:numtide/nix-filter?ref=main";
nixpkgs.url = "github:NixOS/nixpkgs?ref=nixpkgs-unstable"; nixpkgs.url = "github:NixOS/nixpkgs?ref=nixpkgs-unstable";
rocksdb = {
url = "git+https://forgejo.ellis.link/continuwuation/rocksdb?ref=10.4.fb";
flake = false;
};
}; };
outputs = outputs =
@ -61,13 +65,7 @@
inherit (self) liburing; inherit (self) liburing;
}).overrideAttrs }).overrideAttrs
(old: { (old: {
src = pkgsHost.fetchFromGitea { src = inputs.rocksdb;
domain = "forgejo.ellis.link";
owner = "continuwuation";
repo = "rocksdb";
rev = "10.4.fb";
sha256 = "sha256-/Hvy1yTH/0D5aa7bc+/uqFugCQq4InTdwlRw88vA5IY=";
};
version = "v10.4.fb"; version = "v10.4.fb";
cmakeFlags = cmakeFlags =
pkgs.lib.subtractLists [ pkgs.lib.subtractLists [