Release Announcement: Garden 0.12.27

Garden 0.12.27 is out! :tada:

This release includes new sync modes and configuration options for dev mode, a more robust logs command and more flexibility in template string resolution for module templates.

Here are some highlights from the release, but please check the release notes for a full list of changes introduced in this release.

Happy hacking!

Reverse sync modes for dev mode

This release adds the one-way-reverse and one-way-replica-reverse sync modes for dev mode when using container, kubernetes and helm services.

This adds a great deal of flexibility and specificity when a full two-way sync is not desirable (especially since conflicts can happen with the two-way-safe Mutagen mode).

In general, it’s easiest to get started with the one-way or two-way sync modes, and then graduate to a more fine-grained setup based on one-way-replicated and/or one-way-replicated-reverse once you’re ready to specify exactly which paths to sync and which files/directories to ignore from the sync (since this gives you a conflict-free setup).

See the code synchronization guide for more details.

Provider-level defaults for dev mode

Excludes and permission/owner/group settings can now be set on the provider level for kubernetes and local-kubernetes.

Defaults specified there will be extended/overridden by corresponding settings on individual sync specs.

This helps reduce clutter when the same excludes and permission settings are commonly applied across services/modules.

Here’s an example from the updated code synchronization guide:

kind: Project
...
providers:
  - name: kubernetes
    ...
    # Configure project-wide exclusion rules and default permission/ownership settings
    # for synced files/directories.
    devMode:
      defaults:
        exclude:
          - "/**/node_modules"
        owner: 1000  # <- set an integer user ID or a string name
        group: 1000  # <- set an integer group ID or a string name
        fileMode: 0666  # <- set the permission bits (as octals) for synced files
        directoryMode: 0777  # <- set the permission bits (as octals) for synced directories

See the code synchronization guide for more details.

Module templates: Allow skipping source template rendering in generateFiles

In many cases, it’s not desirable to pass files specified under generateFiles[].sourcePath through template resolution.

This release adds a resolveTemplates boolean flag control that behavior explicitly, which makes module templates more flexible and easier to use in some cases.