mte/unikernel/duniverse/mirage/RELEASE.md
2025-11-11 02:07:51 +01:00

57 lines
2.4 KiB
Markdown

## Tips on making a new release for MirageOS
This document aims to streamline the release process for
MirageOS. It's a living document, evolving with each
release. Contributions to enhance this guide are highly encouraged!
Since opam and CI systems use the latest version number released to
opam-repository, there's some caution needed and there'll be CI runs that are
not successful (since the CI doesn't yet know about your new version number).
## Before the release
- Check that `let min = "xxx" and max = "yyy" in` `lib/mirage.ml`
is a range that contains the new release number.
- Rename `## Unreleased` to `## vXXX (YYY-MM-DD)` in CHANGES.md. Open a
Pull Request (PR) with these changes to begin the release process.
and open a PR
### Version bounds
Mirage generates OCaml code, including device initialization code (usually
named "connect"). To avoid breakage of configured unikernels, package
dependencies are generated as well, with lower and upper bounds.
These bounds need to change:
- if there's a new release of a package (and the "connect" function didn't
change), adjust the upper bound only,
- the code generation in mirage targets a new release of the package, adjust the
lower bound and the upper bound.
### Release `mirage` and `mirage-runtime` to opam-repository
- Tag with `dune-release tag`
- Release to opam-repository with `dune-release`
- Backport packaging fixes in the repo (usually lower-bounds).
Ideally this should be done before submitting to opam-repository but
right now it's not super convenient to do so.
### Update `mirage-skeleton`
- Verify that all changes in the main branch are correctly ported to
the dev branch and vice versa. This step ensures that both branches
reflect the latest, stable changes.
- When complete, force-push dev to become the new main, solidifying
these updates.
- If there are breaking changes, and mirage-skeleton unikernels needed
adjustments, also adjust the first line in config.ml to reflect that:
`(* mirage >= planned_release & < planned_release+1 *)`
- If there are no breaking changes, ensure that mirage-skeleton unikernels
have a good upper bound `(* mirage < planned_release+1 *)`
### Update `mirage-www`
- Confirm that the MirageOS website builds successfully with the newly
released version. To facilitate this, update the `mirageio.opam.template`
pins to test against the new version ahead of the official release.