

Welcome! Garden is a full-featured development framework for containers and serverless backends, designed to make
it easy to develop and test distributed systems.
Status
The project is in early alpha (or developer preview, if you prefer). This means APIs may well change (not drastically,
but still), overall stability will improve and platform support is still limited.
All that said, Garden can already be highly useful if the following applies to you:
- You're deploying to (or transitioning to) Kubernetes.
- You develop on Mac or Linux.
- You work mostly with containers today (but perhaps plan on adopting serverless platforms in the future).
- You keep all your services in a single repository (multi-repo support coming soon!).
- You really don't want to spend your precious hours building your own developer tooling!
If that sounds right for you, please give it a go and don't hesitate to report issues.
Features
With Garden, you can...
- Configure and deploy a fleet of services to a local Kubernetes cluster using simple declarations.
- Use an integrated framework for building, testing and deploying services.
- Easily run end-to-end tests across multiple services without waiting for a slow CI pipeline.
- Automatically build, deploy and/or test when your code changes, using the
--watch
flag or the garden dev
command. - Manage build and runtime dependencies across all your services.
- Leverage a suite of commands and helpers to facilitate developing and running your stack.
- Write code the way you want, and run your production system however suits you! Garden does not impose any new
libraries or languages aside from the config files.
Garden is also designed to be pluggable and modular, with Kubernetes being just one plugin (albeit an important one).
Over time we will add native support for a variety of platforms, including AWS (Lambda, ECS, Fargate and more),
GCP, Heroku, OpenFaaS... and the list will continue growing.
Please read the Motivation section in our documentation
for a brief discussion on why we're building Garden.
Usage
Head over to our Getting Started guide for details
on how to set up and use Garden, or look through our Simple Project
guide to get a quick sense of how it works.
Contributing
We welcome any and all contributions to Garden! What we're trying to achieve is a big task, and
developers have a lot of diverse needs, so we need and appreciate your input, whether it's through
code, docs, issues or developing plugins for your needs.
For more detailed guidelines, see CONTRIBUTING.md.
License
Mozilla Public License 2.0 (MPL-2.0)
v0.2.0 (2018-06-27)
Bug Fixes
- malformed output from
ctx.getStatus()
(#134) (d2227210) - pin npm version in CircleCI (206d9467)
- error in
Module.getVersion()
(6491678e) - broken
npm run dev
after package.json changes (8bd62173) - module versions are now handled properly across multiple repos (c647cf9b)
- test result versions now correctly account for test dependencies (8b8a6bde)
- add missing lodash dependency (!) (2abb90c0)
- don't run dist script on every npm install (c73f5e13)
- ci: only do clean install from package-lock (3c44191e)
- cli: delete environment command wasn't linked to parent (e0789f14)
- cli: set error code when calling CLI with bad command (bb24acd0)
- cli: enforce single character option aliases (a49e7991)
- cli: add missing shebang line in garden binary (632925d1)
- container: build issue where Dockerfile is copied or generated (c0186d95)
- core: potential race-condition when parsing modules (944e150d)
- ctx: better error.log output from
processModules()
(b0eb86e7) - integ: fix init env command in integ test script (f644ec2e)
- k8s: better error message when kubectl fails (41f14828)
- k8s: incorrect use of execa (cecbaa36)
- k8s: patch bugs in kubernetes client (e45f72a2)
- logger: remove unnecessary call to stopLoop (db845610)
- vsc: handle weird stat behavior by wrapping it (df11647e)
Code Refactoring
- consistently use verb before noun in CLI (e88e55e6)
- switch to official kubernetes client library (8ccd9a1a)
- rename project.global to project.environmentDefaults (#131) (3ebe1dca)
Features
- generate homebrew formula on publish (72c4b4d7)
- build: Handle config changes in auto-reload. (9d9295f5)
- k8s: add helm module type (122e6dda)
Performance Improvements
- implemented caching of module version (e451f7a6)
- got rid of all synchronous subprocess and filesystem calls (9b624248)
BREAKING CHANGE
The following CLI commands have now been renamed, and any scripts
using them need to be updated accordingly:
config delete
-> delete config
config get
-> get config
config set
-> set config
environment configure
-> init environment
environment destroy
-> delete environment
status
-> get status
Existing garden.yml files will need to be updated if they use the
project.global key.
<a name="v0.1.2"></a>