chore(woodpecker): drop the transitional commonAnnotations prune-guard (stage 3) #398

Merged
k.renner merged 1 commits from woodpecker-drop-transient-prune-guard into master 2026-07-25 05:11:21 +00:00
Member

Stage 3 (final) of the woodpecker seed→apps move. Removes the transient commonAnnotations: prune: disabled from apps/woodpecker/kustomization.yaml now that the ownership handoff is done.

Stage 2 (#396) verified on the cluster: wp-pg + the Namespace + server/agent all adopted by the woodpecker KS, RESTARTS=0, no ownership conflict, nothing pruned. So the app objects no longer need blanket prune protection — they should be normally prunable by their owning KS again.

  • Removes only the commonAnnotations block.
  • The 4 CNPG DB objects keep their per-file prune: disabled (permanent data-guard on Cluster/wp-pg, ObjectStore, ScheduledBackup, hetzner-creds ExternalSecret).

Verified: kubectl kustomize apps/woodpecker → 17 objects, exactly 4 still annotated (the DB objects), 0 on the 13 app objects.

Trade-off: rolls woodpecker-server + agent once more as the annotation leaves their pod templates — same accepted CI restart as stage 1.

This completes the woodpecker migration. Remaining seed apps after this: paperless, immich, authentik (all have dedicated app KSes → the clean fold pattern).

**Stage 3 (final)** of the woodpecker seed→apps move. Removes the transient `commonAnnotations: prune: disabled` from `apps/woodpecker/kustomization.yaml` now that the ownership handoff is done. **Stage 2 (#396) verified on the cluster:** `wp-pg` + the Namespace + server/agent all adopted by the `woodpecker` KS, `RESTARTS=0`, no ownership conflict, nothing pruned. So the app objects no longer need blanket prune protection — they should be normally prunable by their owning KS again. - Removes **only** the `commonAnnotations` block. - The 4 CNPG DB objects keep their **per-file** `prune: disabled` (permanent data-guard on `Cluster/wp-pg`, ObjectStore, ScheduledBackup, hetzner-creds ExternalSecret). **Verified:** `kubectl kustomize apps/woodpecker` → 17 objects, exactly **4** still annotated (the DB objects), 0 on the 13 app objects. **Trade-off:** rolls `woodpecker-server` + `agent` once more as the annotation leaves their pod templates — same accepted CI restart as stage 1. This completes the woodpecker migration. Remaining seed apps after this: `paperless`, `immich`, `authentik` (all have dedicated app KSes → the clean fold pattern).
claude-bot added 1 commit 2026-07-25 05:07:52 +00:00
Final stage of the seed-woodpecker -> dedicated woodpecker KS move. The
commonAnnotations prune:disabled guard on apps/woodpecker/ has done its job: the
ownership handoff completed (verified — wp-pg + all app objects adopted by the
woodpecker KS, RESTARTS=0, nothing pruned), so the app objects no longer need
blanket prune protection and should be normally prunable by their owning KS again.

Removes only the commonAnnotations block. The 4 CNPG DB objects keep their
per-file prune: disabled (permanent data-guard on Cluster/wp-pg etc.) — verified
kubectl kustomize apps/woodpecker now annotates exactly those 4, not the 13 app
objects.

Rolls woodpecker-server + agent once more as the annotation leaves their pod
templates — the same accepted CI restart as stage 1.

Co-Authored-By: Claude Bot <claude-bot@renner.uno>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
review-bot left a comment
Member

🤖 Automated review — model claude-haiku-4-5-20251001 (complexity: trivial), commit 80098afd8d5fb7a9ef7ffbf571abcfdc741eac06.

Advisory review by the review-bot pipeline. It never approves; a human merges. Push new commits to get a fresh review.


Summary

This PR completes stage 3 of the woodpecker seed→dedicated Kustomization migration by removing the transient commonAnnotations: prune: disabled guard from kubernetes/apps/woodpecker/kustomization.yaml. The dedicated woodpecker KS now fully owns these objects, and stage 2 verified the ownership handoff completed without conflicts or pruning incidents.

🔴 Blocking

None identified.

🟡 Suggestions

None. The change is minimal and well-documented.

🟢 Nits

None.

Tests

This is a Kubernetes configuration change with no test coverage expected. The PR relies on stage 2's verification that the ownership transfer succeeded (no pruning, RESTARTS=0, no conflicts). The risk is low because:

  1. DB objects retain per-file protection: All 4 critical objects (cluster/objectstore/scheduled-backup/hetzner-creds-externalsecret) still have individual kustomize.toolkit.fluxcd.io/prune: disabled annotations in their yaml — verified ✓
  2. Dedicated KS is the lifecycle owner: kubernetes/clusters/homelab/woodpecker.yaml has prune: true and will now control pruning of the app objects
  3. Woodpecker is no longer in the catch-all apps KS: Removed from kubernetes/apps/kustomization.yaml with an explanatory comment

Expected behavior: woodpecker-server and agent pod restart once (acknowledged trade-off due to annotation removal from pod templates).

Recommendation

Looks reasonable — no blocking issues; the change correctly completes the migration after stage 2 verification.

🤖 **Automated review** — model `claude-haiku-4-5-20251001` (complexity: trivial), commit `80098afd8d5fb7a9ef7ffbf571abcfdc741eac06`. > Advisory review by the `review-bot` pipeline. It never approves; a human merges. Push new commits to get a fresh review. --- ## Summary This PR completes stage 3 of the woodpecker seed→dedicated Kustomization migration by removing the transient `commonAnnotations: prune: disabled` guard from `kubernetes/apps/woodpecker/kustomization.yaml`. The dedicated `woodpecker` KS now fully owns these objects, and stage 2 verified the ownership handoff completed without conflicts or pruning incidents. ## 🔴 Blocking None identified. ## 🟡 Suggestions None. The change is minimal and well-documented. ## 🟢 Nits None. ## Tests This is a Kubernetes configuration change with no test coverage expected. The PR relies on stage 2's verification that the ownership transfer succeeded (no pruning, `RESTARTS=0`, no conflicts). The risk is low because: 1. **DB objects retain per-file protection**: All 4 critical objects (cluster/objectstore/scheduled-backup/hetzner-creds-externalsecret) still have individual `kustomize.toolkit.fluxcd.io/prune: disabled` annotations in their yaml — verified ✓ 2. **Dedicated KS is the lifecycle owner**: `kubernetes/clusters/homelab/woodpecker.yaml` has `prune: true` and will now control pruning of the app objects 3. **Woodpecker is no longer in the catch-all apps KS**: Removed from `kubernetes/apps/kustomization.yaml` with an explanatory comment Expected behavior: woodpecker-server and agent pod restart once (acknowledged trade-off due to annotation removal from pod templates). ## Recommendation Looks reasonable — no blocking issues; the change correctly completes the migration after stage 2 verification. <!-- pr-review:sha=80098afd8d5fb7a9ef7ffbf571abcfdc741eac06 -->
k.renner merged commit 9819c83045 into master 2026-07-25 05:11:21 +00:00
Sign in to join this conversation.