Back to all reviewers

optimize CI performance

browser-use/browser-use
Based on 4 comments
Yaml

Structure CI workflows to minimize execution time and resource usage through strategic job organization, caching, and elimination of redundant operations.

CI/CD Yaml

Reviewer Prompt

Structure CI workflows to minimize execution time and resource usage through strategic job organization, caching, and elimination of redundant operations.

Key optimization strategies:

  • Split jobs for parallelization: Break monolithic jobs into separate parallel jobs that can run concurrently, especially for linting, formatting, and type checking
  • Use cached actions: Prefer off-the-shelf actions with built-in caching over manual installations that repeat on every run
  • Eliminate redundant steps: Remove duplicate installations or commands that are already handled elsewhere in the workflow
  • Separate build from test matrix: Build artifacts once without matrix, then test across multiple environments using the cached artifacts

Example of optimized job structure:

jobs:
  # Fast parallel checks (each ~20sec)
  syntax-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v6
      - run: uv run ruff check --no-fix --select PLE
  
  format-check:
    runs-on: ubuntu-latest  
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v6
      - run: uv run ruff format
      - run: uv run pre-commit run --all-files
      
  type-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v6  
      - run: uv run pyright

  # Build once, test across matrix
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v6
      - run: uv build
      - uses: actions/upload-artifact@v4
        with:
          name: dist
          path: dist/
          
  test-import:
    needs: build
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python-version: ["3.11", "3.12", "3.13"]
    runs-on: $
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: dist
          path: dist/
      - run: python -c "import browser_use; print('Success!')"

This approach reduces total CI time from sequential execution to parallel execution, with all checks completing in under 30 seconds instead of several minutes.

4
Comments Analyzed
Yaml
Primary Language
CI/CD
Category

Source Discussions