Habitat 0.31.0 Released!

We are happy to announce the release of Habitat 0.31.0. 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!

Highlights

Scaffolding Releases

core/scaffolding-node is now at 0.6.1

  • updated node to latest LTS (6.11.2)

core/scaffolding-ruby is now at 0.8.4

  • the results directory is now excluded from package builds
  • scaffolding now returns more useful errors when a $pkg_source is included

core/bundler is now at 1.15.4

  • packaged bundler is now version 1.15.4

Run hab as a non-root user

#3028 kicks off work to run hab as a non-root user. Setting the environment variable HAB_NON_ROOT will enable the hab cli to install packages without root permissions. This is the first step to enabling high performance computing clusters and others to have a meaningful non-root running capability: interested parties are invited to participate in the on-going conversation about how to move this forward.

Updates to the Supervisor

[sup/functional] Support running functionals as a non-root user.: For the current functional tests which exercise hook file creation, the service user running the service is not critical and not the subject under test. Therefore, when preparing a fixture package, the following package metafiles will be created unless one is present in the fixture
directory:

SVC_USER: defaults to the current user running the tests
SVC_GROUP: defaults to the current user’s primary group running the
tests

This approach will pass the service user/group assertions that the Supervisor makes when creating the service directories without changing production/runtime behavior.

As a result, and with the inclusion of #3022, all doc, unit, and functional tests for the Supervisor can be run with a non-root user.

[sup/functional] Print sup output in tests if --nocapture is set: This change helps to better debug when functional supervisor tests are failing. Existing behavior is preserved when running the tests: that is to not output supervisor messages. However, if a developer wishes to see more test output using the standard --nocapture flag, then the supervisor output will be emitted. To see the difference you can run:
cd components/sup cargo test -- --nocapture
#3022, #3023

Bug fix: [hab] Install minimum version of exporters when used.

This change updates the install-on-use behavior for all packages which provide package export functionality (i.e. the implementations for hab pkg export *). The behavior now is the same as the behavior for hab sup, hab run, hab svc *, hab config apply, hab pkg build, and hab studio * subcommands, where the same x.y.z version is installed if missing.

Prior to this change, upgrading the version of core/hab would not upgrade the version of core/hab-pkg-dockerize (or other export packages).

Note that in this change, 2 options were removed that affected the hab pkg export subcommand, namely --hab-url and hab-channel. These options were only used to install the core/hab-pkg-dockerize (and similar) package itself which should not be required. Most importantly, those options did not affect or influence which version of core/hab, core/hab-launcher, and core/hab-sup were exported various export types. A future change will introduce a re-written hab-pkg-dockerize which fully supports targeting a different Depot URL and channel for “base packages” such as the Supervisor and the Launcher.

#3100 closes #3093

Features & Enhancements

Bug fixes

  • Packages used with hab pkg export \* must install same version if missing. #3093
  • Supervisor crashing on acceptance environment #3042
  • Census not present on all nodes #2976
  • hab studio enter: Doesn’t create valid chroots on non-FHS-compliant systems #994
  • [hab] Install minimum version of exporters when used. #3100 (fnichol)
  • Make the first binding function return only live members #3076 (christophermaier)
  • serialize non-table keys of config before table keys #3059 (mwrock)
  • Fix thread panic when building Census in Supervisor #3054 (reset)
  • [sup] Fix hook table unit test which relied on lazy static value. #3037 (fnichol)
  • [core] Add explicit, testing-only fs root support. #3030 (fnichol)
  • Pass file name to template render functions when rendering hooks #3014 (rarenerd)

Closed issues:

  • Tracking - New ruby-scaffolding broken for non-standard repo layouts #3078
  • Tracking issue - Investigate bundler version issues in Ruby scaffolding #3046

Read the full Changelog on Github