Build: option to skip a broken documentation artifact with a warning instead of failing
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- github-actions, javascript
- Ambito
- build-system, ci-cd, documentation
Direzione di ricerca
Start in scripts/build-vite.js and trace the existing registry, extraction, validation, checker, and installation flow through scripts/fetch-apps.js, scripts/artifacts.js, src/utils/registry.js, and scripts/check-artifact.js. Read .github/workflows/build-image.yml, CLAUDE.md, and contract/DEPLOYMENT.md for the requested flag and documentation surfaces. Done means isolated failures warn and skip cleanly, skipped entries are recorded, all-skipped builds fail, and existing default behavior remains unchanged with the requested hermetic tests.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
One broken documentation artifact fails the whole knowledge base build. Every registry entry is all-or-nothing: if any single repo publishes a bad kb-docs.tar.gz, the deployment cannot be rebuilt at all — including for the other, perfectly healthy docs — until that repo re-publishes or someone edits the registry.
Today the only way to skip an entry is "optional": true, and that is narrow on purpose:
- it only covers a missing
prebuilt/localPathartifact (scripts/build-vite.js, theregisteredAppsfilter); - it is rejected outright by
KB_STRICT, i.e. in every production build.
Anything else wrong with an artifact still aborts the build, e.g.:
- Release / asset download fails (
scripts/fetch-apps.js: missing release, missingkb-docs.tar.gz, network/auth error) - unsafe or corrupt archive (
scripts/artifacts.js: traversal, absolute path, symlink, bad gzip) - missing or invalid
kb-docs.json(src/utils/registry.jsmanifest validation) - wrong package structure (declared app directory missing,
pagespointing at files that do not exist) - an
errorfinding from the contract checker (scripts/check-artifact.js) in a strict build - an entry that produces no apps (strict)
- a slug that collides with another artifact's (
resolveRegistry)
Proposal
Add a build parameter that turns a per-entry failure into a warning + skip instead of a build failure.
- Flag
--skip-failed/ envKB_SKIP_FAILED=trueonscripts/build-vite.js(name open to bikeshedding), plus a matchingskip-failedinput on.github/workflows/build-image.ymlso a deployment repo can opt in. - Default off — current behaviour (fail fast) is unchanged unless asked for.
- When on, each registry entry is staged, extracted, validated, checked and installed inside its own try/catch. On any error:
- log a warning naming the source (
owner/repo@version) and the reason; - remove whatever that entry already wrote to
apps/{slug}//public/{slug}/, so no half-installed app reaches Astro; - leave it out of the expansion map, so the catalog and masthead navigation never link to it;
- continue with the next entry.
- log a warning naming the source (
- Record skipped entries in
dist/kb-build.json(e.g.skipped: [{ source, version, reason }]) and in the GitHub job summary, so a skipped doc is visible rather than silently absent. - The build still fails if every entry is skipped (never publish an empty knowledge base), and on errors that are not attributable to one entry (registry file unreadable/invalid,
astro builditself failing, stylesheet alias step).
Open questions
- Interaction with
KB_STRICT. Strict currently exists so that "a registered app that cannot be fetched is a broken deployment, not something to skip with a warning". Options:KB_SKIP_FAILEDis allowed together with strict, and strict keeps only its registry-level guarantees (noprebuilt/localPath/optional, non-empty registry), while per-artifact errors become skips; or- the two are mutually exclusive and the build refuses the combination.
Leaning to the first: a production deployment is exactly where one team's broken release should not block everyone else's docs.
- Should a skip ever fail the job? e.g. exit 0 but set a GitHub Actions warning annotation, or an optional
max-skippedthreshold. - Fallback to the previous good version? Out of scope here, but worth noting: instead of dropping an entry, the build could fall back to the last release that passed. Could be a follow-up.
- Slug collisions — skip both entries, or the later one in registry order?
Acceptance criteria
- New flag/env/workflow input, off by default, documented in
CLAUDE.md(Environment Variables),contract/DEPLOYMENT.mdandbuild-image.ymlinput description. - With the flag on, each failure class listed above skips only the offending entry with a warning; the rest of the knowledge base builds and deploys.
- Skipped entries appear in
dist/kb-build.jsonand the job summary with their reason. - No leftover files from a skipped entry in
apps/,public/ordist/; no catalog card or nav link to it. - All entries skipped → build fails.
- With the flag off, behaviour is byte-for-byte unchanged (existing suites stay green).
- Tests: a hermetic registry with one good fixture plus one broken artifact per failure class (bad archive, missing manifest, invalid manifest, missing app dir, checker error) — build succeeds, only the good app is in
dist/,kb-build.jsonlists the skips.
- Lingua principale
- JavaScript
- Stelle
- 0
- Fork
- 0
- Merge medio
- 20m
- PR unite (30g)
- 8
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di AbsaOSS/knowledge-base
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
AbsaOSS/knowledge-base#118 ·
I maintainer di solito rispondono entro 1 giorno
-
feat: expose knowledge-base documentation through an MCP serverForse già presa @oto-macenauer-absa l’ha presa 14 giorni fa. Apertaenhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
AbsaOSS/knowledge-base#117 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
AbsaOSS/knowledge-base#114 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Dynamic responsive masthead menu from documentation manifestsForse già presa @oto-macenauer-absa l’ha presa 19 giorni fa. Apertaenhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
AbsaOSS/knowledge-base#111 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di AbsaOSS/knowledge-base
Issue simili
-
Admin search throws for permissions added through Admin.generalIndexItems('permissions', ...)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
maintenance
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
alphagov/accessible-autocomplete#826 ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
olahol/react-tagsinput#229 ·
-
[BUG] npm pkg delete removes the first array item for a nonexistent propertyForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
jonathanong/no-mistakes#2260 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno