CI pipeline: cache bundle install to cut build time #60
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
Feature
Lineage
Standalone — discovered while monitoring pipeline #131. Related to #23 (CI optimization, now closed).
Repo
ldraney/landscaping-assistantUser Story
As a developer
I want CI pipelines to skip redundant bundle install
So that deployments reach prod faster and DORA lead time improves
Context
Every Woodpecker pipeline run does a full
bundle installwith native extension compilation (debug, bootsnap, psych, date, erb, websocket-driver, etc.). No gem caching between runs. This adds 2-3 minutes to every pipeline. Two approaches:/usr/local/bundlebetween runsruby-rails-buildHarbor image used for the web container)Option 2 is more reliable but requires rebuilding the CI image when Gemfile changes.
File Targets
Files the agent should modify or create:
.woodpecker.yaml-- add volume cache or switch to pre-built imageAcceptance Criteria
Test Expectations
Constraints
Checklist
Related
landscaping-assistant-- projectTicket Scope Review -- Board Item #1297
FILE TARGETS VERIFICATION
.woodpecker.yamllintandteststeps do fullbundle installwithapt-geton every run. This is the file to modify.The current
.woodpecker.yamlconfirms the problem statement: both thelintstep (line 17-21) andteststep (line 27-31) independently runapt-get update,gem install bundler, andbundle install --jobs=4on bareruby:3.4.9-slim. This is redundant work on every pipeline run.ACCEPTANCE CRITERIA REVIEW
All three criteria are testable and have clear pass/fail conditions.
DEPENDENCY ANALYSIS
ruby-rails-build, then #60 becomes much simpler (cache is baked in). If #60 lands first with volume caching, #23's scope narrows.ruby:3.4.9-slimimage. Option 2 would depend on Harbor image availability, which is already proven (the productionDockerfileusesharbor.tail5b443a.ts.net/library/ruby-rails-build:latest).SCOPE CLARITY
The ticket is well-scoped for agent execution:
One gap: The ticket does not specify which option to choose. An executing agent would need to make that decision or ask. Recommendation: add a note indicating the preferred approach, or explicitly state "agent's discretion based on complexity." Given the overlap with #23, Option 1 (volume cache) is the cleaner choice -- it is independent of #23 and can coexist with a future base image switch.
LABELS
Current labels:
type:feature, arch:ci-pipeline, story:ci-optimization, devops-- appropriate.SOP COMPLIANCE
type:,arch:,story:).VERDICT: APPROVED
Scope is clear, acceptance criteria are testable, file targets are verified, and dependencies are non-blocking. Minor recommendation: note a preferred approach (Option 1 volume cache vs. Option 2 baked image) to reduce agent decision-making, but this is not a blocker for moving to
todo. The overlap with #23 should be noted when either ticket moves tonext_up.