Please is a cross-language build system with an emphasis on high performance, extensibility and reproduceability. It supports a number of popular languages and can automate nearly any aspect of your build process.

What can Please do?

Speed up your builds.

Please is designed to parallelise builds & tests to make the most of your CPU. It's written in Go so it's fast & efficient itself, and it can build just the required parts of your code on each invocation.

Help your deployment

All your code & dependencies get packed into a single file which can easily be deployed & run on a server. This helps deploy languages like Python which don't do this naturally.

Unify your build process.

Because Please can build many languages already (and you can easily write rules to teach it about others) you always invoke one tool to build any language or run any test, simplifying your continuous integration and development processes.

Continuous integration & pre-merge testing.

We've developed Please in tandem with our internal integration tools, so whenever any of our engineers merges a pull request, we invoke it to make sure any affected tests are passing before merging it in. Because Please allows fine-grained dependencies and knows them for every test, we can run just the affected ones to keep this step fast & lightweight.

Isolate your tests.

Got integration tests that need to spin up servers, write files, and find ports? No problem, by setting a flag on the test they can be run inside a Docker container to keep them from clashing with one another.