diff --git a/docs/deployment-and-usage.md b/docs/deployment-and-usage.md index 6999b52..9727aa4 100644 --- a/docs/deployment-and-usage.md +++ b/docs/deployment-and-usage.md @@ -259,6 +259,28 @@ Generated protobuf Python bindings are committed in each consumer with the exact `archive-control-proto` tag/commit recorded. Release order is proto, control consumer, client consumer, E2E, then image publication. +### Reproducible multi-platform Buildx lifecycle + +The named Buildx builders are local acceleration/cache only; they are not a +deployment dependency and can be removed after publication. To create a fresh +builder, verify its platforms, publish a release, and remove it afterwards: + +```bash +docker buildx create --name archive-control-release --driver docker-container --use +docker buildx inspect --bootstrap +docker buildx build --platform linux/amd64,linux/arm64 \ + --tag sodium/archive-clients:vX.Y.Z --push . +docker buildx rm archive-control-release +``` + +`docker buildx inspect` must list both `linux/amd64` and `linux/arm64` before +publishing. If the host has no arm64 emulation, install/configure it according +to the host Docker distribution before the build; do not publish a partial +single-platform tag. Retain the pushed manifest digest in the release notes +and deploy the immutable tag or digest. The optional `archive-control-qemu` +builder follows the same lifecycle when it is used for an emulation smoke +build. + ## Operator usage 1. Prepare local qB, sync, state, backup, config, and secret mounts with the