Remove dead bundle cache steps from CI pipeline #101

Merged
ldraney merged 1 commit from remove-dead-cache-steps into main 2026-06-04 12:30:31 +00:00
Owner

Summary

  • Remove restore-bundle-cache and save-bundle-cache steps — they never worked
  • Woodpecker's k8s backend silently ignores host_path in backend_options.kubernetes.volumes
  • PR #97 bandaided save with failure: ignore, but both steps are dead code on every pipeline

Changes

  • .woodpecker.yaml: Remove restore-bundle-cache step (lines 15-40), save-bundle-cache step (lines 87-117), and update bundle-install to depends_on: []

Root Cause

PR #81 added hostPath-based caching. Woodpecker's Kubernetes backend has no codepath for hostPath — it only creates PVC volume sources (pod.go). The config was silently ignored, /cache never mounted, restore always got cache miss, save failed every run.

If CI caching is needed later, use a PVC in the woodpecker namespace with local-path storage class.

Test Plan

  • PR pipeline runs green (no cache steps to fail)
  • Main pipeline runs green after merge
  • build-and-push still succeeds and pushes to Harbor

Review Checklist

  • No secrets committed
  • No unnecessary file changes
  • Commit messages are descriptive
  • ldraney/landscaping-assistant #96 — CI pipeline falsely fails due to save-bundle-cache step
  • ldraney/landscaping-assistant #97 — bandaid fix (failure: ignore)
  • landscaping-assistant — project

Closes #96

## Summary - Remove `restore-bundle-cache` and `save-bundle-cache` steps — they never worked - Woodpecker's k8s backend silently ignores `host_path` in `backend_options.kubernetes.volumes` - PR #97 bandaided save with `failure: ignore`, but both steps are dead code on every pipeline ## Changes - `.woodpecker.yaml`: Remove `restore-bundle-cache` step (lines 15-40), `save-bundle-cache` step (lines 87-117), and update `bundle-install` to `depends_on: []` ## Root Cause PR #81 added hostPath-based caching. Woodpecker's Kubernetes backend has no codepath for hostPath — it only creates PVC volume sources (`pod.go`). The config was silently ignored, `/cache` never mounted, restore always got cache miss, save failed every run. If CI caching is needed later, use a PVC in the `woodpecker` namespace with `local-path` storage class. ## Test Plan - [ ] PR pipeline runs green (no cache steps to fail) - [ ] Main pipeline runs green after merge - [ ] `build-and-push` still succeeds and pushes to Harbor ## Review Checklist - [ ] No secrets committed - [ ] No unnecessary file changes - [ ] Commit messages are descriptive ## Related Notes - `ldraney/landscaping-assistant #96` — CI pipeline falsely fails due to save-bundle-cache step - `ldraney/landscaping-assistant #97` — bandaid fix (failure: ignore) - `landscaping-assistant` — project Closes #96
Remove dead bundle cache steps — hostPath unsupported by Woodpecker k8s backend
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
CI / scan_ruby (pull_request) Has been cancelled
CI / scan_js (pull_request) Has been cancelled
CI / lint (pull_request) Has been cancelled
7b64c5aee5
The restore-bundle-cache and save-bundle-cache steps added in PR #81
used backend_options.kubernetes.volumes with host_path. Woodpecker's
Kubernetes backend silently ignores hostPath — it only supports
PVC-based volumes (see pod.go source). The cache never mounted:
restore always got a miss, save always failed.

PR #97 bandaided this with failure: ignore, but both steps are still
dead code that runs on every pipeline. Remove them entirely.

If CI caching is needed later, use a pre-existing PVC in the
woodpecker namespace — the correct approach for the k8s backend.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

PR #101 Review

DOMAIN REVIEW

Tech stack: Woodpecker CI (YAML pipeline config), Kubernetes backend.

Pipeline DAG integrity: After removing both cache steps and updating bundle-install to depends_on: [], the step dependency graph is:

  1. bundle-install (depends_on: []) -- starts immediately after clone
  2. lint (depends_on: bundle-install) -- correct
  3. test (depends_on: bundle-install) -- correct
  4. build-and-push (depends_on: lint, test) -- correct, push-to-main only

The DAG is clean and correct. No orphaned dependencies, no broken references.

Root cause analysis: The PR body correctly identifies that Woodpecker's k8s backend only supports PVC-based volume sources via pod.go, not host_path. The backend_options.kubernetes.volumes with host_path was silently ignored, meaning /cache was never mounted, restore-bundle-cache always hit cache miss (but passed), and save-bundle-cache failed every run. PR #97 bandaided with failure: ignore, and this PR properly removes the dead code.

Forward guidance: The PR body notes PVC with local-path storage class as the correct approach if caching is needed later. This is accurate and sufficient.

No security concerns: The removed steps contained no secrets. Existing from_secret references for Harbor credentials in build-and-push are untouched and correct.

BLOCKERS

None. This is a pure deletion of dead code with a single dependency update. No new functionality introduced, so no test coverage requirement applies. No secrets, no user input handling, no auth changes.

