Skip to content

Reproducible build instructions

These steps document a minimal, reproducible build for creating Python sdist/wheel artifacts locally. CI/release workflows already build and publish artifacts with attestations and an SBOM.

Python

Create and activate a virtual environment

cd python
python -m venv .venv
.venv/Scripts/activate      # Windows
# source .venv/bin/activate # Linux/macOS

Install build tools (use the pinned release-tools if available)

python -m pip install --upgrade pip build
if [ -f requirements/release-tools.txt ]; then
  python -m pip install -r requirements/release-tools.txt
fi

Build sdist and wheel

python -m build

Verify produced artifacts and SBOM (CI attaches SBOM and attestations)

ls dist/
cat sbom.cdx.json  # if generated by release workflow

For reproducible builds across environments, use the same Python

micro-version and the pinned requirements/* files used in CI.

Julia

Install Julia 1.9+ from https://julialang.org/downloads/

Instantiate the project

cd julia
julia --project=. -e 'using Pkg; Pkg.instantiate()'

Run tests

julia --project=. -e 'using Pkg; Pkg.test()'

Run benchmarks

julia --project=. benchmarks/benchmarks.jl

Local PR preflight with Docker

Use the local CI stack to run CI-equivalent checks for workflows and all language ports before opening a pull request.

Requirements

  • Docker Desktop with WSL integration enabled (Windows)
  • docker compose available in WSL

Run all local CI targets

bash scripts/local-ci/run.sh

Run specific targets

bash scripts/local-ci/run.sh workflow-lint python rust julia cpp r

Include mutation testing for Python

RUN_MUTATION=true bash scripts/local-ci/run.sh python

Windows helper (runs in WSL automatically)

./scripts/local-ci/run.ps1
./scripts/local-ci/run.ps1 python rust

Docker stack location

  • Compose file: docker/local-ci/docker-compose.yml
  • Service scripts: scripts/local-ci/*.sh
  • PR automation agent: .github/agents/pr-local-ci-guardian.agent.md