Build: option to skip a broken documentation artifact with a warning instead of failing
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- github-actions, javascript
- Domínio
- build-system, ci-cd, documentation
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- JavaScript
- Estrelas
- 0
- Forks
- 0
- Merge médio
- 20min
- PRs com merge (30d)
- 8
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de AbsaOSS/knowledge-base
-
enhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 30/100
AbsaOSS/knowledge-base#118 ·
Mantenedores costumam responder em até 1 dia
-
feat: expose knowledge-base documentation through an MCP serverTalvez já em andamento @oto-macenauer-absa assumiu há 15 dias. Abertaenhancement
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
AbsaOSS/knowledge-base#117 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
enhancement
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
AbsaOSS/knowledge-base#114 · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
Dynamic responsive masthead menu from documentation manifestsTalvez já em andamento @oto-macenauer-absa assumiu há 20 dias. Abertaenhancement
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
AbsaOSS/knowledge-base#111 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
Todas as issues de AbsaOSS/knowledge-base
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
Mantenedores costumam responder em até 1 dia
-
status: waiting for maintainer
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
mui/material-ui#49511 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
mpetazzoni/sse.js#122 ·
-
[eslint-plugin] valid-styles rejects <progress> pseudo-elements (::-webkit-progress-bar, ::-webkit-progress-value, ::-moz-progress-bar)Talvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 2 dias
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
swc-project/swc-next#1022 ·
Mantenedores costumam responder em até 1 dia