Release Announcement: Garden 0.12.34

Garden 0.12.34 is out! :tada:

This release adds more template helpers, in addition to several bug fixes and improvements.

See the changelog in the release notes for the full list of changes,

Many thanks to @mattpolzin and @Orzelius for their contributions to this release.

Happy hacking!

Shared secrets that can be copied into each namespace

Thanks to @mattpolzin, this release introduces a new configuration field for the kubernetes provider (copySecrets) that can be used to specify arbitrary secrets that should be copied to each deployed environment.

This is very similar to imagePullSecrets but it can be very useful to copy arbitrary secrets into namespaces so that, for example, all developers can share a secret needed to authenticate with AWS S3 or Azure Blob Storage.

--skip-dependencies CLI option

Added a --skip-dependencies CLI option for the deploy and test commands.

When used with the deploy command, the specified services are deployed, but any additional services or tasks that they depend on are skipped.

This can be useful e.g. when your stack has already been deployed, and you want to deploy a subset of services in dev mode without redeploying any service dependencies that may have changed since you last deployed.

Similarly, for the test command, this option skips deploying/running any runtime dependencies of the requested test suites (not recommended for CI, but can be useful during inner-loop development in certain scenarios).

${datetime.*} template context

The datetime field is now available in all template contexts. It provides the following keys:

  • ${}: The current UTC date and time, at the time of template resolution, in
  • ${}: The current UTC date, at the time of template resolution, in ISO-8601
  • ${datetime.timestamp}: The current UTC Unix timestamp (in seconds), at the time of template

${git.commitHash} and {git.originUrl} template fields

  • ${git.commitHash} resolves to current Git commit hash, if available.
    • Resolves to an empty string if the repository has no commits.
    • When using remote sources, the hash used is that of the project/top-level repository (the one that contains the project configuration).
    • The hash is resolved at the start of the Garden command’s execution, and is not updated if the current commit changes during the command’s execution (which could happen, for example, when using watch-mode commands).
  • ${git.originUrl} resolves to the remote origin URL of the project’s Git repository.
    • When using remote sources, the URL is that of the project/top-level repository (the one that contains the project configuration).

Watch-mode errors shown in watch footer

When a task fails during a watch-mode command’s execution, the footer now indicates that one or more tasks failed (instead of saying “Waiting for code changes…”).

This has been asked for by several users, who felt that indicating an error in the footer makes it clearer that something went wrong as the tasks were being processed.