github garden-io/garden v0.10.0

latest releases: 0.12.71, edge-bonsai, 0.12.70...
4 years ago

Yowza! This may be our biggest release ever.

When we first started working on Garden, eighteen months ago, we knew that developing systems locally was a stop-gap solution. With 0.10, we're taking another leap towards providing the best possible developer experience by letting you move your development workflow off your machine, into shared development clusters.

We've published a blog post describing our motivation behind all this.

Shared development environments

Garden can now handle all building and testing in-cluster. This means you no longer need to run Kubernetes locally, but instead have a shared development cluster for your entire team. Each developer has a private namespace in the cluster, but shares the same build and test caches.

Think of how much time you, your team, and CI system waste downloading and building the same images, or testing the exact same combination of code. By moving your development to a shared cluster, each of these operations only needs to happen once.

For more information, see how to prep your cluster, and how to configure Garden to build remotely.

Combine dev and CI

Another advantage of shared development environments is that you can call garden test from CI, pointing it at the same environment you developed in. This will spin up your stack and run all your tests—most of which will be cached from development. You can also use Garden in CI to spin up preview environments, or tear them down.

This greatly simplifies the average CI set-up, as you can get rid of all your scripts that would usually handle this, and no longer need to maintain separate configuration for development and testing.

For more information, see how you can use Garden in CI!

And then some!

We’ve also included a large number of major and minor improvements and fixes,
including much improved deployment status checks for Kubernetes workloads. We now “fail faster” and give much more information when issues are detected while deploying.

For the full list of changes (which is rather long), get a cup of coffee and peruse the changelog below:

BREAKING CHANGES

k8s providers no longer default to /bin/sh -c as the entrypoint when running pods. This applies to tasks, tests and the run module command.

The --loglevel CLI option is now called --log-level

When using OpenFaaS with local-kubernetes you now need to use the local-openfaas provider, instead of openfaas. You also need to
manually delete any existing <my namespace>--openfaas namespaces from your cluster after upgrading.

