Skip to content

Split release artifacts into a dedicated Hydra jobset - #15640

Merged
Mic92 merged 2 commits into
NixOS:masterfrom
Mic92:release-workflow
Apr 21, 2026
Merged

Split release artifacts into a dedicated Hydra jobset#15640
Mic92 merged 2 commits into
NixOS:masterfrom
Mic92:release-workflow

Conversation

@Mic92

@Mic92 Mic92 commented Apr 8, 2026

Copy link
Copy Markdown
Member

Cutting a release currently blocks on the full hydraJobs evaluation (~900 builds including sanitizers, clang-tidy, static, NixOS VM and installer tests), even though upload-release only consumes ~25 of them. On recent maintenance evals the long CI tail and darwin queue depth pushed the wait into the multi-day range while the actual artifacts were ready within an hour.

I envision that for normal releases we can still wait until CI is finished, but for security releases I would like to have a faster process that involves testing all criticial jobs in private upfront and than only have hydra produce release-critical assets.

@Mic92
Mic92 requested a review from edolstra as a code owner April 8, 2026 08:58
Comment thread maintainers/release-process.md Outdated
Cutting a release currently blocks on the full hydraJobs evaluation
(~900 builds including sanitizers, clang-tidy, static, NixOS VM and
installer tests), even though upload-release only consumes ~25 of them.
On recent maintenance evals the long CI tail and darwin queue depth
pushed the wait into the multi-day range while the actual artifacts were
ready within an hour.

Hydra hard-codes flake jobsets to outputs.hydraJobs, so the subset is
exposed through a legacy jobset expression that re-enters the flake via
builtins.getFlake on the locked GitHub ref. Going through the ref rather
than the checked-out store path preserves rev/lastModified and thus the
version suffix, keeping derivations bit-identical to the flake jobset so
both share builds through the binary cache. A release aggregate job
provides a single gating signal for upload-release.

The release process now creates a release-$VERSION jobset alongside
maintenance-$VERSION and waits on that instead of the full matrix.

Requires adding https://releases.nixos.org/ to allowed-uris on
hydra.nixos.org, since the locked nixpkgs input is a tarball from there
and legacy jobsets run under restrict-eval.
@Mic92
Mic92 force-pushed the release-workflow branch from b63fdf1 to f4bde1f Compare April 8, 2026 09:16
@Ericson2314 Ericson2314 added the idea approved The given proposal has been discussed and approved by the Nix team. An implementation is welcome. label Apr 8, 2026

@Eveeifyeve Eveeifyeve left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see no issue with this

Comment thread packaging/release-jobs.nix Outdated
Comment thread packaging/release-jobs.nix Outdated
Avoids drifting from upload-release.pl when new cross targets such as
x86_64-unknown-freebsd are added to fallback-paths. Also drop the
reference to a not-yet-existing Python rewrite of the upload script.

Addresses review comments on NixOS#15640.
@Mic92

Mic92 commented Apr 20, 2026

Copy link
Copy Markdown
Member Author

@xokdvium it's live now: https://hydra.nixos.org/eval/1824635

@Mic92
Mic92 enabled auto-merge April 20, 2026 22:08

@xokdvium xokdvium left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems good

@Mic92
Mic92 added this pull request to the merge queue Apr 21, 2026
Merged via the queue into NixOS:master with commit b51d41a Apr 21, 2026
16 checks passed
@Mic92
Mic92 deleted the release-workflow branch April 21, 2026 10:42
Mic92 added a commit that referenced this pull request Apr 27, 2026
Avoids drifting from upload-release.pl when new cross targets such as
x86_64-unknown-freebsd are added to fallback-paths. Also drop the
reference to a not-yet-existing Python rewrite of the upload script.

Addresses review comments on #15640.

(cherry picked from commit e069dae)
Mic92 added a commit that referenced this pull request Apr 27, 2026
Avoids drifting from upload-release.pl when new cross targets such as
x86_64-unknown-freebsd are added to fallback-paths. Also drop the
reference to a not-yet-existing Python rewrite of the upload script.

Addresses review comments on #15640.

(cherry picked from commit e069dae)
Mic92 added a commit that referenced this pull request Apr 27, 2026
Avoids drifting from upload-release.pl when new cross targets such as
x86_64-unknown-freebsd are added to fallback-paths. Also drop the
reference to a not-yet-existing Python rewrite of the upload script.

Addresses review comments on #15640.

(cherry picked from commit e069dae)
Mic92 added a commit that referenced this pull request Apr 27, 2026
Avoids drifting from upload-release.pl when new cross targets such as
x86_64-unknown-freebsd are added to fallback-paths. Also drop the
reference to a not-yet-existing Python rewrite of the upload script.

Addresses review comments on #15640.

(cherry picked from commit e069dae)
Mic92 added a commit that referenced this pull request Apr 27, 2026
Avoids drifting from upload-release.pl when new cross targets such as
x86_64-unknown-freebsd are added to fallback-paths. Also drop the
reference to a not-yet-existing Python rewrite of the upload script.

Addresses review comments on #15640.

(cherry picked from commit e069dae)
Mic92 added a commit that referenced this pull request Apr 27, 2026
Avoids drifting from upload-release.pl when new cross targets such as
x86_64-unknown-freebsd are added to fallback-paths. Also drop the
reference to a not-yet-existing Python rewrite of the upload script.

Addresses review comments on #15640.

(cherry picked from commit e069dae)
Mic92 added a commit that referenced this pull request Apr 27, 2026
Avoids drifting from upload-release.pl when new cross targets such as
x86_64-unknown-freebsd are added to fallback-paths. Also drop the
reference to a not-yet-existing Python rewrite of the upload script.

Addresses review comments on #15640.

(cherry picked from commit e069dae)
@xokdvium xokdvium mentioned this pull request Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

idea approved The given proposal has been discussed and approved by the Nix team. An implementation is welcome.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants