mirror of
https://github.com/mudler/LocalAI.git
synced 2026-08-01 19:09:42 -04:00
fix(ci): skip the core image and release build on backend-only diffs (#11224)
Version-pin bumps dominate PR volume: 48 update/* PRs in the week to
2026-07-30, from 16 pins, each a two-line diff. bump_deps.yaml runs a 28-entry
matrix daily and opens one PR per moved pin; CRISPASR and the gallery checksum
produced one every day, ik-llama-cpp six in seven days. Almost all of them edit
nothing but a single backend/*/<name>/Makefile.
Neither image-pr.yml nor build-test.yaml can observe such a change. `make build`
is `go build ./cmd/local-ai`, GoReleaser builds that plus ./cmd/launcher, and
the core image's final stage ships only entrypoint.sh, healthcheck.sh and the
binary. The per-backend trees are copied into the builder but nothing in them
reaches the output. That is 7 + 3 jobs per bump PR that cannot fail for a reason
the diff caused, roughly 410 jobs a week.
Add backend/{cpp,go,python}/** to the paths-ignore of those two workflows. The
inputs that do reach the binary are deliberately outside those prefixes and so
still trigger a full run: backend/backend.proto (protogen-go), go.mod/go.sum
(the go mod tidy before-hook), and backend/Dockerfile.* .
Not applied to the workflows that genuinely read that tree:
test.yml TEST_PATHS names ./backend/go/{cloud-proxy,local-store,
valkey-store}/...
lint.yml .golangci.yml carries backend/-scoped rules
tests-e2e.yml the e2e suite drives real backends over gRPC
backend_pr.yml its whole job is rebuilding the changed backend
Simulated against the change shapes that occur in this repo. Pin bumps and
python requirement bumps skip; backend.proto, go.mod, a core Go edit, a
backend/Dockerfile edit and any mixed diff all still run, since paths-ignore
skips only when every changed file matches.
Assisted-by: Claude:opus-5 [claude-code]
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
This commit is contained in:
committed by
GitHub
parent
aa5a17d452
commit
a1620579c7
9
.github/workflows/build-test.yaml
vendored
9
.github/workflows/build-test.yaml
vendored
@@ -8,12 +8,21 @@ on:
|
||||
# GoReleaser and the darwin launcher take no gallery, docs or markdown
|
||||
# input, so a diff confined to these paths cannot change either binary.
|
||||
# The darwin job matters here: macOS is the scarcest runner class.
|
||||
#
|
||||
# backend/{cpp,go,python}/**: GoReleaser builds ./cmd/local-ai and the
|
||||
# launcher builds ./cmd/launcher; neither compiles a backend. The
|
||||
# before-hooks still matter, but their input is backend/backend.proto
|
||||
# (protogen-go) and go.mod/go.sum (go mod tidy), none of which live under
|
||||
# these prefixes, so a change to any of those still triggers a full run.
|
||||
# See .agents/ci-caching.md.
|
||||
paths-ignore:
|
||||
- 'gallery/**'
|
||||
- 'docs/**'
|
||||
- 'examples/**'
|
||||
- '**/*.md'
|
||||
- 'backend/cpp/**'
|
||||
- 'backend/go/**'
|
||||
- 'backend/python/**'
|
||||
|
||||
# Supersede an in-flight run when a PR gets a new push. Keyed on the PR number
|
||||
# so every push to the same PR shares a group; on a master push the key falls
|
||||
|
||||
10
.github/workflows/image-pr.yml
vendored
10
.github/workflows/image-pr.yml
vendored
@@ -8,12 +8,22 @@
|
||||
# image; docs and markdown never enter one at all. Gallery content is
|
||||
# still checked by yaml-check.yml and by
|
||||
# core/gallery/variants_lint_test.go under 'tests'.
|
||||
#
|
||||
# backend/{cpp,go,python}/**: this workflow builds the core image, whose
|
||||
# only compiled output is `make build` -> `go build ./cmd/local-ai`. The
|
||||
# per-backend trees are copied into the builder but nothing in them reaches
|
||||
# the binary or the final stage. backend/backend.proto is deliberately not
|
||||
# listed: it feeds protogen-go and so does change the binary, and it does
|
||||
# not live under any of these prefixes, so it still triggers a full run.
|
||||
# See .agents/ci-caching.md.
|
||||
paths-ignore:
|
||||
- 'gallery/**'
|
||||
- 'docs/**'
|
||||
- 'examples/**'
|
||||
- '**/*.md'
|
||||
- 'backend/cpp/**'
|
||||
- 'backend/go/**'
|
||||
- 'backend/python/**'
|
||||
|
||||
concurrency:
|
||||
group: ci-${{ github.event.pull_request.number || github.sha }}-${{ github.repository }}
|
||||
|
||||
Reference in New Issue
Block a user