release triggering for supported and ready downstreams and fix CI on forks - #2494
release triggering for supported and ready downstreams and fix CI on forks#2494jplomas wants to merge 3 commits into
Conversation
Proof-in-doing of the concept discussed in the liboqs status meeting Tue 14 Jul 2026. A release of liboqs triggers release(s) of downstream language wrappers. This PR is in parallel with the PR on liboqs-go which contains the release job triggered: open-quantum-safe/liboqs-go#55 A release job is only _dispatched_ on liboqs release, so there is no release-blocking failures if the downstream repo is not ready or is breaking. However, if any necessary changes are in situ, it will allow the language wrapper release to be made at the same time as the main liboqs release. The `downstream-release` workflow is renamed `downstream-release-tests` to be more accurate with the “readiness” functionality, while `downstream-release` now does the actual releasing downstream is its name implies. Signed-off-by: JP Lomas <jp@theqrl.org>
Guard downstream dispatch jobs with a repository check so they skip in forks where the release secrets are absent. Avoid shell injection by passing github refs and tokens through env vars instead of interpolating them into run lines, and pin the release-tests trigger script checkout to the main ref rather than the caller branch. Pass the release tag to downstream-release.yml as an explicit required input, validate it against a semver pattern before dispatching, and tighten the HTTP status checks to exact 204 matches. Signed-off-by: JP Lomas <jp@theqrl.org>
Signed-off-by: JP Lomas <jp@theqrl.org>
|
The job name renaming makes perfect sense: One to test readiness (1), one to do release(s) (2). I wonder though, whether it wouldn't be sensible to first have automated readiness tests for all downstreams before having automated releases -- or do I misunderstand the logic of this PR to be (1) for |
|
The status quo of downstream readiness is relatively maintained: (1) is for PR authors to see if their changes will break downstream, (2) is for release managers to automatically release downstream which are ready or those which do not break. The errors for both (1) and (2) surface in the affected downstream repository. This PR is minimal -- (1) for From the status meeting, a summary (which might be my misinterpretation) is that downstream readiness cannot slow down a liboqs release. The work regarding #2474 and #2489 aligns more with the:
From a "fresh look" perspective, I think I would favour defining critical (supported) downstreams, and building their |
I'd personally also favour that from the perspective of being able to more easily/quickly do releases. But this would mean very (re)active downstream maintenance (which doesn't exist) and substantially higher CI costs (contradicting https://github.com/open-quantum-safe/tsc/blob/main/guidelines/ci_usage.md). So what about this compromise: Run downstream release readiness tests on all "critical" downstreams not at push but only at a merge highlighting problems thus possibly unearthed (and not discovered in PR review) in a (newly, automatically generated) issue (instead of blocking/failing the PR)? |
|
That would seem a reasonable compromise. Notably, the "pull from downstream and test in liboqs CI" is different from the approach in #2474 |
Proof-in-doing of the concept discussed in the liboqs status meeting Tue 14 Jul 2026: the uses liboqs-go as an example.
A release of
liboqstriggers release(s) of [tested and ready] downstream language wrappers.This PR is in parallel with the PR on
liboqs-go, which contains the release job triggered: open-quantum-safe/liboqs-go#55A release job is only dispatched on
liboqsrelease, so there are no release-blocking failures if the downstream repo is not ready or is breaking. However, if any necessary changes are in situ, it will allow the language wrapper release to be made at the same time as the main liboqs release.The
downstream-releaseworkflow is renameddownstream-release-teststo better reflect the “readiness” functionality, whiledownstream-releasenow handles the actual downstream release, as its name implies.Also fixes a longstanding issue preventing all CI passing on forks: there is now a repository check to skip downstream dispatches where repository secrets are absent.
Claude assistance with greps and hash pins; code review by corerabbit.ai
Motivation:
liboqs-go wrapper releases stalled between 0.10 and 0.15, though only the latter release contained any breaking changes. Similar CI changes could rapidly speed up the deployment of other language wrappers.