Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

releng tools should be able to pin a Helios version #7332

Open
jclulow opened this issue Jan 10, 2025 · 1 comment
Open

releng tools should be able to pin a Helios version #7332

jclulow opened this issue Jan 10, 2025 · 1 comment

Comments

@jclulow
Copy link
Collaborator

jclulow commented Jan 10, 2025

Under ordinary circumstances, when Omicron images are built, we use whatever the current version of Helios packages and tools is available. This means we're generally testing new changes with current OS bits automatically. This does, however, mean that images built this way are not automatically reproducible (i.e., one would need to pick apart a prior image to obtain the exact Helios version included in it, to then be able to reproduce it).

As part of the release engineering process for Omicron, we create a branch for a given release version. We then push a commit onto that branch that pins the version of Helios that was contemporary with the base Omicron commit in the release. This makes a given Omicron release commit reproducible with respect to the OS packages it includes. This pinning is in two parts:

  • we pin the commit of oxidecomputer/helios.git that we use to obtain the helios-build tool
  • we add an extra dependency on a release version-specific incorporation package (see Constraints and Freezing in pkg(7) for more discussion) which then constrains the versions of all of the binary packages included in the image from the IPS repository

Today, we achieve this by doctoring the source for the releng tool; e.g., for V12:

  • for rc0, 020fde1 added the base change that forces the tool to use the particular bits
  • for rc1, 3a2ed5e updated the pins because we needed an OS backport to fix an issue

I think it would be best if these two details could come from some manifest file that is stored in the repository. On the main branch it would specify no pinning, and then as part of release engineering we could just push an update to the file itself. People could also then use this facility as part of building test images for various changes.

@jclulow
Copy link
Collaborator Author

jclulow commented Jan 10, 2025

NOTE: We probably shouldn't put this file in the top-level of the repository; see #3350 for more details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant