We are delighted to announce the release of Habitat 0.20.0. As usual, we have a number of new features as well as bug fixes, so please read on for all the details. If you just want the binaries, head on over to our downloads page: https://www.habitat.sh/docs/get-habitat/ Thanks again for using Habitat!
Breaking Change: Multi-Service Supervisor
Habitat 0.20.0 includes a major update to the Supervisor. It can now supervise multiple services at once, out of the box. This has been a top feature request, and means that if you are running Habitat on bare metal or a virtual machine there is only need for one supervisor. This is also useful in a container environment if you require a secondary so-called "sidecar" service running alongside your primary service. Read the Multiple services documentation to learn more. There's also an excellent write up about how to use this feature on PR #1976 (although please note, it is no longer behind a feature flag). And there's more information about starting and stopping services on PR #2038.
This blog about using Habitat and Inspec together explores one of many ways you can benefit from this new functionality (skip to the section titled Application + Compliance == <3 if you're already well versed in both Habitat and Inspec).
An important note about potentially breaking behavior. This change introduces one breaking change that will impact existing Habitat users who run more than one Supervisor per host/VM/container/etc.
This only applies when running more than one Supervisor. You know you have set this up because you will have had to explicitly set non-default values for the
--listen-http options. If you have done this, there are two ways to update to this new Supervisor to choose from:
- Eliminate the multiple Supervisors launching via SystemD, init, etc., launch a single Supervisor with
hab sup run (note the lack of package identifiers, topology strategies, etc.), and run a
hab service load per service.
- Alternatively, for each existing Supervisor, add an
--override-name option to the command with some unique value. This will allow the Supervisors to write their own state information to distinctly different directories. Once stable, you are highly encouraged to migrate to the single Multi-Service Supervisor strategy as explained directly above.
If you have any questions or concerns, feel free to contact the Habitat team in Slack (http://slack.habitat.sh/), on our forums (https://forums.habitat.sh/), or by email (email@example.com). For the fastest response, Slack is highly recommended.
UX Evolution: Scaffolding
Scaffolding is a way for a new user who is using a common development pattern to use a predefined
pkg_scaffolding, and then have Habitat create default implementations for your application's build phases, run hooks, and default health check hooks. The idea is to make it super easy for new users who have applications with standard web stacks to get started with Habitat without needing to do much or any additional customization. Read the docs to learn more.
There are currently initial scaffoldings written for Go and Python, with more to come. Let us know if there is a particular scaffolding you would like to see!
Features & Enhancements
- Document building and using
- Habitat EventSrv #1962
hab pkg binlink work with multiple files #1921
- Make the CI builds publish on creation of tags to Bintray Stable #1885
- Appveyor and Travis should upload windows and linux harts to temporary depot #1877
hab plan init #1859
- Gateway API does not return health check output #1548
- RAML depot/builder-api endpoints #845
- RAML depot/builder-api endpoints #845
- Update Scaffolding documentation. #2049 (rhass)
- Add load/unload/stop/run command to Supervisor #2038 (reset)
- First pass at the eventsrv #2019 (raskchanky)
- Default binlink to all bins in package #2007 (nsdavidson)
- Add 'first' to service_entry. #2006 (bodymindarts)
- Add support for Scaffolding to plan-build. #2000 (rhass)
- Remove unused errors from Error enum in Supervisor #1998 (reset)
- Add mutually exclusive process lock to Supervisor #1992 (reset)
- Improvements to supervisor's raml documentation #1991 (reset)
- Add Bash Cheat Sheet to reference list. #1990 (rhass)
- [sup] Move location of adding/removing services in
Manager tick loop. #1988 (fnichol)
- Decouple http_gateway module from Manager's shared state #1987 (reset)
- [sup] Refactor
SpecWatcher to call notify's sync API. #1982 (fnichol)
- [sup] Set correct
PATH for all service child processes. #1981 (fnichol)
- [sup] Activate the MVP multi-service Supervisor! (behind feature flag) #1976 (fnichol)
- Remove accidentally committed dat file #1975 (reset)
- [sup] Add feature flag support to Supervisor program. #1974 (fnichol)
ServiceSpec & implement
SpecWatcher to load/unload service definitions from disk #1969 (fnichol)
- back public origin keys in postgres #1965 (mwrock)
- Add documentation for blueprints. #1959 (rhass)
- bump dev version #1943 (mwrock)
- remove mac release after publish #1942 (mwrock)
- Supervisor persisting and loading state from disk #1860 (eeyun)
Read Full Changelog