diff --git a/.github/scripts/custom_benchmark_report.py b/.github/scripts/custom_benchmark_report.py index f255d98..ea3825f 100644 --- a/.github/scripts/custom_benchmark_report.py +++ b/.github/scripts/custom_benchmark_report.py @@ -346,6 +346,11 @@ if __name__ == "__main__": parser = argparse.ArgumentParser( description="Load Criterion benchmark results from JSON files and generate an HTML table with links to reports." ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Perform a dry run without writing the HTML file.", + ) parser.add_argument( "--criterion-dir", type=str, @@ -372,6 +377,12 @@ if __name__ == "__main__": args = parser.parse_args() + if args.dry_run: + print( + "Dry run mode: No files will be written. Use --dry-run to skip writing the HTML file." + ) + sys.exit(0) + criterion_path = Path(args.criterion_dir) output_file_path = Path(args.output_file) diff --git a/.github/workflows/run-benchmarks.yml b/.github/workflows/run-benchmarks.yml index 27e5408..3742725 100644 --- a/.github/workflows/run-benchmarks.yml +++ b/.github/workflows/run-benchmarks.yml @@ -33,6 +33,16 @@ jobs: with: toolchain: stable + - name: Install Python + uses: actions/setup-python@v4 + - name: Install uv + uses: astral-sh/setup-uv@v5 + - name: Setup venv + run: | + uv venv + uv pip install pandas + uv run .github/scripts/custom_benchmark_report.py --dry-run + - name: Run benchmarks run: cargo bench --features bench @@ -44,8 +54,7 @@ jobs: echo "No benchmark reports found, skipping custom report generation." exit 1 fi - pip3 install pandas - python3 .github/scripts/custom_benchmark_report.py + uv run .github/scripts/custom_benchmark_report.py - name: Upload benchmark reports uses: actions/upload-artifact@v4