2026-08-23 01:08:35 +00:00
|
|
|
# Hermes WebUI release lane
|
|
|
|
|
|
|
|
|
|
Hermes WebUI has a release lane separate from `hermes-agent-image`. The lane
|
|
|
|
|
builds `dockerfiles/Dockerfile.hermes-webui` from one exact reviewed `main`
|
|
|
|
|
commit, publishes a unique immutable Harbor tag, independently verifies the
|
|
|
|
|
Harbor digest, and renders a review-only Flux patch. It never writes Git and it
|
|
|
|
|
never reconciles or restarts a workload.
|
|
|
|
|
|
|
|
|
|
## Release sequence
|
|
|
|
|
|
|
|
|
|
1. Merge and review all WebUI source, patch, theme, and PWA asset changes.
|
|
|
|
|
2. Wait for Flux to complete both Harbor immutability Jobs and refresh Jenkins
|
|
|
|
|
JCasC from reviewed `main`.
|
|
|
|
|
3. Open the manual Jenkins job `hermes-webui-image` and set:
|
|
|
|
|
- `PUBLISH_IMAGE=true`
|
|
|
|
|
- `EXPECTED_SOURCE_REVISION` to the full 40-character `main` commit
|
|
|
|
|
- `CONFIRM_PUBLISH=PUBLISH HERMES WEBUI`
|
|
|
|
|
4. Retain the fingerprinted seven-file artifact set. In particular, compare
|
|
|
|
|
`hermes-webui-image.json` with Harbor and review
|
|
|
|
|
`hermes-webui-image-update.patch`.
|
|
|
|
|
5. Apply that patch on a fresh branch and open a separate review. The patch is
|
|
|
|
|
constrained to the `webui` container in:
|
|
|
|
|
- `StatefulSet/hermes-chat-tenant`
|
|
|
|
|
- `Deployment/hermes`
|
|
|
|
|
6. Merge the digest-only review to let Flux roll out desired state. Do not use a
|
|
|
|
|
manual `kubectl set image`, restart, or reconcile as a release substitute.
|
|
|
|
|
|
|
|
|
|
The release fails closed when the requested revision is not the checked-out
|
|
|
|
|
`origin/main`, the unique Harbor tag already exists, the exact WebUI immutable
|
|
|
|
|
tag policy is absent, Kaniko and Harbor disagree on the digest, either Flux
|
|
|
|
|
workload changes identity/image shape, or the evidence archive is incomplete.
|
|
|
|
|
|
2026-08-23 04:42:08 +00:00
|
|
|
Harbor policy bootstrap has an intentional ordering dependency. The existing
|
|
|
|
|
`harbor-hermes-agent-immutability-ensure-1` Job grants the shared Jenkins
|
|
|
|
|
publisher only the read-only `immutable-tag:list` permission; the WebUI policy
|
|
|
|
|
Job creates and verifies the separate `hermes-webui` rule but does not edit the
|
|
|
|
|
publisher robot. Flux must therefore complete the existing Hermes agent policy
|
|
|
|
|
bootstrap before the WebUI Job and Jenkins release verification. This successor
|
|
|
|
|
does not include a WebUI image digest: until its WebUI publisher job and policy
|
|
|
|
|
are merged to `main` and bootstrapped, no image can be legitimately published
|
|
|
|
|
and independently verified through this lane.
|
|
|
|
|
|
2026-08-23 01:08:35 +00:00
|
|
|
## PWA identity source
|
|
|
|
|
|
|
|
|
|
The installed application uses the tracked canonical persona at
|
|
|
|
|
`dockerfiles/hermes-webui-assets/hermes-agent.ico`. Provenance, the canonical
|
|
|
|
|
SHA-256, and derivation details for the required 192px/512px PNGs are recorded
|
|
|
|
|
beside the asset in `SOURCE.md`; the image build never reads an icon from a
|
|
|
|
|
running coordinator.
|