21 Commits

Author SHA1 Message Date
10263e4a2b fix: support zstd-compressed repodata in packages.json generator
createrepo_c on Fedora 43 uses zstd compression by default. Detect
the file extension and use zstdcat for .zst files, gzip for .gz.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 13:30:52 +03:00
38a875d06b feat: add nvm setup script for CI runners
All checks were successful
poll-upstream / check (push) Successful in 1s
Installs nvm, Node.js LTS, and creates a stable symlink at
~/.nvm/default_bin for the systemd PATH so actions/checkout@v4
can find node without sourcing .bashrc.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 13:11:38 +03:00
7f9e857695 feat: add React UI for rpm.lair.cafe
Some checks failed
poll-upstream / check (push) Successful in 1s
deploy-ui / build-and-deploy (push) Failing after 19s
- Vite + React + SWC + TypeScript SPA with react-router and
  react-bootstrap
- Dark/light/system theme with Bootstrap 5.3 data-bs-theme
- Home page with repo setup instructions and copyable code blocks
- Package list and detail pages driven by packages.json
- Python script to generate packages.json from repodata XML
- Nginx config updated for SPA fallback, asset caching, removed
  autoindex
- New deploy-ui workflow triggered on ui/ or nginx config changes,
  requires runners with nvm label
- packages.json generation added to publish job after createrepo_c
- Runner setup docs for nvm and sequoia-sq added to readme

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 12:55:38 +03:00
65a265c095 refactor(ci): inline build steps, delete build-binary.sh
Replace build-binary.sh with discrete workflow steps: Build
mistralrs-server, Collect artifacts. Remove commented-out NCCL
check block.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 10:00:22 +03:00
ba5eec78f1 refactor(ci): inline publish steps, delete publish-repo.sh
All checks were successful
poll-upstream / check (push) Successful in 1s
Replace the monolithic publish-repo.sh with discrete workflow steps:
Sign RPMs, Set up SSH, Sync RPMs to repo, Update repo metadata.

Each step now has its own name in the CI UI, making failures
immediately identifiable. Removed 2>/dev/null from ssh-keyscan
which was silently hiding DNS resolution failures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 09:07:54 +03:00
e3c403e98b fix(ci): add progress markers to publish script for debugging
All checks were successful
poll-upstream / check (push) Successful in 1s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 08:49:53 +03:00
087c5d5524 fix(ci): add rpmmacros dump and explicit exit code capture for signing
All checks were successful
poll-upstream / check (push) Successful in 0s
Disable set -e around rpm --addsign to prevent silent exits and
capture the actual exit code and error output.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 08:27:07 +03:00
9f0116bb2b fix(ci): override rpm sign command to use gpg backend
All checks were successful
poll-upstream / check (push) Successful in 1s
Fedora 43 defaults to rpm-sequoia for signing which ignores the
imported gpg key. Set %__gpg_sign_cmd explicitly to force gpg-based
signing with loopback pinentry. Remove diagnostics.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 19:58:07 +03:00
3291f77fcd fix(ci): add gpg and rpmsign diagnostics to isolate signing failure
All checks were successful
poll-upstream / check (push) Successful in 1s
Test gpg signing directly, dump macro expansion, and use rpmsign
with --verbose to get more detail.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 19:34:44 +03:00
ecf38bb53f fix(ci): add diagnostics to signing step
All checks were successful
poll-upstream / check (push) Successful in 1s
Dump rpmmacros, gpg keys, and file permissions before signing to
debug the silent failure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 18:14:44 +03:00
93d442d270 fix(ci): capture rpm --addsign output to file for error reporting
All checks were successful
poll-upstream / check (push) Successful in 1s
Direct stdout/stderr capture may miss gpg subprocess output. Write
to a temp file and cat it on failure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 17:56:50 +03:00
33aa40ee85 fix(ci): surface rpm --addsign error output in CI logs
All checks were successful
poll-upstream / check (push) Successful in 1s
Capture stderr from rpm --addsign so the actual gpg error is visible
when signing fails.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 17:06:40 +03:00
6ffbde4c30 fix(ci): strip trailing slash from RPM_DIR to avoid double slashes
All checks were successful
poll-upstream / check (push) Successful in 1s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 16:55:30 +03:00
e902729ba4 fix(ci): remove rpm --checksig that requires root
All checks were successful
poll-upstream / check (push) Successful in 1s
The rpm keyring import needs root access which CI doesn't have.
Client-side verification on install is sufficient.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 16:11:19 +03:00
70ae2108ee fix(ci): import public key for checksig and force dist tag override
All checks were successful
poll-upstream / check (push) Successful in 1s
Import the GPG public key into rpm's keyring so rpm --checksig can
verify signatures. Also use --undefine dist before --define to ensure
the CLI value overrides the system macro on the build host.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 15:27:40 +03:00
f4e1008684 feat(ci): parameterize fedora version across pipeline
Add fedora_version to build, package, and publish matrices so the
pipeline can target multiple Fedora releases in parallel. Force the
dist tag via --define to ensure RPMs are stamped correctly regardless
of build host. Update poll-upstream to check all fedora/flavour
combinations before triggering a build.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 14:36:09 +03:00
0147e0fe32 fix(ci): configure gpg for non-interactive RPM signing
All checks were successful
poll-upstream / check (push) Successful in 1s
Add %__gpg_sign_cmd macro to ~/.rpmmacros with --batch, --no-tty, and
--pinentry-mode loopback so rpm --addsign works without a TTY in CI.

Also add signing progress output and post-sign verification to
publish-repo.sh for easier debugging.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 13:22:33 +03:00
8ceabed354 feat: add GPG key setup script and generalize nginx GPG key serving
All checks were successful
poll-upstream / check (push) Successful in 2s
Add script/setup/gpg.sh to generate a dedicated lair keyring with a
certify-only master key and a 1-year signing subkey, cross-signed by
both personal keys. The public key is synced to oolon as <short-id>.gpg.

Update nginx config to serve any .gpg file instead of a hardcoded
RPM-GPG-KEY-mistralrs path, supporting multiple keys as the repo grows.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 14:43:07 +03:00
a598048fd9 fix: nginx deployment syntax errors
Some checks failed
poll-upstream / check (push) Failing after 1s
2026-04-24 10:34:59 +03:00
c598165f2d refactor: restructure rpm repo path to distro/version/arch layout
Some checks failed
poll-upstream / check (push) Failing after 1s
Move from /var/www/rpm/mistralrs/fedora-43/x86_64/ to
/var/www/rpm/fedora/43/x86_64/ so the repo can host packages
from multiple projects under a conventional hierarchy.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 09:17:05 +03:00
3b1c6843d6 chore: init 2026-04-24 09:10:36 +03:00