NITS

  1. The save-bundle-cache step had failure: ignore (from PR #97) -- good that this bandaid is being cleaned up rather than left in place permanently.

  2. Minor: the bundle-install step sets BUNDLE_DEPLOYMENT: "" and BUNDLE_WITHOUT: "" to override defaults. This is duplicated across bundle-install, lint, and test steps. Not introduced by this PR, so out of scope, but worth noting for a future cleanup pass.

SOP COMPLIANCE

  • Branch named after issue: Branch is remove-dead-cache-steps, expected 96-remove-dead-cache-steps. Missing issue number prefix. Non-blocking for a CI config cleanup, but does not follow convention.
  • PR body follows template: Has Summary, Changes, Root Cause, Test Plan, Review Checklist, Related Notes. Well structured.
  • Related references plan slug: Related section references issue numbers (#96, #97) and project name but does not reference a pal-e-docs plan slug. Acceptable for a small CI cleanup without a formal plan.
  • No secrets committed: Confirmed. Only file changed is .woodpecker.yaml, and it is pure deletion plus a dependency update.
  • No unnecessary file changes: Single file changed, all changes directly related to removing dead cache steps.
  • Commit messages are descriptive: Commit title "Remove dead bundle cache steps from CI pipeline" is clear and accurate.

PROCESS OBSERVATIONS

  • Change failure risk: Low. Pure deletion of non-functional code. The steps were already effectively no-ops (restore always missed, save always failed and was ignored).
  • Deployment frequency: Positive impact. Removing steps that fail every pipeline eliminates false negatives and noise, making the pipeline more trustworthy and faster.
  • Documentation: The PR body's Root Cause section serves as good documentation of why this happened and what the correct approach would be for future caching. No separate docs update needed.
  • Lineage: Good traceability -- PR #81 introduced the broken caching, PR #97 bandaided it, this PR properly cleans it up. All referenced in the PR body.

VERDICT: APPROVED

Clean removal of dead code. Pipeline DAG remains correct. No blockers. Branch naming convention not followed but non-blocking for this scope.

## PR #101 Review ### DOMAIN REVIEW **Tech stack**: Woodpecker CI (YAML pipeline config), Kubernetes backend. **Pipeline DAG integrity**: After removing both cache steps and updating `bundle-install` to `depends_on: []`, the step dependency graph is: 1. `bundle-install` (depends_on: []) -- starts immediately after clone 2. `lint` (depends_on: bundle-install) -- correct 3. `test` (depends_on: bundle-install) -- correct 4. `build-and-push` (depends_on: lint, test) -- correct, push-to-main only The DAG is clean and correct. No orphaned dependencies, no broken references. **Root cause analysis**: The PR body correctly identifies that Woodpecker's k8s backend only supports PVC-based volume sources via `pod.go`, not `host_path`. The `backend_options.kubernetes.volumes` with `host_path` was silently ignored, meaning `/cache` was never mounted, `restore-bundle-cache` always hit cache miss (but passed), and `save-bundle-cache` failed every run. PR #97 bandaided with `failure: ignore`, and this PR properly removes the dead code. **Forward guidance**: The PR body notes PVC with `local-path` storage class as the correct approach if caching is needed later. This is accurate and sufficient. **No security concerns**: The removed steps contained no secrets. Existing `from_secret` references for Harbor credentials in `build-and-push` are untouched and correct. ### BLOCKERS None. This is a pure deletion of dead code with a single dependency update. No new functionality introduced, so no test coverage requirement applies. No secrets, no user input handling, no auth changes. ### NITS 1. The `save-bundle-cache` step had `failure: ignore` (from PR #97) -- good that this bandaid is being cleaned up rather than left in place permanently. 2. Minor: the `bundle-install` step sets `BUNDLE_DEPLOYMENT: ""` and `BUNDLE_WITHOUT: ""` to override defaults. This is duplicated across `bundle-install`, `lint`, and `test` steps. Not introduced by this PR, so out of scope, but worth noting for a future cleanup pass. ### SOP COMPLIANCE - [ ] **Branch named after issue**: Branch is `remove-dead-cache-steps`, expected `96-remove-dead-cache-steps`. Missing issue number prefix. Non-blocking for a CI config cleanup, but does not follow convention. - [x] **PR body follows template**: Has Summary, Changes, Root Cause, Test Plan, Review Checklist, Related Notes. Well structured. - [ ] **Related references plan slug**: Related section references issue numbers (#96, #97) and project name but does not reference a pal-e-docs plan slug. Acceptable for a small CI cleanup without a formal plan. - [x] **No secrets committed**: Confirmed. Only file changed is `.woodpecker.yaml`, and it is pure deletion plus a dependency update. - [x] **No unnecessary file changes**: Single file changed, all changes directly related to removing dead cache steps. - [x] **Commit messages are descriptive**: Commit title "Remove dead bundle cache steps from CI pipeline" is clear and accurate. ### PROCESS OBSERVATIONS - **Change failure risk**: Low. Pure deletion of non-functional code. The steps were already effectively no-ops (restore always missed, save always failed and was ignored). - **Deployment frequency**: Positive impact. Removing steps that fail every pipeline eliminates false negatives and noise, making the pipeline more trustworthy and faster. - **Documentation**: The PR body's Root Cause section serves as good documentation of why this happened and what the correct approach would be for future caching. No separate docs update needed. - **Lineage**: Good traceability -- PR #81 introduced the broken caching, PR #97 bandaided it, this PR properly cleans it up. All referenced in the PR body. ### VERDICT: APPROVED Clean removal of dead code. Pipeline DAG remains correct. No blockers. Branch naming convention not followed but non-blocking for this scope.
ldraney deleted branch remove-dead-cache-steps 2026-06-04 12:30:31 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/landscaping-assistant!101
No description provided.