Repository navigation
v0.0.16 - Parallelization Support
π Major Performance Enhancement: Parallelization Support
This release adds parallelization capabilities to fix the recurring 30-minute timeout issue in large repositories.
β‘ Performance Impact
Before (Single Job):
- β 30+ minutes β Timeout failure
- Fetches ALL branches sequentially
- Single monolithic job
After (Parallelized):
- β 5-6 minutes β Success
- Fetches only needed branches per job
- Multiple parallel workers
- 5-6x faster execution
π― What's New
New Features
- Branch Discovery Script (
discover-branches): Fast branch listing viagit ls-remotewith batching - Batch Mode: Process specific branch lists instead of all branches
- Parallelized Workflow Pattern: Two-stage architecture (discovery β parallel processing)
- Discovery Action: Available at
betterup/delete-old-branches-action/discovery@v0.0.16
New Input Parameters
branch_list: Space-separated list of branches to process (enables batch mode)batch_size: Number of branches per batch (discovery action)
Docker Image Updates
- Added
jqfor JSON processing - Includes new
discover-branchesscript
π Documentation
- README.md: Added comprehensive parallelization guide
- MIGRATION.md: Step-by-step migration instructions
- Example Workflow:
.github/workflows/parallel-delete-example.yml
π Backward Compatibility
β Fully backward compatible - All existing workflows continue to work unchanged. Parallelization is opt-in via the new workflow pattern.
π Quick Start
For repositories experiencing timeouts, see the parallelization guide in the README or follow the migration guide.
Example parallelized workflow:
jobs:
# Stage 1: Discover branches and create batches
discover:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.discover.outputs.matrix }}
steps:
- name: Discover branches
id: discover
uses: betterup/delete-old-branches-action/discovery@v0.0.16
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
batch_size: "100"
# Stage 2: Process branches in parallel
process:
needs: discover
runs-on: ubuntu-latest
strategy:
max-parallel: 10
matrix: ${{ fromJson(needs.discover.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
- uses: betterup/delete-old-branches-action@v0.0.16
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
date: "60 days ago"
branch_list: ${{ matrix.branches }}π¦ Commits
- feat: add branch discovery script for parallelization
- feat: add batch mode support to delete-old-branches
- build: add jq and discover-branches to Docker image
- feat: add branch_list input parameter for batch processing
- docs: add example parallelized workflow
- docs: add parallelization guide and migration documentation
- fix: correct action usage in documentation
- fix: output compact single-line JSON for GitHub Actions
π§ Bug Fixes in v0.0.16
- Fixed incorrect Docker image references in documentation
- Moved discovery action to subdirectory structure (
discovery/action.yml) - Corrected input parameter names in examples
- Fixed multi-line JSON output causing GitHub Actions parsing errors
π Acknowledgments
Built to solve timeout issues in large monorepos with 1000+ branches.
Full Changelog: v0.0.15...v0.0.16