Development, testing, and CI/CD automation scripts for the VersaTiles Rust workspace.
| Script | Purpose |
|---|---|
check.sh |
Run all quality checks (Rust + Node.js + Markdown) — run before committing |
build-release-with-gdal.sh |
Build release binary with GDAL support |
release-package.sh |
Create and tag a versioned release |
Build the debug binary with GDAL support enabled.
./scripts/build-debug-with-gdal.shRequires GDAL development libraries — install first with install-gdal.sh.
Build the release binary with GDAL support. Optionally installs it to /usr/local/bin.
./scripts/build-release-with-gdal.sh [--install]Requires GDAL development libraries — install first with install-gdal.sh.
Build the GDAL-enabled Docker image (versatiles-gdal) from docker/gdal-debian.Dockerfile.
./scripts/build-docker-gdal.shBuild and smoke-test Docker images for all supported Linux base images (debian, alpine, scratch) on linux/amd64.
./scripts/build-docker-images.shRuns selftest-versatiles.sh inside each image after building. Requires Docker Buildx.
Generate Rust API documentation with cargo doc.
./scripts/build-docs.shClears ./doc/ and rebuilds HTML docs for all workspace crates (excluding dependencies).
Regenerate the pipeline and config reference READMEs from the built binary.
./scripts/build-docs-readme.shBuilds a debug binary with GDAL and overwrites:
versatiles_pipeline/README.md— fromversatiles help --raw pipelineversatiles/CONFIG.md— fromversatiles help --raw config
Run all quality checks: Rust, Node.js, and Markdown. Run this before committing or opening a pull request.
./scripts/check.shDelegates to check-rust.sh, check-node.sh, and check-markdown.sh in order.
Run all Rust quality checks across the workspace.
./scripts/check-rust.shSteps: rustfmt, cargo check (multiple feature combinations), clippy -D warnings, tests with all features, doc build with -D warnings.
Run all Node.js quality checks for the versatiles_node package.
./scripts/check-node.shSteps: npm install (if needed), debug build, TypeScript typecheck, ESLint, Vitest tests, example tests, Prettier format check. Skips if versatiles_node/ does not exist.
Lint all Markdown files in the repository with markdownlint-cli2.
./scripts/check-markdown.shDeveloper test script: format, lint, and test the Rust workspace on Unix.
./scripts/test-unix.sh [extra-cargo-args]Runs rustfmt, clippy (binary + lib, multiple feature combinations), and cargo test (bins, lib, doc tests).
Run Rust quality checks on Windows (PowerShell equivalent of test-unix.sh).
./scripts/test-windows.ps1Generate code coverage reports with cargo llvm-cov.
./scripts/test-coverage.sh [extra-args]Outputs lcov.info at the repo root. Skips e2e tests (e2e_ prefix).
Measure and analyse per-test runtimes to identify slow tests.
./scripts/test-timing.sh [cargo-test-args]
./scripts/test-timing.sh --package versatiles_pipeline
./scripts/test-timing.sh -- my_specific_testRequires the nightly toolchain (rustup toolchain install nightly). Outputs a ranked list of the 30 slowest tests and a per-module summary.
Run all unit tests with per-test timing via libtest's --report-time flag.
./scripts/perf-benchmarks.shRequires the nightly toolchain. For a richer analysis with ranking and module summaries, use test-timing.sh instead.
Run lossless compression benchmarks for WebP and PNG image formats.
./scripts/bench-lossless.shExecutes example binaries from the versatiles_image crate.
Smoke-test the versatiles binary with a convert and serve command.
./scripts/selftest-versatiles.sh [path-to-binary]Defaults to versatiles on PATH. Used inside Docker image builds to verify the binary works in the target environment.
Install GDAL development libraries via the system package manager.
./scripts/install-gdal.shSupports Debian/Ubuntu (apt), Alpine (apk), and macOS (brew). Required before building with the gdal feature.
Install the VersaTiles binary on Unix by downloading the correct precompiled release binary.
curl -Ls "https://github.com/versatiles-org/versatiles-rs/releases/latest/download/install-unix.sh" | sudo shInstall the VersaTiles binary on Windows by downloading the correct precompiled release binary.
./scripts/install-windows.ps1Interactively create a versioned release by bumping the version, tagging, and committing.
./scripts/release-package.sh # interactive menu
./scripts/release-package.sh patch # patch / minor / major / alpha / beta / rc / devAfter running, push with git push origin main --follow-tags to trigger the CI release workflow.
Validate and optionally sync the version between Cargo.toml and package.json.
./scripts/sync-version.shUpdate Rust dependencies to their latest compatible versions.
./scripts/upgrade-deps.shFind unused dependencies in the workspace with cargo machete.
./scripts/audit-unused-deps.shAnalyse the size of the release binary, breaking down contributions by crate and dependency.
./scripts/analyze-binary-size.shGenerate a documentation coverage report for all public API items.
./scripts/doc-coverage-report.shProfile the versatiles binary on macOS using Instruments (CPU Profiler).
./scripts/profile-macos.shRequires Xcode Instruments. Edit the script to change the profiling target or arguments.
Load-test a local tile server with parallel HTTP requests.
./scripts/stress-ddos.shSends 300 tile requests (10 in parallel) to localhost:8080 and reports total elapsed time. Requires GNU parallel and a running server.
CI script: create a draft GitHub release for the latest version tag.
Fetches the two most recent version tags, assembles a changelog from commits between them, and creates a draft pre-release. Intended for use inside GitHub Actions.
CI script: package a compiled binary as .tar.gz and upload it to a GitHub release.
./scripts/workflow-pack-upload.sh <folder> <filename-stem> <tag>PowerShell equivalent of workflow-pack-upload.sh for Windows CI runners.