Build And Testing Environments as Code Tool
![Batect logo](./readme/logo.svg)

[![Build Status](https://github.com/batect/batect/workflows/CI/badge.svg)](https://github.com/batect/batect/actions?query=workflow%3ACI+branch%3Amain)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/2698/badge)](https://bestpractices.coreinfrastructure.org/projects/2698)
[![License](https://img.shields.io/github/license/batect/batect.svg)](https://opensource.org/licenses/Apache-2.0)
[![Chat](https://img.shields.io/badge/chat-on%20GitHub%20Discussions-brightgreen.svg)](https://github.com/batect/batect/discussions)

Batect allows you to define your development tasks (building, running, testing, linting and more) in terms of one or more
Docker containers, run those tasks quickly and consistently everywhere, and easily share them with your team.

Check out [batect.dev](https://batect.dev) for documentation, tutorials, sample projects and news.

## Documentation

All documentation is available on [the website](https://batect.dev). Highlights include:

* [Introduction](https://batect.dev/docs/)
* [Getting started tutorial](https://batect.dev/docs/getting-started/tutorial)
* [Configuration file reference](https://batect.dev/docs/reference/config)
* [Sample projects](https://batect.dev/docs/getting-started/sample-projects)
* [Comparison with other tools](https://batect.dev/docs/getting-started/comparison)

## Videos

* *Dockerised local build and testing environments made easy* at Container Camp AU (July 2019): [video](https://www.youtube.com/watch?v=qNzv7IuTp50)

  Also presented at DevOpsDays Auckland (October 2019), DDD Sydney (September 2019) and DDD Melbourne (August 2019).

* *Build & Testing Environments as Code: Because Life's Too Short Not To* at Evolution by ThoughtWorks (June 2018):
  [video](https://www.thoughtworks.com/evolution-by-thoughtworks/content#Presentations),
  [slides](https://www.slideshare.net/ThoughtWorks/charles-korn-build-testing-environments-as-code-because-lifes-too-short-not-to-evolution-102970374)

## Support and community

Batect uses [GitHub Discussions](https://github.com/batect/batect/discussions) for community support and Q&A.

## Feedback

Please [open an issue on GitHub](https://github.com/batect/batect/issues/new) if you run into a problem or have a suggestion.

You can see what new features and improvements are planned in the [roadmap](ROADMAP.md).

## Contributing

See [the contribution guide](CONTRIBUTING.md).

## Acknowledgements

Thank you to the following people for their bug reports, pull requests, suggestions and feedback, in alphabetical order:

<!-- CONTRIBUTOR_LIST_STARTS_HERE -->
[@Abhisha1](https://github.com/Abhisha1),
[@aidansteele](https://github.com/aidansteele),
[@akamanocha](https://github.com/akamanocha),
[@alexswilliams](https://github.com/alexswilliams),
[@alpha-er](https://github.com/alpha-er),
[@andeemarks](https://github.com/andeemarks),
[@asharma8438](https://github.com/asharma8438),
[@askfor](https://github.com/askfor),
[@assafw](https://github.com/assafw),
[@b-a-byte](https://github.com/b-a-byte),
[@BethanyDrake-x](https://github.com/BethanyDrake-x),
[@Bidaya0](https://github.com/Bidaya0),
[@binkley](https://github.com/binkley),
[@boxleytw](https://github.com/boxleytw),
[@Byron-TW](https://github.com/Byron-TW),
[@camjackson](https://github.com/camjackson),
[@carloslimasis](https://github.com/carloslimasis),
[@catacgc](https://github.com/catacgc),
[@cazgp](https://github.com/cazgp),
[@chandantp](https://github.com/chandantp),
[@chinwobble](https://github.com/chinwobble),
[@csxero](https://github.com/csxero),
[@da4089](https://github.com/da4089),
[@damian-bisignano](https://github.com/damian-bisignano),
[@DamianBis](https://github.com/DamianBis),
[@dan-neumegen-xero](https://github.com/dan-neumegen-xero),
[@DavidHe1127](https://github.com/DavidHe1127),
[@dflook](https://github.com/dflook),
[@diachedelic](https://github.com/diachedelic),
[@DiegoAlpizar](https://github.com/DiegoAlpizar),
[@diffidentDude](https://github.com/diffidentDude),
[@diwang-xero](https://github.com/diwang-xero),
[@doug-ferris-mondo](https://github.com/doug-ferris-mondo),
[@eichelkrauta](https://github.com/eichelkrauta),
[@ekamara](https://github.com/ekamara),
[@erMaurone](https://github.com/erMaurone),
[@flo-everett-xero](https://github.com/flo-everett-xero),
[@frglrock](https://github.com/frglrock),
[@fwilhe2](https://github.com/fwilhe2),
[@gabrielsadaka](https://github.com/gabrielsadaka),
[@GerardWorks](https://github.com/GerardWorks),
[@GoodDingo](https://github.com/GoodDingo),
[@heyheman11](https://github.com/heyheman11),
[@hongyuanlei](https://github.com/hongyuanlei),
[@hpcsc](https://github.com/hpcsc),
[@hussein-joe](https://github.com/hussein-joe),
[@ineffyble](https://github.com/ineffyble),
[@isaac-patterson](https://github.com/isaac-patterson),
[@jagregory](https://github.com/jagregory),
[@jbduncan](https://github.com/jbduncan),
[@jmewes](https://github.com/jmewes),
[@jobasiimwe](https://github.com/jobasiimwe),
[@kbalston](https://github.com/kbalston),
[@Letitia-May](https://github.com/Letitia-May),
[@mario-prabowo-xero](https://github.com/mario-prabowo-xero),
[@marty-macfly](https://github.com/marty-macfly),
[@mdlnr](https://github.com/mdlnr),
[@MichaelKnightXero](https://github.com/MichaelKnightXero),
[@minnn-minnn](https://github.com/minnn-minnn),
[@mjstrasser](https://github.com/mjstrasser),
[@Mknight492](https://github.com/Mknight492),
[@Mubashwer](https://github.com/Mubashwer),
[@mylesmacrae](https://github.com/mylesmacrae),
[@nashvan](https://github.com/nashvan),
[@nesl247](https://github.com/nesl247),
[@nkrul](https://github.com/nkrul),
[@or1can](https://github.com/or1can),
[@pameck](https://github.com/pameck),
[@paulvalla-zorro](https://github.com/paulvalla-zorro),
[@priorax](https://github.com/priorax),
[@ryanb6920](https://github.com/ryanb6920),
[@safiranugroho](https://github.com/safiranugroho),
[@Sami5](https://github.com/Sami5),
[@smozely](https://github.com/smozely),
[@SongGithub](https://github.com/SongGithub),
[@squirmy](https://github.com/squirmy),
[@sschuberth](https://github.com/sschuberth),
[@svishal9](https://github.com/svishal9),
[@TassSinclair](https://github.com/TassSinclair),
[@thirkcircus](https://github.com/thirkcircus),
[@Tobytee17](https://github.com/Tobytee17),
[@Tzrlk](https://github.com/Tzrlk),
[@wandrewni](https://github.com/wandrewni),
[@wilvk](https://github.com/wilvk),
[@wyvern8](https://github.com/wyvern8),
[@xdavidnguyen](https://github.com/xdavidnguyen),
[@yoyo-i3](https://github.com/yoyo-i3),
[@yoyo-ohno](https://github.com/yoyo-ohno),
[@yuzhanglong](https://github.com/yuzhanglong),
[@ZhuYeXero](https://github.com/ZhuYeXero),
[@zizhongzhang](https://github.com/zizhongzhang), and everyone else who has used the tool and provided feedback offline
<!-- CONTRIBUTOR_LIST_ENDS_HERE -->

Thank you to YourKit for providing a complimentary copy of the [YourKit profiler](https://www.yourkit.com/java/profiler).

And thank you to Thoughtworks for providing [me](https://github.com/charleskorn) a day of paid leave each month to work on
Batect. If you'd like to join us at Thoughtworks, [check out our current job openings](https://grnh.se/ab40b6a51us).
