Commit Graph

39 Commits

Author SHA1 Message Date
7575ec6a3c fix(ci): set ultimate trust on imported signing key
All checks were successful
poll-upstream / check (push) Successful in 1s
GPG refuses to sign with a key that has unknown trust. Set the
imported key to ultimate trust after import.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 18:32:22 +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
bab7d9850c fix(ci): use fedora-43 runner label for all non-build jobs
All checks were successful
poll-upstream / check (push) Successful in 1s
Ensures package, publish, and poll-upstream jobs are picked up by
Fedora 43 runners specifically.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 15:32:40 +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
38e36e4547 fix(ci): use gpg-agent loopback instead of custom sign command
All checks were successful
poll-upstream / check (push) Successful in 1s
The custom %__gpg_sign_cmd macro with %{__plaintext_filename} is not
supported on modern rpm. Instead, configure gpg-agent for loopback
pinentry and let rpm use its default sign command.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 15:14:37 +03:00
1919e14032 fix(ci): move rpmmacros to template file
All checks were successful
poll-upstream / check (push) Successful in 1s
The heredoc with column-0 lines inside a YAML block scalar may
confuse Gitea's workflow parser. Move rpmmacros content to
rpm/rpmmacros as a template with sed substitution.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 14:54:48 +03:00
94d890b82e fix(ci): remove job-level concurrency group from publish
Gitea may not support matrix expressions in job-level concurrency
groups. The workflow-level concurrency group already prevents
parallel runs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 14:53:12 +03:00
ee693f638c fix(ci): revert runner array syntax unsupported by Gitea
Some checks failed
poll-upstream / check (push) Failing after 1s
Gitea 1.25 does not support array values in matrix includes for
runs-on, causing the dispatch API to return 500. Revert to a single
runner label.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 14:41:00 +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
0cb6a4f524 fix(ci): use heredoc for rpmmacros to avoid shell escaping issues
The echo-based approach was mangling rpm macro tokens like
%{__plaintext_filename}. Switch to a heredoc so the content is
written verbatim.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 14:25:57 +03:00
4160334bf1 fix(ci): remove duplicate gpg in sign command macro
All checks were successful
poll-upstream / check (push) Successful in 1s
%{__gpg} already expands to /usr/bin/gpg, so the extra "gpg" was
passed as a positional argument causing all flags to be ignored.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-26 13:48:30 +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
82a04c88dc fix(ci): flatten RPM artifacts before signing
All checks were successful
poll-upstream / check (push) Successful in 1s
Gitea's download-artifact does not support merge-multiple, so RPMs
end up in subdirectories. Add a step to move them into the expected
flat directory before publish-repo.sh runs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 17:05:55 +03:00
75806fd1d9 chore: see if we can squeeze a few more cycles out of the builders 2026-04-24 17:02:52 +03:00
cdf6cdf1e6 docs: add repo readme with setup and usage instructions
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 15:05:44 +03:00
937e72bff6 fix(ci): remove stale .rpmmacros before rpmbuild in package job
All checks were successful
poll-upstream / check (push) Successful in 1s
The shared runner retains ~/.rpmmacros from previous publish jobs,
causing a spurious "Macro %_gpg_name has empty body" error during
rpmbuild in the package job.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 14:59:42 +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
e6c2b4e402 fix(ci): prevent poll-upstream from cancelling in-progress builds
All checks were successful
poll-upstream / check (push) Successful in 1s
Poll was firing every minute, dispatching new builds that cancelled
the running one. Restore 15-minute cron interval and add shared
concurrency group across both workflows so new polls queue instead
of re-dispatching.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 13:15:34 +03:00
f2ed86bb4d feat(ci): add CARGO_BUILD_JOBS and NVCC_THREADS to build matrix
All checks were successful
poll-upstream / check (push) Successful in 2s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 12:56:25 +03:00
146af6a976 fix (ci): will have to debug this later
All checks were successful
poll-upstream / check (push) Successful in 1s
2026-04-24 12:48:24 +03:00
40cd1a4e76 feat(ci): add NCCL dependency check with install instructions
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-24 12:38:07 +03:00
8f0bf3663e fix(ci): add rustup install/update step to build job
All checks were successful
poll-upstream / check (push) Successful in 1s
The gitea runner user on beast doesn't have Rust installed.
Reuses existing installation on subsequent runs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 11:44:42 +03:00
f4e68d41ae refactor(ci): replace dynamic matrix with static includes
All checks were successful
poll-upstream / check (push) Successful in 1s
Gitea Actions doesn't support fromJSON in matrix strategies
(expressions are evaluated before dependent jobs run). Move
flavour definitions into the workflow as static matrix includes
and remove flavours.yml.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 11:41:01 +03:00
2785395850 fix(ci): use python yq syntax for flavours parsing
All checks were successful
poll-upstream / check (push) Successful in 1s
The runners have python yq (jq wrapper), not mikefarah/yq (Go).
Replace -o=json -I=0 with --compact-output which is the jq equivalent.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 11:28:12 +03:00
adb1683a54 chore(ci): remove debug logging from poll-upstream dispatch
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-24 11:22:07 +03:00
ead42ae7b4 fix(ci): use full ref format and Content-Type header for dispatch
All checks were successful
poll-upstream / check (push) Successful in 1s
Gitea API requires refs/heads/main (not just main) and
Content-Type: application/json for the dispatch endpoint.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 11:20:06 +03:00
09ca33e0b6 debug(ci): log dispatch URL and response body for 422 diagnosis
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-24 11:12:16 +03:00
8cffedd2a9 fix(ci): use PAT for workflow dispatch in poll-upstream
Some checks failed
poll-upstream / check (push) Failing after 1s
The automatic GITEA_TOKEN cannot trigger other workflows. Use a
dedicated DISPATCH_TOKEN secret (personal access token with
repository read/write scope) instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 11:10:29 +03:00
95dec3d652 fix(ci): grant actions write permission to poll-upstream workflow
Some checks failed
poll-upstream / check (push) Failing after 1s
The automatic GITEA_TOKEN lacks actions:write by default, causing
a 422 when dispatching the build-release workflow.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 10:54:09 +03:00
c691687d81 fix(ci): remove --fail from curl in poll-upstream version check
Some checks failed
poll-upstream / check (push) Failing after 1s
--fail causes curl to exit 22 on HTTP errors before --write-out can
capture the response code, breaking the 200/404 branching logic.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 10:49:24 +03:00
429bcbccb6 fix: evaluate http response code for package existence
Some checks failed
poll-upstream / check (push) Failing after 1s
2026-04-24 10:45:27 +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
4025171c75 fix: package name 2026-04-24 09:53:34 +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