60 Commits

Author SHA1 Message Date
jenkins
9c516b9808 build(hermes-webui): multi-arch image (arm64 + amd64)
Make registry.bstein.dev/bstein/hermes-webui a linux/amd64 + linux/arm64
manifest list so the agent pod's `hux` sidecar (which runs the webui image)
can schedule onto the amd64 node titan-22. Reuses the hermes-agent multi-arch
pattern already on main.

- Dockerfile.hermes-webui: repoint both FROMs to multi-arch, internal sources.
  The upstream WebUI base (ghcr sha256:a83a3893..., already a multi-arch OCI
  index) is now pulled from the in-cluster Harbor mirror; the agent base moves
  from the retired arm64-only leaf (81970563) to the multi-arch agent index
  (a68d1c4d). Kaniko selects the matching arch leaf per build node.
- services/harbor/hermes-webui-base-mirror-job.yaml: new suspended, operator-run
  skopeo `copy --all` Job mirroring the upstream WebUI base index into Harbor's
  `mirror` project (modeled on hermes-agent-base-mirror-job.yaml; reuses the
  generic ensure-project helper). Wired into the harbor kustomization.
- Jenkinsfile.hermes-webui-image: arm64 leg (titan-20) + amd64 leg (titan-24,
  hostname+arch pin, toleration Exists, resource-capped, own checkout scm) +
  Combine multi-arch index stage; per-arch evidence archived alongside the index.
- hermes_multiarch_combine.py: generalize the destination pattern/component to
  serve both hermes-agent and hermes-webui (fail-closed to just those two).
- Tests updated to the two-arch topology (two legs, combine, both FROM bases,
  the mirror Job, twelve archived evidence files).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BvMSXH8VH2tMWXanb8SJdf
2026-08-25 18:17:35 -03:00
jenkins
a7fc9b20a0 fix(harbor): mirror to external Harbor endpoint (valid TLS)
harbor-core internally advertises an HTTPS token realm, so skopeo could not push
over HTTP. Push to registry.bstein.dev (valid cert, the path kaniko already
uses); the image lands in the same 'mirror' project and stays internally pullable.
2026-08-25 14:23:51 -03:00
jenkins
e7ac6351a6 fix(harbor): mark harbor-core insecure so skopeo pushes over HTTP
skopeo derived the token realm as HTTPS and got 'HTTP response to HTTPS client'.
A registries.conf with insecure=true for harbor-core:80 makes the registry AND
its token request use HTTP.
2026-08-25 14:21:15 -03:00
jenkins
4f5fc44013 fix(harbor): push the mirror over Harbor's HTTP port 80
harbor-core serves http on :80 only; the skopeo dest omitted the port so it
dialed :443 and timed out. Pin the dest to :80 (with --dest-tls-verify=false).
2026-08-25 14:18:35 -03:00
jenkins
6a25a7681a fix(harbor): run Vault init first in the base-image mirror Job
The Job's ensure-project init container reads /vault/secrets/harbor-admin-password,
but Vault appended its init container AFTER ensure-project, so the secret file
was absent and the init failed. Force vault-agent-init to run first.
2026-08-25 14:10:57 -03:00
jenkins
8a71084585 build(hermes-agent): source base image + test deps from in-cluster mirrors
The hermes-agent-image pipeline failed intermittently on external network:
Kaniko's docker.io fallback for the base image is IPv6-broken from build
pods, and the "Validate reviewed release source" stage pip-installed pytest
from files.pythonhosted.org (DNS failures). Neither should touch the public
internet.

Base image: repoint the Dockerfile FROM from docker.io to the in-cluster
Harbor "mirror" project, keeping the exact content-addressed index digest
(9c841866...) and both arch leaves. A Flux-managed one-shot Job
(services/harbor/hermes-agent-base-mirror-job.yaml, suspend: true like the
cassandra bootstrap job) runs `skopeo copy --all` from docker.io into Harbor
using the same Vault-injected admin credential as the existing Harbor
immutability jobs; a tiny fail-closed helper ensures the public target
project first. Digest pinning and multi-arch are preserved; Kaniko pulls it
over the internal insecure registry with no docker.io fallback.

