Skip to content

v0.17.0

Compare
Choose a tag to compare
@github-actions github-actions released this 04 Jun 14:15
· 1215 commits to develop since this release

Features

Bug Fixes

Documentation

  • add Pebble expressions to the main UI documentation for a quick reference (Anna Geller)
  • Resume task (Anna Geller)

Code Refactoring

Builds

Chores

Commits

  • f5586d2: closes #3670 (Anna Geller)
  • a72e391: feat(core, webserver): alias improvements (Loïc Mathieu) #3740
  • 9e5a605: fix(core, ui): display alias doc in the editor (Loïc Mathieu) #3745
  • 17ccfcf: feat(core, script): rename DockerTaskRunner to Docker and ProcessTaskRunner to Process (Loïc Mathieu) #3743
  • 513e69d: fix(ui); remove lang settings from date/time section (YannC)
  • 7f6881d: WIP feat(core): add new stop method WorkerJobLifecycle (Florian Hussonnois) #3767
  • d93761e: fix(core, webserver): file upload (Loïc Mathieu) #3429
  • f6f5011: Merge branch 'develop' of https://github.com/kestra-io/kestra into develop (Anna Geller)

Non-breaking changes related to renaming

Many plugins have been renamed for consistency and extensibility. We’ve implemented aliases for backward compatibility so that you don't need to update those names immediately. Everything will continue to work seamlessly, and you can take as much time as needed to rename those tasks and triggers.

Here are the key changes:

  • taskDefaults are now pluginDefaults to reflect the fact that you can set default values for all plugins, not just tasks.
  • HTTP tasks are now part of the core plugin rather than the file-system (fs) plugin.
  • All core plugins have been renamed, e.g. io.kestra.core.models.triggers.types.Schedule is now io.kestra.plugin.core.trigger.Schedule. Again, this is a non-breaking change as we use aliases — don't worry when you see warnings in the UI. Those warnings are here to spread the message about renamed tasks and triggers, but you can take as much time as you need to rename them.
  • Serialization tasks have been renamed from Readers and Writers to explicit conversion tasks e.g. CsvReader → CsvToIon and CsvWriter → IonToCsv.
  • Redis plugins have been renamed to make them easier to extend and maintain. For example, io.kestra.plugin.redis.TriggerList is now io.kestra.plugin.redis.list.Trigger.

For more details about all these changes, check the Renamed Plugins Migration Guide.

Breaking Changes

Task Runner names have been shortened

The task runner classes are now shorter. For example, io.kestra.plugin.aws.runner.AwsBatchTaskRunner is now io.kestra.plugin.aws.runner.Batch. Check the task runner documentation for the full list of updated names.

Note that in contrast to the renaming mentioned in the previous section, we've renamed them directly (without using aliases) given it's a beta feature.

New build process for custom plugins

Kestra 0.17.0 uses a new mechanism to discover and load plugins. Plugins are now discovered and loaded using the standard Java Service Loader rather than Micronaut-specific Bean introspection. If you use custom plugins, follow the Migration Guide to make the necessary adjustments.

Subflow default values have changed

The wait and transmitFailed boolean properties of the Subflow task are now set to true by default. This means that the default behavior of the Subflow task is now waiting for the subflow execution to finish and transmitting the failed status to the parent flow's Subflow task runs. If you want to keep the old default behavior, make sure to add the following to your pluginDefaults:

pluginDefaults:
  - type: io.kestra.core.tasks.flows.Subflow
    values:
      wait: false
      transmitFailed: false

Change in the JSON objects serialization strategy

We previously serialized JSON objects with a NON_DEFAULT strategy to save space (in the database) and optimize network bandwidth.

We changed that behavior so that all properties that are not null will now be included in the serialized JSON document. This fixes several limitations and lets us know when a default is purposely set. This also means that empty lists and maps are now serialized as empty objects (rather than not being serialized at all).