Fix CI: remove dead volume config, add Kaniko push retry #200

Merged
ldraney merged 1 commit from fix/ci-kaniko-push-199 into main 2026-06-12 03:57:50 +00:00
Owner

Summary

  • Remove dead backend_options volume mount config from bundle-install step (PVC never configured, making it a no-op)
  • Remove dead bundle cache cp commands that depended on the unconfigured volume
  • Add --push-retry 3 to Kaniko extra_opts to handle transient Harbor connection drops during large blob uploads
  • Clean up PVC comment block at end of file

Closes #199

Changes

  • .woodpecker.yaml — removed backend_options.kubernetes.volumeMounts block from bundle-install step, removed cp -a /cache/bundle/... commands, added --push-retry 3 to Kaniko extra_opts, removed trailing PVC setup comment block

Test Plan

  • Push-to-main pipeline succeeds end-to-end (build-and-push step completes)
  • ArgoCD image updater picks up new tag
  • Tests and lint steps still pass (unchanged)

Review Checklist

  • Changes limited to .woodpecker.yaml only
  • No modifications to Dockerfile, test steps, or service config
  • Dead config removed cleanly (no orphaned references)
  • Kaniko push retry is additive, not breaking
  • Forgejo issue: #199
  • Root cause: Harbor Core proxy drops connections on large blob uploads; --push-retry 3 retries transient failures
  • Dead config originated from PR #188 which added volume mount without corresponding WOODPECKER_BACKEND_K8S_VOLUMES agent config
## Summary - Remove dead `backend_options` volume mount config from bundle-install step (PVC never configured, making it a no-op) - Remove dead bundle cache `cp` commands that depended on the unconfigured volume - Add `--push-retry 3` to Kaniko `extra_opts` to handle transient Harbor connection drops during large blob uploads - Clean up PVC comment block at end of file Closes #199 ## Changes - `.woodpecker.yaml` — removed `backend_options.kubernetes.volumeMounts` block from `bundle-install` step, removed `cp -a /cache/bundle/...` commands, added `--push-retry 3` to Kaniko extra_opts, removed trailing PVC setup comment block ## Test Plan - [ ] Push-to-main pipeline succeeds end-to-end (build-and-push step completes) - [ ] ArgoCD image updater picks up new tag - [ ] Tests and lint steps still pass (unchanged) ## Review Checklist - [x] Changes limited to `.woodpecker.yaml` only - [x] No modifications to Dockerfile, test steps, or service config - [x] Dead config removed cleanly (no orphaned references) - [x] Kaniko push retry is additive, not breaking ## Related Notes - Forgejo issue: #199 - Root cause: Harbor Core proxy drops connections on large blob uploads; `--push-retry 3` retries transient failures - Dead config originated from PR #188 which added volume mount without corresponding `WOODPECKER_BACKEND_K8S_VOLUMES` agent config
Fix CI: remove dead volume config, add Kaniko push retry
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
5b658ea509
Remove dead backend_options volume mount and bundle cache cp commands
from bundle-install step (PVC was never configured, making these no-ops).
Add --push-retry 3 to Kaniko extra_opts to handle transient Harbor
connection drops during large blob uploads. Clean up PVC comment block.

Closes #199

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

QA Review -- PR #200

Scope: 1 file changed (.woodpecker.yaml), +1/-27 lines.

Findings

No issues found. All four changes are correct and minimal:

  1. Dead cp cache commands removed -- cp -a /cache/bundle/... lines were no-ops since the volume mount was never provisioned. Clean removal, no side effects.

  2. Dead backend_options block removed -- kubernetes.volumeMounts referencing bundle-cache was inert without WOODPECKER_BACKEND_K8S_VOLUMES agent config. No orphaned references remain.

  3. --push-retry 3 added to Kaniko extra_opts -- Valid Kaniko flag. Appended correctly alongside existing --skip-push-permission-check. This addresses the transient Harbor connection drops on large blob uploads.

  4. PVC comment block removed -- 19 lines of dead documentation for infrastructure that was never created. Clean removal.