Features

  • implement version check (9b077946)
  • config: add local.username and project.name config keys (8fb9b5fb)
  • container: allow configuring # of replicas for container services (ad7c973b)
  • k8s: add mechanism for cleaning up unused images in clusters (773365c3)
  • add analytics (#819) (a2fa49ec)
  • Implement get debug-info command (44f666e0)
  • cli: add a dedicated options command (8dd53003)
  • container: add configurable CPU and memory limits (77e71df5)
  • container: add command option (afbd9539)
  • core: providers can depend on and reference configs from each other (a67f5220)
  • core: add persistent ID for each working copy (b49ecc37)
  • core: allow .yaml endings for Garden config files (3a9195a0)
  • k8s: add Kaniko as a builder option (2ccd0395)
  • k8s: optionally enable ingress controller for remote k8s (6f321dcd)
  • k8s: in-cluster building (5d351025)

Improvement

  • k8s: bump default limits and sizes for cluster builder (6ec9f0a7)
  • config: allow non-string values to be output directly (52ad5faf)
  • config: allow chained conditionals in template strings (095e9436)
  • config: explicitly validate sub-paths when applicable (6343603b)
  • install: add install script for linux/mac and update docs (dbeb7544)
  • k8s: add explicit cluster-init command for remote clusters (0a70a068)
  • k8s: more robust and useful deployment status checks (4f1ff3be)
  • k8s: don't require manual init when only Tiller is missing (693189b4)
  • plugins: define schemas for module outputs and add docs (5f656ac2)
  • windows: check for Hyper-V and ask if user wants Docker (21024f82)
  • get source maps working in error tracebacks (36959cea)
  • cli: rename --loglevel to --log-level + refactor log init (de5e78a3)
  • dashboard: add graph filters to global context (73e3f5ca)
  • dashboard: add task and test info pane to overview page (e97b8fa7)
  • dashboard: add dependencies to each entity card (8b0a4305)
  • dashboard: view ingress on lg screens instead of xl (bd28965e)
  • k8s: always require manual init for remote clusters (4201dc53)
  • service: add project root to config dump (520aadf3)

Performance Improvements

  • improve performance of logs command (65afeef8)

Bug Fixes

  • update messaging when checking version (afebab2d)
  • openfaas: regression in openfaas provider init (bca7a626)
  • wrong base image for garden-gcloud container build (c4d2d818)
  • container entrypoint executable path should be passed as string (80e7cf18)
  • cli: don't log internal fields in error detail (5e02c5df)
  • cli: error log could crash if error details contained circular refs (b6bdf870)
  • core: chokidar watcher on mac could segfault after reloading configs (b950823c)
  • delete-env: delete services before calling cleanupEnvironment (e98485da)
  • install: Add -UseBasicParsing to Windows installer (86dacd99)
  • k8s: enable publishing container modules when using remote builders (5cfeca24)
  • k8s: error when test+task result log exceeded 1MB (04a5a36a)
  • k8s: don't store full version object with test+task results (c4e4059d)
  • k8s: status checks on resources outside of app namespace would fail (13accce4)
  • k8s: unreachable code when kubectl diff errors (29ae098a)
  • k8s: handle List resources in manifests properly (487637fc)
  • test: fixed flaky test by adding sort (8f8b0a49)
  • vcs: error when stat-ing deleted file that's still in git index (3c21ba4a)
  • windows: latest zeit/pkg produced broken binary for Windows (868a0d66)
  • revisions to command option (51fc76ab)
  • include fixes, docs and refactoring for #778 (14063c06)
  • crash when deploy and docker not installed (540edb02)
  • some commands terminate with double new line (86fa9816)
  • improved error messages for call command (2286a17e)
  • always ignore .garden (bb0e2df8)
  • analytics: don't use promises and silently fail (85c80f24)
  • cli: ensure cli exits with code 0 when help/version called (3e31d9ba)
  • container: incorrect parsing of image ID with port in hostname (78e03b71)
  • core: don't abort if providers needing manual init are ready (c7becfdd)
  • dashboard: stackgraph loses ws status when drawn (112e5825)
  • dev-command: prepareEnvironment was called twice (65dc993b)
  • integ-tests: only checkout example dir when running locally (0a1b3a2b)
  • k8s: fix various issues with Kubernetes API queries (c7839e93)
  • k8s: don't require manual init for local-kubernetes provider (83d9efbb)
  • k8s: unhelpful error with conflicting namespace (a1161200)
  • k8s: avoid concurrency issues when creating port forwards (169aa3c1)
  • k8s: avoid normalization issue when installing nginx controller (118b02cd)
  • k8s: error when getting debug logs from multi-container Pods (2778c3a8)
  • k8s: warn instead of error when cluster services are outdated (fbc4cb5d)
  • k8s: handle normalization issue between numbers and strings in diffs (d98ed6fc)
  • k8s: make sure we error/init when any system service is missing on init (33f9638b)
  • k8s: fix some issues with syncing build context to remote cluster (a5ed2cf8)
  • k8s: startup error when using remote kubernetes provider (b15b30f5)
  • vcs: error when handling files with spaces in the name (eeff4d46)

Code Refactoring

  • moved default-backend image in own repo (650f7a26)
  • k8s: update kubernetes API library to 0.10.1 and refactor wrapper (bd54a4e0)
  • cli: add header log to commands (51c7efef)
  • core: allow setting a custom Garden dir path (43f2ad69)
  • core: added manualInit flag to prepareEnvironment handler (66aa4739)
  • core: split up plugin handler declarations to individual modules (ea863553)
  • k8s: rename "local" build mode to "local-docker" (55d9ceca)
  • k8s: nest system garden dir under project garden dir (33019b0a)

Don't miss a new garden release

NewReleases is sending notifications on new releases.