LocalAI/.github
Ettore Di Giacinto 8521af145f ci(merge): source per-arch digests from ci-cache, not local-ai-backends
Follow-up to PR #9781. v4.2.2 (run 25745181433) showed the keepalive
anchor in ci-cache wasn't enough on its own: 19 of 37 multiarch merges
still failed with "manifest not found" for the same digests we'd just
anchored.

Quay's manifest GC is per-repository. The anchor tag in ci-cache
protects the manifest copy that lives in ci-cache, but the same digest
in local-ai-backends is independently tracked and gets reaped because
nothing in local-ai-backends references it (push-by-digest=true leaves
it untagged). The merge then asks
`local-ai-backends@sha256:<digest>` and quay correctly says "not found"
in that repo, even though `ci-cache@sha256:<digest>` is alive and well.

Empirical confirmation against a live failed digest from v4.2.2:

  $ docker buildx imagetools inspect quay.io/go-skynet/ci-cache@sha256:05377fe6...
  Name: quay.io/go-skynet/ci-cache@sha256:05377fe6...
  MediaType: application/vnd.docker.distribution.manifest.v2+json
  $ docker buildx imagetools inspect quay.io/go-skynet/local-ai-backends@sha256:05377fe6...
  ERROR: ... not found

Switch the source of the quay merge step to ci-cache. The blobs the
manifest references are already accessible from local-ai-backends
(verified via direct registry HEAD: HTTP 200 from both repos — the
original push cross-mounted blobs at content-addressable storage time
and they outlive the per-repo manifest GC). buildx imagetools create
republishes the manifest into local-ai-backends, then writes the
user-facing manifest list pointing at it. End state is self-contained:
the published manifest list references child manifests by digest only,
no embedded reference to ci-cache.

Dockerhub merge step is unchanged. Dockerhub's GC isn't aggressive
enough to reap untagged manifests at the timescales we operate on
(verified: localai/localai-backends@<same digest> still resolves cleanly
after >24h).

Assisted-by: Claude:claude-opus-4-7
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-05-12 22:35:55 +00:00
..
actions ci: phase 1-3 of GHA free tier migration (path filter, multi-arch split prep, /mnt disk relief) (#9726) 2026-05-08 23:43:41 +02:00
ci fix: roll out bluemonday Sanitize more widely (#3794) 2024-10-12 09:45:47 +02:00
gallery-agent fix(ci): switch gallery-agent to sigs.k8s.io/yaml (#9397) 2026-04-17 10:10:42 +02:00
ISSUE_TEMPLATE docs/examples: enhancements (#1572) 2024-01-18 19:41:08 +01:00
scripts ci: close GC race + cascade-skip + darwin grpc gaps from v4.2.1 (#9781) 2026-05-12 17:22:09 +02:00
workflows ci(merge): source per-arch digests from ci-cache, not local-ai-backends 2026-05-12 22:35:55 +00:00
backend-matrix.yml ci: close GC race + cascade-skip + darwin grpc gaps from v4.2.1 (#9781) 2026-05-12 17:22:09 +02:00
bump_deps.sh feat: do not bundle llama-cpp anymore (#5790) 2025-07-18 13:24:12 +02:00
bump_docs.sh fix: github bump_docs.sh regex to drop emoji and other text (#2180) 2024-04-29 03:55:29 +00:00
bump_vllm_wheel.sh feat(vllm): expose AsyncEngineArgs via generic engine_args YAML map (#9563) 2026-04-29 00:49:28 +02:00
check_and_update.py fix(ci): fixup checksum scanning pipeline (#3631) 2024-09-23 10:56:10 +02:00
checksum_checker.sh fix(ci): fixup correct path for check_and_update.py (#2777) 2024-07-11 23:05:43 +02:00
dependabot.yml feat: Add backend gallery (#5607) 2025-06-15 14:56:52 +02:00
FUNDING.yml Create FUNDING.yml (#725) 2023-07-09 13:39:00 +02:00
labeler.yml chore(ci): update labels 2025-02-13 09:58:19 +01:00
PULL_REQUEST_TEMPLATE.md feat(vllm): Allow to set quantization (#1094) 2023-09-22 15:52:38 +02:00
release.yml feat(p2p): Federation and AI swarms (#2723) 2024-07-08 22:04:06 +02:00
stale.yml feat: add PR template and stale configuration (#316) 2023-05-20 09:10:20 +02:00