Multi-process orchestration for development and integration testing.
Keiretsu is an orchestration manager primarily designed for local development and integration testing.
It allows you to specify dependencies that should be running/available before the start of the local application, triggers setup/teardown hooks, and applies a consistent environment to all child processes ensuring deterministic and repeatable configuration.
Keiretsu
Table of Contents
Introduction
Keiretsu is an orchestration manager primarily designed for local development and integration testing.
It allows you to specify dependencies that should be running/available before the start of the local application, triggers setup/teardown hooks, and applies a consistent environment to all child processes ensuring deterministic and repeatable configuration.
Installation
GHC 7.6.2
or later is required to compile Keiretsu.
cabal install
Configuration
There are 3 configuration file formats which Keiretsu will read, controlling various aspects such as dependencies, processes, and the environment.
An example for a Haskell project named proxy
with two dependencies, users
and images
would look as follows:
+ images/
| + dist/
| | + build/
| | | + images/
| | | + images
| + src/
| | + Main.hs
| + .env
| + Intfile
| + Procfile
+ proxy/
| + dist/
| | + build/
| | | + proxy/
| | | + proxy
| + src/
| | + Main.hs
| + .env
| + Intfile
| + Procfile
+ users/
+ dist/
| + build/
| | + users/
| | + users
+ src/
| + Main.hs
+ .env
+ Intfile
+ Procfile
Intfile
The Intfile
specifies project dependencies with a key: value
line based format.
An example Intfile
for the proxy
service (from above) which specifies two dependencies on users
and images
:
users: ../users
images: ../images
This will make Keirestu recurse into those sub-directories and continue looking for the various configuration file types.
Procfile
Keiretsu uses an identical format to foreman'sProcfile
to describe processes.
An example Procfile
for the users
service (from above) specifying both web and redis proctypes:
redis: redis-server --port $PORT
web: ./dist/build/web/web -p $PORT
This will make Keiretsu will start two processes for this dependency.
Proctypes are simply unique names used to identify the related command within a dependencies' scope. Currently multiline proctypes are not supported.
.env
.env
files are used to supplement the process environment with configuration values for a specific dependency.
Again, using the example project layout from above if the images
service had a .env
file in the project directory with the following:
IMAGES_TMP: /var/tmp/images-service
The key/value pairs would be loaded into the environment and available to all processes.
Contributing
For any problems, comments or feedback please create an issue here on GitHub.
Licence
keiretsu is released under the Mozilla Public License Version 2.0