|
| 1 | +# Releasing hyperlight-unikraft |
| 2 | + |
| 3 | +All examples, kernels, and GHCR images share a single version derived |
| 4 | +from `host/Cargo.toml`. |
| 5 | + |
| 6 | +## Steps |
| 7 | + |
| 8 | +1. **Bump the version** — open a PR that updates `version` in |
| 9 | + `host/Cargo.toml` (e.g., `"0.1.0"` → `"0.2.0"`). Merge it to main. |
| 10 | + |
| 11 | +2. **Run the release workflow** — go to |
| 12 | + **Actions → Create release → Run workflow**. No input needed — the |
| 13 | + workflow reads the version from `Cargo.toml`. |
| 14 | + |
| 15 | +3. **What happens automatically:** |
| 16 | + - A `v<version>` git tag is created on main. |
| 17 | + - A GitHub Release is created with auto-generated notes. |
| 18 | + - The publish workflow is triggered, pushing all GHCR images with |
| 19 | + both `:latest` and `:v<version>` tags. |
| 20 | + |
| 21 | +## Versioning policy |
| 22 | + |
| 23 | +- New examples or language support → minor bump (0.1.0 → 0.2.0). |
| 24 | +- Bug fixes or documentation → patch bump (0.1.0 → 0.1.1). |
| 25 | +- Breaking API changes → major bump (0.x → 1.0.0, once stable). |
| 26 | + |
| 27 | +All images are republished on every release, even if unchanged. GHCR |
| 28 | +tags are idempotent, so this is harmless. |
| 29 | + |
| 30 | +## crates.io |
| 31 | + |
| 32 | +Publishing to crates.io is blocked until `hyperlight-host` with the |
| 33 | +`disk_snapshot_copy` APIs is available on crates.io (see [#27]). |
| 34 | +Once unblocked, a `cargo publish` step should be added to the release |
| 35 | +workflow. |
| 36 | + |
| 37 | +[#27]: https://github.com/hyperlight-dev/hyperlight-unikraft/issues/27 |
0 commit comments