Batect
Keep your builds green and developers happy with the fast, consistent way to run your development and testing tasks everywhere.
Fast
Tasks are fast to start due to parallelisation and fast to run thanks to caching. We’ve seen 17% quicker execution than Docker Compose.
Save time and share tasks between projects with bundles, and use existing bundles to get up and running quickly.
Consistent
Free yourself from manual setup and maintenance of tools and dependencies: run builds, integration tests or deployments with a single command whether it’s the first time you’re using the project or the fiftieth.
And because Batect uses Docker to create a clean, isolated environment every time you run a task, there’s no more “works on my machine”.
Everywhere
Your machine, your colleagues’ machines and CI: everyone runs exactly the same thing, every time. Works on macOS, Linux and even Windows.
No installation required. Just drop the script in your project and run ./batect
.
Hello world in less than 30 seconds
containers:
my-container:
image: alpine:3.18.4
tasks:
say-hello:
description: Say hello to everyone
run:
container: my-container
command: echo 'Hello world!'
$ # Let's see what tasks are available $ ./batect --list-tasks Available tasks: - say-hello: Say hello to everyone $ # Let's run our task $ ./batect say-hello Running say-hello... my-container: running echo 'Hello world!' Hello world! say-hello finished with exit code 0 in 1.0s. $
Local integration testing in less than 30 seconds
Running build... build-env: running bundle exec rake prepareImage rm -rf /code/.batect/international-transfers-service/app mkdir -p /code/.batect/international-transfers-service/app cp Gemfile /code/.batect/international-transfers-service/app cp Gemfile.lock /code/.batect/international-transfers-service/app cp config.ru /code/.batect/international-transfers-service/app cp -r bin /code/.batect/international-transfers-service/app/bin cp -r lib /code/.batect/international-transfers-service/app/lib build finished with exit code 0 in 2.7s. Running journeyTest... database: starting container... exchange-rate-service: starting container... international-transfers-service: waiting for dependencies database and exchange-rate-service to be ready... build-env: waiting for cache initialisation to finish...