Validate step fails: build/index.html doesn't exist for adapter-node #12
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Bug
Lineage
Discovered during the first manual Woodpecker pipeline run on
forgejo_admin/westside-admin(pipeline #1, 2026-04-30). The webhook was installed ~5 min after #10/#11 merged, so no auto-build ever fired — the bug was latent until the manual trigger surfaced it.Repo
forgejo_admin/westside-adminWhat Broke
The
validatestep in.woodpecker.yamlrunstest -f build/index.htmlas a post-build smoke check. That file is never produced by@sveltejs/adapter-node, which emits a Node server bundle (build/index.js,build/handler.js,build/server/,build/client/) instead of a static HTML entry. Theindex.htmlartifact would only exist underadapter-static.Pipeline #1 logs:
The SvelteKit build itself succeeds. The assertion is wrong for the chosen adapter.
Repro Steps
forgejo_admin/westside-admin@main(push or manual)validatestep fails at thetest -f build/index.htmllinebuild-and-pushandupdate-kustomize-tagskip due todepends_onchainExpected Behavior
The smoke check asserts on an artifact
@sveltejs/adapter-nodeactually produces. Canonical choice:test -f build/index.js(the Node entry point started bynode build).Environment
forgejo_admin/westside-admin@mainat SHA82ac5255a9forgejo_admin/westside-admin#1(manual trigger, 2026-04-30)@sveltejs/adapter-nodenode:22-alpineAcceptance Criteria
.woodpecker.yamlvalidatestep asserts on an adapter-node artifact (build/index.js, optionally alsobuild/handler.js)mainreaches thebuild-and-pushsteppull_requestruns (validate still gates Kaniko)Related
westside-admin— project this affectsforgejo_admin/westside-admin #11— PR that introduced the bad smoke checkScope Review: APPROVED
Review note:
review-1117-2026-04-30Single-line bug fix. File targets verified at SHA
82ac5255a9(.woodpecker.yamlline 33 =test -f build/index.html;svelte.config.jsconfirms adapter-node;package.jsonstartscript already targetsbuild/index.js). Traceability complete: storyadmin-row-crudlisted onproject-westside-admin, arch notearch-ci-pipelineexists. Blast radius: westside-admin is the only sibling with this bug (westside-app uses adapter-static and is correctly assertingindex.html; other adapter-node repos have no smoke check). 3 AC all mechanically verifiable. ~1 min agent work, no decomposition needed.Ready to advance backlog -> todo.
Validation: PARTIAL
Tiers executed: Tier 3 (production)
Validation note:
validation-12-2026-04-309 checks: 5 PASS, 1 PARTIAL, 3 FAIL
Ticket-level ACs all PASS (the PR fixed exactly what it set out to fix):
.woodpecker.yamlvalidate now asserts onbuild/index.js+build/handler.js(verified in pipeline #3 + #2 logs)build-and-pushandupdate-kustomize-tag(all 4 steps green)when: branch: mainDeploy chain now works end-to-end for the first time:
harbor.tail5b443a.ts.net/westside-admin/app:803e9439...pushed at 12:27:11Z576eacacdebumpedoverlays/westside-admin/prodnewTag away from the 40-zeros placeholder576eacacwith operation phaseSucceededProduction readiness blocker (discovered scope, NOT a regression):
The
westside-admindeployment is 0/1 ready because the namespace is labeledpod-security.kubernetes.io/enforce: restricted(withenforce-version: latest) but neitherbases/standard/deployment.yamlnoroverlays/westside-admin/prod/deployment-patch.yamlset the required securityContext fields:allowPrivilegeEscalation: falsecapabilities.drop: ["ALL"]runAsNonRoot: trueseccompProfile.type: RuntimeDefaultThis was previously masked by the placeholder image tag (
0000...0000) keeping the deploy inImagePullBackOffbefore it ever reached the PSA admission controller. Sister namespacewestside-streamlithas the same PSA label and the same problem (0 pods running). Other prod namespaces have no PSA enforcement.External funnel
https://westside-admin.tail5b443a.ts.net/returns 502 (no backend pod)./healthconnection drops.Recommend a follow-up issue against
pal-e-deploymentsto add securityContext tobases/standard/deployment.yaml(preferred — also unblockswestside-streamlit) or as an overlay-specific patch.Issue #12 itself remains correctly closed — the validate-step bug is fixed. The bootstrap goal of westside-admin serving traffic is gated on the separate PSA fix.