feat: add prerelease RPM builds from upstream main branch
Some checks failed
deploy-ui / build-and-deploy (push) Has been cancelled

Poll upstream main branch HEAD alongside release tags. When a new commit
is detected, build and publish prerelease RPMs to a separate unstable
repo at rpm.lair.cafe/fedora/$releasever/$basearch/unstable/.

RPM versioning uses the Fedora snapshot convention (e.g.
0.8.1-0.1.20260511git1a2b3c4.fc43) so stable releases automatically
supersede any installed prerelease.

- RPM spec: conditional Release field via mistralrs_prerelease define
- poll-upstream.yml: new check-prerelease job fetches main HEAD + Cargo.toml version
- build-prerelease.yml: new workflow for commit-based builds without --locked
- UI: fetch both stable/unstable manifests, show channel badges, add
  unstable repo setup instructions to home page

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-11 14:21:28 +03:00
parent fff56a626c
commit a79eafd70f
8 changed files with 423 additions and 25 deletions

View File

@@ -10,6 +10,13 @@ enabled=1
gpgcheck=1
gpgkey=${GPG_KEY_URL}`;
const UNSTABLE_REPO_FILE = `[lair-cafe-unstable]
name=lair.cafe RPM Repository (unstable)
baseurl=https://rpm.lair.cafe/fedora/$releasever/$basearch/unstable/
enabled=0
gpgcheck=1
gpgkey=${GPG_KEY_URL}`;
export function Home() {
return (
<>
@@ -43,6 +50,50 @@ export function Home() {
</Card.Body>
</Card>
</Col>
<Col lg={12}>
<Card>
<Card.Body>
<Card.Title>Unstable (prerelease) packages</Card.Title>
<p>
Unstable packages are built automatically from the latest
upstream <code>main</code> branch commit. They use the
next release version from <code>Cargo.toml</code> with a
prerelease suffix (e.g.{" "}
<code>0.8.1-0.1.20260511git1a2b3c4</code>). When the
upstream version is officially released, the stable package
will automatically supersede any installed prerelease.
</p>
<h6 className="mt-4">Add the unstable repository</h6>
<p className="text-body-secondary">
The unstable repo is disabled by default. Add it alongside the
stable repo:
</p>
<CodeBlock language="bash">
{`sudo dnf config-manager addrepo --from-repofile=/dev/stdin <<'EOF'\n${UNSTABLE_REPO_FILE}\nEOF`}
</CodeBlock>
<h6 className="mt-4">
Install or update from unstable
</h6>
<CodeBlock language="bash">
{`sudo dnf --enablerepo=lair-cafe-unstable install mistralrs-cuda13`}
</CodeBlock>
<h6 className="mt-4">
Pin to stable
</h6>
<p className="text-body-secondary">
If you have the unstable repo enabled and want to stay on
stable releases, exclude prerelease versions:
</p>
<CodeBlock language="bash">
{`sudo dnf --disablerepo=lair-cafe-unstable update mistralrs-cuda13`}
</CodeBlock>
</Card.Body>
</Card>
</Col>
</Row>
</>
);