Skip to content

ci: optimize CI speed with parallel builds, caching, and uv#766

Merged
dguido merged 7 commits intomasterfrom
dev/ci-speed-optimization
Jan 20, 2026
Merged

ci: optimize CI speed with parallel builds, caching, and uv#766
dguido merged 7 commits intomasterfrom
dev/ci-speed-optimization

Conversation

@dguido
Copy link
Copy Markdown
Member

@dguido dguido commented Jan 20, 2026

Summary

  • Run builds in parallel with lint instead of waiting for tests to complete
  • Consolidate from 4 to 3 platforms (ubuntu-latest, macos-26, windows-latest)
  • Add aggressive caching: golangci-lint-action, actionlint binary, npm cache
  • Replace pip with uv (10-100x faster) for Python package installation
  • Parallelize Python and Node dependency installation in test job

Expected Improvement

Metric Before After
Build dependency lint + test lint only
Platforms 4 3
Python installer pip uv
Tool caching none golangci-lint, actionlint, npm
Est. runtime ~10-12 min ~5-7 min

Test plan

  • Verify all 3 platforms build successfully
  • Verify all 3 platforms pass tests
  • Verify macos-26 runner works (preview status)
  • Check cache hit rates in action logs
  • Compare CI runtime against previous runs

🤖 Generated with Claude Code

- Run builds in parallel with lint (remove test dependency)
- Consolidate to 3 platforms: ubuntu-latest, macos-26, windows-latest
- Use golangci-lint-action with built-in caching
- Cache actionlint binary to avoid repeated installs
- Add setup-node with npm cache in lint job
- Replace pip with uv (10-100x faster) via astral-sh/setup-uv
- Parallelize Python and Node dependency installation in test job

Expected improvement: ~10-12 min → ~5-7 min per PR

Co-Authored-By: Claude Opus 4.5 <[email protected]>
dguido and others added 6 commits January 20, 2026 18:13
- Remove npm cache from lint job (no lockfile in repo)
- Add python-version to setup-uv so uv can find Python

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Pin golangci-lint to v1.64.8 (v2.x has stricter checks)
- Use uv tool install instead of uv pip install --system
  (uv tool install properly adds CLI tools to PATH)
- Update Python to 3.13

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- golangci-lint-action v7 requires golangci-lint v2.x, use v6.5.2
- Install crytic-compile instead of slither-analyzer
  (uv tool isolates each tool, slither doesn't expose crytic-compile)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
The test suite includes TestSlitherPrinter which requires the slither CLI.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Add cache for ~/.solc-select/artifacts to avoid re-downloading solc
- Remove unused Python venv setup in Windows (now using uv tool install)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@dguido dguido merged commit 626d2ee into master Jan 20, 2026
14 checks passed
@dguido dguido deleted the dev/ci-speed-optimization branch January 20, 2026 23:42
@dguido dguido mentioned this pull request Jan 22, 2026
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