Checks

  • Only .woodpecker.yaml modified (no Dockerfile, test, or service changes)
  • No functional steps altered (lint, test, build-and-push logic unchanged)
  • registry, cache_repo, and secrets settings untouched
  • YAML indentation and structure valid
  • PR body references parent issue (Closes #199)

VERDICT: PASS

## QA Review -- PR #200 **Scope:** 1 file changed (`.woodpecker.yaml`), +1/-27 lines. ### Findings **No issues found.** All four changes are correct and minimal: 1. **Dead `cp` cache commands removed** -- `cp -a /cache/bundle/...` lines were no-ops since the volume mount was never provisioned. Clean removal, no side effects. 2. **Dead `backend_options` block removed** -- `kubernetes.volumeMounts` referencing `bundle-cache` was inert without `WOODPECKER_BACKEND_K8S_VOLUMES` agent config. No orphaned references remain. 3. **`--push-retry 3` added to Kaniko `extra_opts`** -- Valid Kaniko flag. Appended correctly alongside existing `--skip-push-permission-check`. This addresses the transient Harbor connection drops on large blob uploads. 4. **PVC comment block removed** -- 19 lines of dead documentation for infrastructure that was never created. Clean removal. ### Checks - [x] Only `.woodpecker.yaml` modified (no Dockerfile, test, or service changes) - [x] No functional steps altered (lint, test, build-and-push logic unchanged) - [x] `registry`, `cache_repo`, and secrets settings untouched - [x] YAML indentation and structure valid - [x] PR body references parent issue (`Closes #199`) **VERDICT: PASS**
Author
Owner

PR #200 Review

DOMAIN REVIEW

Tech stack: Woodpecker CI / Kaniko / Kubernetes

This is a CI pipeline fix targeting .woodpecker.yaml -- a single-file change with 1 addition and 27 deletions.

Changes evaluated:

  1. Dead cp cache commands removed -- The cp -a /cache/bundle/. vendor/bundle/ and reverse copy commands depended on a volume mount at /cache/bundle that was never provisioned. The 2>/dev/null || true suffix confirms these were silently no-ops. Correct to remove.

  2. Dead backend_options.kubernetes.volumeMounts block removed -- This referenced a bundle-cache volume that required WOODPECKER_BACKEND_K8S_VOLUMES agent-level configuration that was never set. The PR body correctly traces the origin to PR #188. Correct to remove.

  3. --push-retry 3 added to Kaniko extra_opts -- This is the substantive fix. The value is appended to the existing --skip-push-permission-check flag on the same line. Kaniko's --push-retry is a documented flag (added in kaniko v1.9.0; the image woodpeckerci/plugin-kaniko:2.3.0 bundles kaniko >= 1.14). The retry count of 3 is a reasonable default for transient network failures. This is additive and non-breaking.

  4. Trailing PVC setup comment block removed -- These were instructions for provisioning the PVC that was never created. Since the caching approach is fully removed, this cleanup is appropriate.

No concerns with the changes. The dead config removal is safe because the config was provably never operational (volume never provisioned, commands silently failed). The push-retry addition is a standard Kaniko resilience pattern for registry connection instability.

BLOCKERS

None.

NITS

None. The change is minimal, focused, and well-explained in the PR body.

SOP COMPLIANCE

  • PR body has Summary, Changes, Test Plan, Related sections
  • No secrets committed (Harbor credentials remain from_secret references)
  • No unnecessary file changes -- single file, scoped to the issue
  • Commit message is descriptive (matches PR title)
  • Closes #199 present in PR body

PROCESS OBSERVATIONS

  • Change failure risk: LOW -- Removing dead config has zero runtime impact. The --push-retry 3 is additive and only activates on transient push failures.
  • Deployment frequency impact: POSITIVE -- This directly fixes 7 consecutive deploy failures (per issue #199 title), unblocking the pipeline.
  • Documentation: The PR body is thorough -- it traces the root cause (Harbor Core proxy dropping connections on large blobs), identifies the origin of the dead config (PR #188), and provides clear test criteria. The removed PVC comment block was the only documentation of the caching approach, but since that approach is fully abandoned, no documentation gap exists.

VERDICT: APPROVED

## PR #200 Review ### DOMAIN REVIEW **Tech stack: Woodpecker CI / Kaniko / Kubernetes** This is a CI pipeline fix targeting `.woodpecker.yaml` -- a single-file change with 1 addition and 27 deletions. **Changes evaluated:** 1. **Dead `cp` cache commands removed** -- The `cp -a /cache/bundle/. vendor/bundle/` and reverse copy commands depended on a volume mount at `/cache/bundle` that was never provisioned. The `2>/dev/null || true` suffix confirms these were silently no-ops. Correct to remove. 2. **Dead `backend_options.kubernetes.volumeMounts` block removed** -- This referenced a `bundle-cache` volume that required `WOODPECKER_BACKEND_K8S_VOLUMES` agent-level configuration that was never set. The PR body correctly traces the origin to PR #188. Correct to remove. 3. **`--push-retry 3` added to Kaniko `extra_opts`** -- This is the substantive fix. The value is appended to the existing `--skip-push-permission-check` flag on the same line. Kaniko's `--push-retry` is a documented flag (added in kaniko v1.9.0; the image `woodpeckerci/plugin-kaniko:2.3.0` bundles kaniko >= 1.14). The retry count of 3 is a reasonable default for transient network failures. This is additive and non-breaking. 4. **Trailing PVC setup comment block removed** -- These were instructions for provisioning the PVC that was never created. Since the caching approach is fully removed, this cleanup is appropriate. **No concerns with the changes.** The dead config removal is safe because the config was provably never operational (volume never provisioned, commands silently failed). The push-retry addition is a standard Kaniko resilience pattern for registry connection instability. ### BLOCKERS None. ### NITS None. The change is minimal, focused, and well-explained in the PR body. ### SOP COMPLIANCE - [x] PR body has Summary, Changes, Test Plan, Related sections - [x] No secrets committed (Harbor credentials remain `from_secret` references) - [x] No unnecessary file changes -- single file, scoped to the issue - [x] Commit message is descriptive (matches PR title) - [x] `Closes #199` present in PR body ### PROCESS OBSERVATIONS - **Change failure risk: LOW** -- Removing dead config has zero runtime impact. The `--push-retry 3` is additive and only activates on transient push failures. - **Deployment frequency impact: POSITIVE** -- This directly fixes 7 consecutive deploy failures (per issue #199 title), unblocking the pipeline. - **Documentation**: The PR body is thorough -- it traces the root cause (Harbor Core proxy dropping connections on large blobs), identifies the origin of the dead config (PR #188), and provides clear test criteria. The removed PVC comment block was the only documentation of the caching approach, but since that approach is fully abandoned, no documentation gap exists. ### VERDICT: APPROVED
ldraney deleted branch fix/ci-kaniko-push-199 2026-06-12 03:57:50 +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!200
No description provided.