Skip to content

Releases: garden-io/garden

v0.10.0

27 Jun 17:28
ab01ca5
Compare
Choose a tag to compare

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 ([bb0e2df](https://gi...
Read more

v0.10.0-0

13 Jun 23:49
Compare
Choose a tag to compare
v0.10.0-0 Pre-release
Pre-release
chore(release): release v0.10.0-0

v0.9.12

21 May 19:49
9b38c81
Compare
Choose a tag to compare

Along with several bugfixes, this release includes a new and improved Overview page on the dashboard (and other dashboard UI improvements).

Thanks to Robin Winkelewski (@w9n) and John Reese (@jpreese) for their contributions to this release!

BREAKING CHANGE

This release removes the previously deprecated ability to use nested formatting strings.

Changelog

Features

  • add test/task statuses to get status command (a1e2122b)
  • render results as JSON for json logger (4ca179e6)
  • dashboard: overall dashboard improvements (253316f2)
  • dashboard: implement new overview page (d3ae347f)

Improvement

  • font sizes and header (55f7d961)
  • commands: added task/test fields to get-status response (1f34f294)
  • dashboard: fix ui issues (488369ec)
  • dashboard: start dashboard before init and keep same port (e3bc9ee1)
  • task-graph: raise concurrency limit (a6343d51)

Bug Fixes

  • make global CLI opts available to commands (70bce731)
  • build deps not watched when using -w flag (36e8c67b)
  • config: recursion error with invalid template strings (0cbcb988)
  • config: validation fix for template strings (961dd707)
  • dashboard: add taskError event + small ui tweaks (d308b89c)
  • docs: update the path to run garden-debug (0df0e849)
  • k8s: use correct container handlers when building modules (e150a990)
  • k8s: ensure env is prepared (c2cd689d)
  • k8s: helm modules weren't identified as hot reloadable (0b7ce98e)
  • k8s: fix type error when Kubernetes is not running (412fe573)
  • k8s: ensure test results get stored if test fails (7ec1bae8)
  • logger: fix spinner pos (12d0dd4b)
  • logger: add info symbol to active basic entries (08bb5945)

Code Refactoring

  • core: tighten config validation and clean up some cruft (39fb3125)
  • core: fold push task into build task (733e2dbc)
  • dashboard: use useReducer in useApi hook (8bc67d0b)
  • dashboard: remove LoadWrapper (29ddc83b)
  • dashboard: use a single generic node info container (09d3d58c)

v0.9.11

29 Apr 13:17
3215cf3
Compare
Choose a tag to compare

This release includes several bugfixes and minor improvements around logging and error handling for Kubernetes plugins.

Also new in this release is the 'more info' info pane for test and task nodes on the Stack Graph tab of the Dashboard, which shows details of the last run (including the full log of the run).

Finally, many thanks to @jpreese for his contribution to this release! 🎉

Features

  • dashboard: add 'more info' pane to stack graph (bee72e65)

Bug Fixes

  • k8s: allow unknown fields in provider config (921243df)
  • core: set name prefix on plugin services, tasks and tests (81b8d581)
  • k8s: avoid repeated Tiller install causing slower init (766ef188)
  • k8s: use statuscodeerror type when using request-promise (e61fe337)
  • task-graph: ensure graph node keys and event payload keys match (47e84b4c)
  • vcs: don't fork a process for every untracked file (ef439923)

Code Refactoring

  • rename task baseKey to key and key to id (f7cecce7)
  • k8s: move some things around + remove need for login (e0543ad6)

v0.9.10

19 Apr 14:40
583428d
Compare
Choose a tag to compare

This release adds support for microk8s, which can now be used with Garden on supported Linux platforms.

It also includes some minor improvements to error handling around the --hot/--hot-reload option in the CLI, as well as some minor bug fixes.

Features

  • cli: allow --hot=* in dev/deploy commands (15db6ed)
  • dashboard: added taskProcessing state (10bc275)
  • k8s: add microk8s support (e113c69)
  • k8s: automatically fetch kubectl when needed (d79f7a4)

Bug Fixes

  • k8s: deduplicate ns creation during init (316f9a6)
  • cli: detect missing services in --hot option (9209ac4)
  • k8s: allow multiple paths in KUBECONFIG env var (9cc6130)

v0.9.9

11 Apr 16:21
Compare
Choose a tag to compare

This release mostly consists of bug fixes for regressions introduced in the 0.9.8 release (which we took down in the meantime, so we're including that release's changelog here as well).

As of 0.9.8, Garden bases its versioning on hashes of file contents instead of Git commits (and modified timestamps). This approach provides some added flexibility for developing Garden, and decouples our versioning semantics from Git.

0.9.8 introduced the option to specify which files are considered part of the module sources via the include field.

Example:

module:
  ...
  include:
    - Dockerfile
    - my-app.js

Further, this improves handling of .gardenignore files, so they now work in subdirectories as well as the project root.

0.9.9

Bug Fixes

  • config-graph: remove superfluous data from rendered graph nodes (fa0d820)
  • vcs: fixed path handling for modified files (ec82c22)
  • vcs: handle case when file is removed while listing VCS files (7aeec2f)
  • vcs: exclude .garden from version hashing (0dc1208)

0.9.8

Bug Fixes

  • cli: avoid crash with circular references in error details (92b31c0)
  • config: issue with nested keys in conditional template strings (35ad3df)
  • config: catch module self-references instead of crashing (2fb8720)
  • k8s: skip kubectl diff for container type (8dfb6a7)
  • run: correctly ignore task dependencies (e51778b)

Code Refactoring

  • add ui state provider (dd36a0e)
  • graph: make sure all tasks are included in process results (91afd59)

Features

  • config: add var alias for variables template key (ede49e5)
  • core: add module include field and use content hash for versions (8bd0b5b)

v0.9.7

28 Mar 15:53
Compare
Choose a tag to compare

This release contains some bug fixes and a brand new kubernetes module type for those times when you want to deploy your own manifests, but don’t need the features and complexity of Helm modules.

Changelog

Features

  • k8s: add kubernetes module type (1488cd8)

Bug Fixes

  • include resolved config in module version (31b2936)
  • ensure CLI returns correct exit code (#626) (eeb069f)
  • whitespaces instead of dots in terminal (f6445c7)
  • dashboard: awkward name for task nodes in Stack Graph (616c8b5)
  • dashboard: graph ui fixes (60c746e)
  • k8s: handle logs properly for all module types and resources (56a15ba)
  • k8s: report correct deployment status when replicas=0 (a7a2983)

v0.9.6

25 Mar 12:09
Compare
Choose a tag to compare

This release contains several bug fixes and stability improvements. It also contains enhancements to our Maven plugin as well as the ability to use OR statements in template strings. Please refer to the Changelog section below for more details.

Changelog

Features

  • config: support simple OR statements in template strings (312e90b)
  • k8s: cache task results (5769aeb)
  • maven-container: explicity support in K8s provider (592bf94)
  • maven-container: add mvnOpts field and remove default option (187dc7d)
  • maven-container: automatically fetch Maven and OpenJDK (5045cd3)

Bug Fixes

  • use unique names for a service's ingresses (b1fbb25)
  • set correct jdk target path (29874e1)
  • fixed vulnerabilities identified by Snyk (bc79d26)
  • build: remove deleted files/dirs during sync (9630192)
  • build: don't delete when syncing dependencies (a5e12a7)
  • container: wrong image ID when deploying external image locally (a12682c)
  • container: further issues with deployment image IDs (5230408)
  • core: generated files were sometimes deleted between build and run (dcfb7e1)
  • core: missing detail in error.log for non-Garden exceptions (7a0265d)
  • integ-tests: helper to remove .garden dirs (77abbe3)
  • k8s: validation error on maven-container modules (3c41c8e)
  • k8s: regression in remote K8s init flow (77fb9fa)
  • k8s: work around issue with Istio sidecars and ad-hoc pod runs (f8d5b44)
  • k8s: issues with remote cluster deployments (982e6e2)
  • k8s: error when initializing remote kubernetes provider (27cf2b5)
  • maven-container: work around issue with concurrent builds in mvn (4bd9b8b)
  • maven-container: incorrect JAR_PATH build argument (bd66bb5)
  • maven-container: always copy Dockerfile to build dir before build (fada240)

Code Refactoring

  • split provider from KubeApi (4787e51)

v0.9.5

12 Mar 20:36
a67a68f
Compare
Choose a tag to compare

This release includes a number of bug fixes and stability improvements.

Also new is the ability to add environment variables to container module task specs, and an early version of a maven-container plugin, which facilitates containerized build workflows for Maven-based Java projects.

Features

  • add maven-container plugin type (7414898)
  • container: add env field to task spec (950536f)

Bug Fixes

  • increase init delay for liveness probe (e2a1e87)
  • occasional concurrency issue when fetching external tools (9d61d71)
  • use abs target paths in HR copy commands (94619f6)
  • include container name in pod log requests (247272d)
  • add tasks for all affected modules on watch (badb2b2)
  • respect level when using logger type env var (c5a5d6b)
  • stream container build output and cap max buffer size (2a885c8)
  • make sure to log build task success (d0c896a)
  • build: always sync sources when building (874e23c)
  • cli: log test duration in CLI output (61a0e40)
  • container: error when getting status ahead of building (6c4b0b4)
  • container: handle image IDs with multi-level namespace (342b987)
  • container: use configured image ID locally (bf5d428)
  • dashboard: fix undefined color (a0f0b43)
  • examples: use different ingress hostnames for vote-helm example (e4ad813)
  • k8s: handle CRDs properly (73f48bf)
  • openfaas: error when getting status of func not created by Garden (d7da089)
  • openfaas: update faas-cli to 0.8.3 (7915008)

v0.9.4

04 Mar 10:55
Compare
Choose a tag to compare

Before this fix, the module provided to the change handlers of watch-mode commands didn't have an up-to-date version, reflecting the latest dirty timestamp of the changed module.

This resulted in errors due to version discrepancies between e.g. build and deploy tasks in watch mode commands.

Changelog

Bug Fixes

  • ensure module is up to date in watch handler (44e8871)