Test deps: install pytest/PyYAML fully offline (`pip --no-index
--find-links`) from a reviewed in-repo wheelhouse
(ci/vendor/hermes-agent-test-wheels) matching the arm64 python:3.12 build
container, so the validate stage never resolves a public index.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BvMSXH8VH2tMWXanb8SJdf
2026-08-25 13:53:22 -03:00
jenkins
31c5eae5ae release(hermes): automate chat router image 2026-08-24 02:46:36 -03:00
Hermes Agent
735a2b240d Add reviewed Hermes WebUI release lane 2026-08-23 03:52:03 +00:00
jenkins
3a57371989 hermes: close release-lane branch coverage gaps
Cover the uncovered branches in the image release script (redirect
handler, policy-read credential and size bounds, count and shape
rejections, EOF manifest scan) and in the Harbor immutability helper
(scope-failure verification, absent robot duration, stale-read retries,
created-rule ID binding, bounded startup retries). Exclude the
__main__ guard like the sibling release script.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 15:10:17 -03:00
jenkins
e8c26ecf85 hermes: add daemonless agent image release lane 2026-08-17 08:25:52 -03:00
jenkins
ce8151f0a7 Expand Harbor registry storage 2026-07-27 12:33:31 -03:00
jenkins
d24ef38f7a feat(cassandra): formalize registry and Jenkins cutover 2026-07-25 00:52:21 -03:00
jenkins
b3897322db Pin Veles 0.6.66 2026-07-13 08:38:13 -03:00
jenkins
c863ca8453 Deploy MirrorPond 0.5.12 pressure card-flow hotfix 2026-07-03 00:42:22 -03:00
jenkins
847129bbd6 harbor: lower redis bootstrap request 2026-05-19 15:13:16 -03:00
jenkins
b32ed20396 harbor: keep bootstrap workloads on titan-11 2026-05-19 14:31:41 -03:00
jenkins
281cc058d8 ops: add resource guardrails for rpi workers 2026-05-19 12:48:40 -03:00
jenkins
2a1b0d57e6 harbor: expand registry storage 2026-04-21 10:56:27 -03:00
jenkins
7deaab9d18 harbor: reduce vault injector bootstrap requests 2026-04-21 10:08:39 -03:00
jenkins
5b0d52aab6 harbor: move registry bootstrap to titan-11 2026-04-21 09:55:29 -03:00
525a0f9e71 harbor/bootstrap: pin via dynamic host label managed by recovery script 2026-04-06 21:32:43 -03:00
d168f02c7f harbor/recovery: remove fixed titan-05 pin and auto-select ready arm64 node 2026-04-06 21:27:23 -03:00
816d0cca65 traefik: isolate custom rbac from k3s cleanup 2026-04-06 01:57:34 -03:00
aa447e6996 harbor: restore internal arm64 image refs for recovery bootstrap 2026-04-06 00:50:29 -03:00
99bd68f61b recovery: unblock harbor cold start and add power console 2026-04-06 00:22:54 -03:00
1fa0c3b70f maintenance: finalize metis deployment and harbor patch 2026-03-31 15:01:18 -03:00
9a8030bf68 maintenance: harden metis recovery and fix harbor rollout 2026-03-31 14:55:48 -03:00
fc0943b1a6 harbor: fix ingress patch placement 2026-01-22 13:31:12 -03:00
1fc431af76 harbor: route v2 ingress to registry 2026-01-22 13:26:38 -03:00
f3620aa2a4 chore: centralize harbor pull credentials 2026-01-19 19:02:14 -03:00
bc3bfb9348 harbor: fix vault env templates 2026-01-14 22:07:51 -03:00
efbfca1677 harbor: preserve required volume mounts 2026-01-14 21:29:40 -03:00
665612b781 vault: keep copy loop from clobbering args 2026-01-14 21:24:16 -03:00
f484083653 harbor: fix vault secretKey file path 2026-01-14 21:17:05 -03:00
6c91e0313f harbor: mount vault entrypoint script 2026-01-14 21:02:50 -03:00
a2646d92f0 harbor: move secrets to vault sidecars 2026-01-14 20:46:46 -03:00
c9483b2d80 vault: sync harbor pulls 2026-01-14 10:07:31 -03:00
bdc32b7a36 vault(consumption): sync secrets via CSI 2026-01-14 05:07:23 -03:00
ac1389b75b feat: add harbor/vault oidc automation 2026-01-14 01:07:47 -03:00
9d0ce33e5c harbor: enable keycloak oidc settings 2026-01-13 20:42:26 -03:00
4785c247f0 harbor: pin components to v2.14.1-arm64 2025-12-17 17:54:50 -03:00
5c71498537 harbor: suspend automation, pin redis 2025-12-17 17:29:03 -03:00
flux-bot
a9d735d4c5 chore(harbor): update images to registry.bstein.dev/infra/harbor-redis:v2.14.1-arm64.14registry.bstein.dev/infra/harbor-core:v2.14.1-arm64.14registry.bstein.dev/infra/harbor-jobservice:v2.14.1-arm64.14registry.bstein.dev/infra/harbor-portal:v2.14.1-arm64.14registry.bstein.dev/infra/harbor-registry:v2.14.1-arm64.14registry.bstein.dev/infra/harbor-registryctl:v2.14.1-arm64.14registry.bstein.dev/infra/harbor-nginx:v2.14.1-arm64.14registry.bstein.dev/infra/harbor-prepare:v2.14.1-arm64.14 2025-12-17 19:38:57 +00:00
07bc589c9b harbor: fix imagepolicy tag setters 2025-12-17 16:32:42 -03:00
c02e6f66db harbor: fix image policy tag regex 2025-12-17 13:16:57 -03:00
77c7906e10 harbor: automate nginx and prepare 2025-12-17 13:14:31 -03:00
e997d237dd harbor: re-pin workloads to titan-05 2025-12-17 03:30:31 -03:00
39f35e15de harbor: add image automation 2025-12-17 03:21:35 -03:00
79c18bd1ce harbor: add helm remediation and timeouts 2025-12-17 01:39:49 -03:00
41a39b20e6 harbor: bootstrap arm64 images on titan-05 2025-12-16 11:16:34 -03:00