Skip to content

Add per-runner cache isolation to prevent disk exhaustion#16

Merged
depoll merged 3 commits intomainfrom
feature/per-runner-cache-isolation
Jan 4, 2026
Merged

Add per-runner cache isolation to prevent disk exhaustion#16
depoll merged 3 commits intomainfrom
feature/per-runner-cache-isolation

Conversation

@depoll
Copy link
Copy Markdown
Owner

@depoll depoll commented Jan 3, 2026

Summary

  • Each runner now gets isolated cache directories for Gradle, npm, CocoaPods, Android, and Xcode DerivedData
  • An xcodebuild wrapper script is installed in each runner's PATH to automatically add -derivedDataPath, routing builds to the per-runner cache
  • All caches are cleaned up when the runner exits (ephemeral runners delete everything, non-ephemeral just clean caches)

Test plan

  • Deploy to a test runner and run an iOS build job
  • Verify caches are created in ~/.action-packer/runners/<id>/_caches/
  • Verify xcodebuild wrapper is working (check for DerivedData in runner cache, not global location)
  • Verify caches are cleaned up when runner exits

🤖 Generated with Claude Code

depoll and others added 3 commits December 31, 2025 15:12
- Add EditPoolForm component with form for editing pool name, labels,
  and scaling parameters (min/max/warm runners, idle timeout)
- Add edit button (pencil icon) to PoolCard
- Display read-only info (credential, isolation type, platform) in edit form
- Add client-side validation for scaling parameters
- Add comprehensive tests for edit functionality

The backend PATCH endpoint already supports updating these fields,
this change adds the UI to access that functionality.
Each runner now gets isolated cache directories for Gradle, npm, CocoaPods,
Android, and Xcode DerivedData. An xcodebuild wrapper script is installed
in each runner's PATH to automatically add -derivedDataPath, routing builds
to the per-runner cache. All caches are cleaned up when the runner exits.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The reconciler now cleans up global build caches (Xcode DerivedData, npm,
Gradle, CocoaPods, Android) every 5 minutes when no runners are active.
This handles legacy caches from before per-runner isolation and ensures
any missed cleanups are caught.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@depoll depoll merged commit 9163565 into main Jan 4, 2026
4 checks passed
@depoll depoll deleted the feature/per-runner-cache-isolation branch January 4, 2026 18:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant