Review: .woodpecker.yaml: kaniko build → Harbor → kustomize tag bump
Verdict: NEEDS_REFINEMENT
Scope is solid in structure (mirrors westside-app pipeline correctly) but contains a Harbor-naming inconsistency that will break the build-and-push step at runtime, plus missing backing notes (story + arch) and missing user-stories project page.
Template Completeness
- [x] Type — Task
- [x] Lineage — depends on scaffolding + Dockerfile tickets
- [x] Repo — forgejo_admin/westside-admin
- [x] User Story — story-westside-admin-admin-row-crud (foundational)
- [x] Context — clear 4-step pipeline mirror description
- [x] Scope — detailed step-by-step intent
- [x] Acceptance Criteria — 8 criteria, mostly testable
- [x] Test Expectations — manual verification path defined
- [x] Constraints — version pins + secrets noted
- [x] Checklist — present
- [x] Related — references reference repo + arch + project
Traceability
- [x] story:admin-row-crud label — admin row CRUD story
- [ ] story note MISSING — no
project-westside-adminpage found in pal-e-docs (search returned no results). [SCOPE] Create user story entry onproject-westside-adminuser-stories section, OR confirm the project page exists under a different slug. - [x] arch:woodpecker-ci label — Woodpecker CI pipeline component
- [ ] arch note MISSING — no
arch-woodpecker-cinote found in pal-e-docs. [SCOPE] Create architecture notearch-woodpecker-cifor the CI component (or rename label to match an existing arch note such asarch-deployment-westside-adminreferenced in the issue body). - [x] Forgejo issue — https://forgejo.tail5b443a.ts.net/forgejo_admin/westside-admin/issues/8, open
File Targets
- [x]
~/westside-app/.woodpecker.yaml(reference) — verified exists, 4 steps as described (clone, validate, build-and-push, update-kustomize-tag) - [x]
~/pal-e-platform/scripts/update-kustomize-tag.sh— verified exists, env contract matches (FORGEJO_TOKEN, OVERLAY, IMAGE_TAG required; OVERLAY_ENV defaultprod) - [x] Target file
~/westside-admin/.woodpecker.yaml— repo cloned locally; file does not yet exist (this ticket creates it). Correct. - [ ] Implied target overlay
overlays/westside-admin/prodin pal-e-deployments — does NOT yet exist (sibling ticket #1095 / pal-e-deployments#133 creates it). The update-kustomize-tag step will fail until #1095 lands. The "must NOT block the pipeline if it fails" requirement covers this, but document the explicit blocker dep.
Repo Placement
OK —
.woodpecker.yaml belongs in forgejo_admin/westside-admin. No multi-repo concerns for this single file.Dependencies
- Blocked by: scaffolding ticket (westside-admin#6, board #1087) and Dockerfile ticket — without a Dockerfile, kaniko build will fail. Lineage section names them but does not link issue numbers.
- Blocked by: deployment overlay ticket (pal-e-deployments#133, board #1095) — update-kustomize-tag step has nothing to update until the overlay's
kustomization.yamlwith anewTagfield exists. - Blocked by: service-registry onboarding for
westside-admininpal-e-services/terraform/k3s.tfvars— required to provision the Harbor project + CI robot account before kaniko can push. NOT mentioned in the ticket. [SCOPE] - Required secrets: ticket assumes
harbor_username,harbor_password,forgejo_tokenexist as repo or global secrets in Woodpecker. Per service-onboarding-sop, per-service Harbor robot creds are provisioned by tofu apply on services.tf — agent must verify the secrets are wired to the westside-admin repo in Woodpecker before merge, not after.
Acceptance Criteria
Mostly testable. Notes:
- AC "Harbor project:
forgejo_admin(matches repo owner perfeedback_harbor_project_naming)" — this is wrong. See Blast Radius below. Convention is "service key = Harbor project = image_repo prefix" (perpal-e-services/terraform/services.tfline 7), NOT repo owner. The reference westside-app usesrepo: westsidekingsandqueens/app(Harbor project =westsidekingsandqueens), notforgejo_admin/westside-app. - AC "OVERLAY env var =
westside-admin" — assumes overlay name; depends on #1095 using that exact name (verify consistency across tickets). - AC "image tag =
${CI_COMMIT_SHA}(full SHA)" — matches reference. OK. - AC "update-kustomize-tag failure does NOT break the pipeline" — reference uses
depends_on: build-and-push+when: event=push branch=main. There is no explicitfailure: ignorein the reference. The cited precedent commit1d54939("run update-kustomize-tag step even when test step fails") changed when-conditions, not failure tolerance for the tag step itself. Dev agent must verify the actual mechanism (likely needsfailure: ignoreon the step) and not assume it is implicit. [BODY]
Blast Radius
Harbor naming convention conflict (high severity). The ticket cites
feedback_harbor_project_naming to justify Harbor project = forgejo_admin, but that memory says Harbor projects derive from image_repo prefix, which in pal-e-services/terraform/services.tf is the service key (e.g. westsidekingsandqueens, basketball-api, pal-e-app, mcd-tracker-app). Forgejo owner names (forgejo_admin) have never been used as Harbor project names. Consequences if shipped as written:- Service registry needs a
westside-adminentry withimage_repo = "westside-admin/app"(or similar) to provision awestside-adminHarbor project. - If kaniko pushes to
harbor.harbor.svc.cluster.localwithrepo: forgejo_admin/westside-admin, push will fail (noforgejo_adminproject) OR create aforgejo_adminHarbor project (drift from convention; failed migration would mirror the 36-hour outage cited in the convention). - The kustomize overlay's image reference will need to match whatever Harbor path is chosen — if #1095 hardcodes a different path, ArgoCD will pull-fail.
Recommendation: Pick a service key for westside-admin (suggest
westside-admin matching the repo name, mirroring mcd-tracker-app), set image_repo = "westside-admin/app", and use kaniko repo: westside-admin/app. Coordinate this name across: ticket #8 (this one), service registry onboarding (a missing dep), kustomize overlay #1095, and Dockerfile ticket. [BODY]Decomposition Assessment
1 file target, 4 pipeline steps, 8 AC, ~5 min agent work. No decomposition needed. Single-pass agent task once scope is corrected.
Recommendation
[BODY]Fix the Harbor project AC: replace "Harbor project:forgejo_admin(matches repo owner)" with the chosen service key (likelywestside-admin, matchingimage_repoprefix per services.tf convention). Update kanikorepo:setting in Scope to match.[BODY]Add explicitfailure: ignore(or equivalent step-level pattern) to update-kustomize-tag in the Scope, since reference repo's "non-blocking" behavior is not actually enforced by structure — verify how it currently behaves and document explicitly.[BODY]Document the dependency on service-registry onboarding (new entry inpal-e-services/terraform/k3s.tfvars+tofu apply) before this pipeline can succeed end-to-end. Either add it as a Lineage item or open a sibling ticket.[SCOPE]Create user story entry onproject-westside-adminuser-stories section (or create the project page if missing).[SCOPE]Create architecture notearch-woodpecker-ci(or relabel the board item toarch:deployment-westside-adminmatching the Related section in the issue body).[LABEL]Confirm the board's arch label resolves to a real arch note before todo→next_up.