Release Process Proposal
Goal: avoid committing binaries to this repo.
Proposal: Use github releases as the provider for binary artifacts. Use bazel
to reference github release archive URLs to access the necessary binary
artifacts.
Pre-work
-
Allow attaching additional bazel repos into the provisioning extensions repo.
These additional repos get symlinked into a hub repo named
@provisioning_exts_extra. These additional repos are:
presign_perso
presign_rom_ext
perso_release
rom_ext_release
The URIs and names of these additional repos are controlled by
//skus/extras.json.
Release Process
- Tag the codebase:
ROM_EXT_BUILD_20260513_rc00
PERSO_BUILD_20260513_rc00
- Build the ROM_EXT or perso binaries at the tag. Publish the resulting
archives as a github release. Note: the release archive contains both
presigning binaries and digests.
- Create a branch at the tag and update the
presign_ member(s) of
extras.json. Push the branch.
- Perform the offline signing ceremony and sign the digests in the presigning
archive.
- Create a PR with the signatures from the offline ceremony. Submit that PR to
the branch.
- Build signed binaries from the the release branch using the presigning
binaries from the archive. Publish the signed binaries as a github release.
- Update the
release member(s) of extras.json. Tag the branch with a
release tag (e.g. ROM_EXT_RELEASE_20260513_rc00). Push the branch and
tags.
- Merge the changes to
extras.json from the branch into the main branch.
Automation
Add github actions to assist with automating the two halves of the release
process.
- Pre-signing automation: Steps 1..3.
- Post-signing release: Steps 5..8.
Potential Problems
The opentitan codebase currently uses a repository extension to hook the
ot-sku codebase into the opentitan codebase (as @provisioning_exts). The
opentitan repo doesn't watch the extras.json file in the downstream codebase.
Updates to extras.json require refreshing the repository mapping to allow the
hub repo @provisioning_exts_extra to see the updates.
TODO: Investigate making the @provisioning_exts repo a bazel_dep and use the
commandline --override_repository=provisioning_exts=<path> to connect ot-sku
into the main repo. Build the hub repository as an extension inside of the
ot-sku repo. Does this resolve the issue?
Release Process Proposal
Goal: avoid committing binaries to this repo.
Proposal: Use github releases as the provider for binary artifacts. Use bazel
to reference github release archive URLs to access the necessary binary
artifacts.
Pre-work
Allow attaching additional bazel repos into the provisioning extensions repo.
These additional repos get symlinked into a hub repo named
@provisioning_exts_extra. These additional repos are:presign_persopresign_rom_extperso_releaserom_ext_releaseThe URIs and names of these additional repos are controlled by
//skus/extras.json.Release Process
ROM_EXT_BUILD_20260513_rc00PERSO_BUILD_20260513_rc00archives as a github release. Note: the release archive contains both
presigning binaries and digests.
presign_member(s) ofextras.json. Push the branch.archive.
the branch.
binaries from the archive. Publish the signed binaries as a github release.
releasemember(s) ofextras.json. Tag the branch with arelease tag (e.g.
ROM_EXT_RELEASE_20260513_rc00). Push the branch andtags.
extras.jsonfrom the branch into themainbranch.Automation
Add github actions to assist with automating the two halves of the release
process.
Potential Problems
The opentitan codebase currently uses a repository extension to hook the
ot-skucodebase into the opentitan codebase (as@provisioning_exts). Theopentitan repo doesn't watch the
extras.jsonfile in the downstream codebase.Updates to
extras.jsonrequire refreshing the repository mapping to allow thehub repo
@provisioning_exts_extrato see the updates.TODO: Investigate making the
@provisioning_extsrepo abazel_depand use thecommandline
--override_repository=provisioning_exts=<path>to connectot-skuinto the main repo. Build the hub repository as an extension inside of the
ot-skurepo. Does this resolve the issue?