Skip to main content

Jolt

Build anything, once. Jolt runs your build, test and deployment tasks, caches what they produce, and shares the results with your whole team and CI.

PyPI Python versions Documentation License

Tasks are plain Python classes. Jolt works out what each task depends on, computes a fingerprint of everything that influences its output, and skips it if that output already exists in a cache, on your machine or on a server shared with everyone else. What has been built once is never built again, whether by you, a colleague or a CI job. In one real-world deployment, Jolt cut the CI build time from 10 hours to 10 minutes.

Developers and CI share artifacts through a cache, and send tasks to a build cluster

Highlights

Recipes in Python

Tasks, dependencies and parameters are Python code, so there is no new language to learn and no limit to what a task can do.

Cached by content

A task’s identity is a hash of its source, parameters, files and dependencies, so a cached result is only reused when nothing that matters has changed.

Shared caches

Artifacts are uploaded to a cache server, and anyone who needs the same result downloads it instead of building it.

Distributed builds

jolt build -n sends tasks to a cluster of workers that run them in parallel. The scheduler, workers and cache run as containers on Docker or Kubernetes.

Over 150 packages

Compilers, libraries and tools, from zlib and OpenSSL to LLVM, Qt and gRPC, built from source and kept apart for each platform and compiler.

One command for everything

C++, Rust, Go, Node.js, Python or containers: every task is built the same way, so nobody needs to learn the others’ build tools.

Secure by default

TLS between all services, tokens or single sign-on with an OpenID Connect provider, and builds that only their owners can stop.

Kind to your machines

A built-in jobserver shares the CPUs between all builds on a machine and slows down before memory runs out.

Quick start

Install Jolt from PyPI:

$ pip install jolt

Write a task in a file called hello.jolt:

from jolt import Task


class Hello(Task):
    """ Says hello, and publishes it. """

    def run(self, deps, tools):
        tools.write_file("hello.txt", "Hello, world!")

    def publish(self, artifact, tools):
        artifact.collect("hello.txt")

Build it:

$ jolt build hello
$ jolt build hello    # Nothing to do: the artifact is already cached

Change the message, and Jolt builds it again. Change it back, and the original artifact is used without building anything.

Examples

A C++ application built with CMake, using the fmt library from Jolt’s packages. Jolt builds fmt first, or downloads it if someone already has, and tells CMake where to find it:

from jolt.plugins import cmake
from jolt.pkgs import fmt


class App(cmake.CMake):
    """ The application, in the app directory. """

    requires = ["fmt"]
    srcdir = "app"

A web application built with a Node.js that Jolt provides, so the build doesn’t depend on what happens to be installed on the machine:

from jolt import Task
from jolt.pkgs import nodejs


class WebApp(Task):
    """ Builds the web application. """

    requires = ["nodejs"]

    def run(self, deps, tools):
        with tools.cwd("webapp"):
            tools.run("npm ci")
            tools.run("npm run build")

Parameters select variants of a task, each cached separately:

$ jolt build fmt:shared=true
$ jolt display app    # Show what app depends on
$ jolt inspect app    # Show its parameters, identity and cache status

Scaling up

Point Jolt at a cache server, and everyone shares their artifacts:

[cache]
http_uri = https://cache.example.com:8080

Add a scheduler and workers, and builds run in the cluster:

$ jolt build -n app

The build cluster guide shows how to deploy the services on Docker or Kubernetes, and how to secure them with TLS, tokens and single sign-on.

Installing

From PyPI, for Python 3.9 or later:

$ pip install jolt

As a Docker image:

$ docker run robrt/jolt

Learn more

Jolt is free software, licensed under the GNU General Public License v2.

Metadata

Release files for jolt 0.10.75

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jolt 0.10.75
File Size Uploaded Provenance Actions
jolt-0.10.75.tar.gz 17.0 MB Without provenance Details for jolt-0.10.75.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for jolt 0.10.75
File Interpreter ABI Platform Actions
jolt-0.10.75-py3-none-any.whl Python 3 none any Details for jolt-0.10.75-py3-none-any.whl

Total release size: 34.3 MB

Release files / jolt-0.10.75.tar.gz

Download URL jolt-0.10.75.tar.gz
Size 17.0 MB
Tags Source
SHA-256 checksum
How to use checksums
a31e63591ae7c1cbb106613dc7fd2fa36cdd6ae36f284af45849022189925b02
BLAKE2b-256 checksum
How to use checksums
f2a1086d5094862e6307cd74ce1505436ce5a12246cbb752b828ab884fb75db5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / jolt-0.10.75-py3-none-any.whl

Download URL jolt-0.10.75-py3-none-any.whl
Size 17.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
a9ad903d76b557c0aff630f3f1619f252c29bfb02e19cb7ef097fe4004661241
BLAKE2b-256 checksum
How to use checksums
f47daec149b930e2b2c1507d7b98fbcbe13bb2a7ddc5094976e0c6d0e171c1ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Security for jolt 0.10.75

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.10.75 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page