Habitat 0.24.0 Released

We are super satisfied to announce the release of Habitat 0.24.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!

##Node.js Scaffolding
For all of the node.js fans, aficionados, workpeople out there, Habitat now has a scaffolding for you!
Node Scaffolding is a Habitat package which helps you build your Node.js-based web applications, services, and processes (hereafter referred to as “apps”) into a package which runs consistently
on a wide range of containers, virtual machines, or servers via the Habitat Supervisor. The Supervisor will facilitate clustering, discovery of external services such as databases, dynamically update configuration and credentials, coordinate reliable rolling updates, and a lot more! Check it out, and we are excitedly awaiting your feedback!

Node Scaffolding Quickstart
Node Scaffolding Documentation

##New Supervisor commands & aliases

  • Adds hab sup term command: this will gracefully stop a supervisor
    if one is running. This is the opposite of hab sup run
  • Adds hab term alias
  • Adds hab run alias
  • Adds the counterpart to hab start - hab stop
  • hab service has been renamed to hab svc. This is now a common command that we have begun to run with the multi-tenant supervisor
  • We’ve shortened hab package to hab pkg and this brings us inline with that standard
    *Added hab svc status command. This forwards to hab-sup status #2359
  • Improvements to hab svc status command: adds formatting to make output more friendly for machines to read, adds service group to output, and allows you to add style to output #2414

##Habitat Studio Experience Enhancements #2418
####Add ll & la aliases in default Studio type.

  • alias ll='ls -l'
  • alias la='ls -al'

####Adds emacs function which runs mg unless emacs is found.
Did you know that every default Studio has a tiny emacs-like text editor called mg installed? Well, enough emacs fans didn’t know this so this change is an attempt to make it a bit more discoverable.

A function called emacs is added into the default Studio type’s Bash profile which will find and run a real emacs if found on PATH and otherwise will call the mg program.

For more information about mg, check out: http://man.openbsd.org/OpenBSD-current/man1/mg.1

####New Environment Variable
A new environment can be passed to hab studio enter called HAB_STUDIO_SUP which does 2 things: provide a way to not run a Supervisor or to customize how the Supervisor runs by passing additional command line arguments such as --peer, etc.

When set to false, no, or 0, a Supervisor will not run automatically in an interactive Studio, allowing a user to export-and-forget if that is their preference.

Alternatively, when non-empty (and not set to a value above), it is assumed that the value contains extra command line arguments that will be passed to hab sup run. For example, to interactive enter a Studio with a Supervisor running, joined to a ring you could run:
env HAB_STUDIO_SUP='--peer' hab studio enter

####New In-Studio Helper Functions
Three new functions are set inside an interactive Studio session:

  • sup-log - Tails the Supervisor’s output (this replaces slog)
  • sup-term - Terminates the Supervisor running in the background
  • sup-run - Runs a Supervisor in the background. You can pass additional arguments such as --peer, etc. This is what is called to automatically run the Supervisor in the background.

For those who desire less typing, the following aliases exist:

  • alias sl='sup-log'
  • alias st='sup-term'
  • alias sr='sup-run'

Channels are now respected when an update strategy is specified on svc start or svc load by passing --channel {name} #2410

Features & Enhancements

Bug fixes

  • Links in the dashboard’s recent-packages list are broken #2346
  • Service config not available via API #2250
  • Remove uniqueness constraints on keys #2424 (christophermaier)
  • ensure keys inserted into postgres remain unique #2382 (mwrock)
  • ARM returns u8, x86 i8, changed from hard-coded to whatever libc reco… #2363 (lamont)
  • Fully serialize the pkg field of the Service struct #2361 (reset)
  • Render pkg.ident as string in RenderContext #2355 (reset)
  • [studio] Fully canonicalize the Studio root path through symlinks. #2349 (fnichol)
  • Fix auth for public keys #2344 (chefsalim)
  • Use origin_invitation_id for invitation acceptance #2343 (christophermaier)
  • Set proper default path for depot data path in builder-api plan #2333 (reset)
  • Fix builder-admin ELB configuration #2332 (reset)
  • Always config scheduler & jobsrv with all shards #2329 (reset)

Read the full Changelog on Github