Releases: kestra-io/kestra
v0.12.0
Features
- cli-ee: allow Flyway migrations to be out of order #1933 (Loïc Mathieu)
- jdbc-h2: refactor the H2 migrations #1933 (Loïc Mathieu)
- jdbc-mysql: refactor MySQL migrations #1933 (Loïc Mathieu)
- jdbc-postgres: refactor PostgreSQL migrations #1933 (Loïc Mathieu)
- cli: support maven repository with basic auth for plugin install command (Ludovic DEHON)
- cli: don't fetch dependencies on plugin resolve (Ludovic DEHON)
- core: make the queue fault tolerant (#1981) (Loïc Mathieu)
- core: load properly secret plugins (Ludovic DEHON)
- ui: rename value to iteration value on output tabs (#2070) #2070 (Heman Sakkthivel M S)
- core: don't failed on startup for invalid plugin (Ludovic DEHON)
- core: don't include the secret service base64 decode exception in the log #2089 (Loïc Mathieu)
- ui: add an attempt(s) column to the taskrun page #2091 (Loïc Mathieu)
- ui: display subflow content in topology (#2007) #2007 (brian-mulier-p)
- core: add urldecode pebble function (Ludovic DEHON)
- core: allow to reset the outputs of a taskrun (#2018) #2018 (Loïc Mathieu)
- core: add some variable renderer helper (Ludovic DEHON)
- ui: subflow logs expand #2140 (brian.mulier)
- add SurrealDB plugin (#2162) #2162 (Loïc Mathieu)
- docker: introduce docker plugins (Ludovic DEHON)
- core: allow subflows to inherit parent flow's labels (#2121) #2121 (yuri)
- core: deprecate creating temp files without extension #2172 (Loïc Mathieu)
- ui: propagate the environment name to the page title (#2051) #2051 (yuri)
- ui: reorder log list header and make it responsive (Ludovic DEHON)
- ui: update ui-libs to latest (Ludovic DEHON)
- ui: reduced opacity on unused paths #2171 (brian.mulier)
- docker: introduce docker plugin (Ludovic DEHON)
- core: zombie worker task detection & automatic resubmission (#2081) #2081 (YannC)
- ui: update ui-libs to latest (Ludovic DEHON)
Bug Fixes
- core: Schedule trigger cannot have an interval (#2008) #2008 (Loïc Mathieu)
- tests: greater timeout on FlowTriggerCaseTest.trigger (brian.mulier)
- core: trigger ids must be unique for a flow (#2022) #2022 (brian-mulier-p)
- tests: no longer starting scheduler in webserver tests #2033 (brian.mulier)
- core: deprecate listeners #2020 (brian.mulier)
- core: support flow labels as map (#2009) #2009 (Loïc Mathieu)
- core: only run the secret test when the needed env var is set #2056 (Loïc Mathieu)
- core: no longer crashing app on Flow triggers without condition #2061 (brian.mulier)
- core: possible NPE on validation #2063 (Loïc Mathieu)
- core: labels as map failed on json endpoint (#2049) #2049 (Loïc Mathieu)
- core: Return task is no longer failing with empty format #2106 (brian.mulier)
- core: generate attempts for subflow tasks #2099 (brian.mulier)
- ui: bulk delete was not filtering #2110 (brian.mulier)
- core: prevent Jackson from using cluster-level mutating setters #2113 (brian.mulier)
- ui: expanded subflows list is shared between Topology tab & EditorView's topology #2115 (brian.mulier)
- ui: invalid apiUrl with a trailing slash (Ludovic DEHON)
- core: flowable failed to display a graph (#2120) #2120 (brian-mulier-p)
- core: FlowWithPollingTrigger.from should check on PollingTrigger (#2028) #2028 (Loïc Mathieu)
- docker: reduce docker image size #2013 (Ludovic DEHON)
- core: proper exception for invalid RunContext uri (Ludovic DEHON)
- core: don't retry a task if the execution is killed (#2057) #2057 (Loïc Mathieu)
- docker: invalid docker file (Ludovic DEHON)
- ui: change live chat to live help (Ludovic DEHON)
- ui: now displaying an error when having issue to generate graph (for eg. with missing plugin) [#2097](...
v0.11.2
Bug Fixes
- core: missing subflow can lead to infinite loop (#2178) (Loïc Mathieu)
Chores
- version 0.11.2 (Loïc Mathieu)
v0.11.1
Bug Fixes
- core: support flow labels as map (#2009) (Loïc Mathieu)
- core: labels as map failed on json endpoint (#2049) (Loïc Mathieu)
- core: no longer crashing app on Flow triggers without condition (brian.mulier)
Chores
- version: update snapshot version 'v0.12.0-SNAPSHOT'. (Ludovic DEHON)
- version: update to version 'v0.11.1'. (brian.mulier)
v0.9.9
Bug Fixes
- core: avoid infinite loop in the executor for Flowable tasks (Loïc Mathieu)
- core: bad merge on TemplateTest (Loïc Mathieu)
Chores
- version 0.9.9 (Loïc Mathieu)
v0.11.0
Features
- add Databricks plugin #1786 (Loïc Mathieu)
- Allow to change fontSize & fontFamily in editor from Settings (#1787) #1787 (YannC)
- core: deprecate old script tasks and stop using them in tests (#1792) #1792 (Loïc Mathieu)
- jdbc: add a defaultFilter to revision #1797 (Loïc Mathieu)
- ui: change output link for a button (#1771) #1771 (YannC)
- core: add a method to help getting a file extension #1805 (Loïc Mathieu)
- allow to cache contents inside the working directory #1822 (Loïc Mathieu)
- webserver: exposed all usages and not only the execution one (Ludovic DEHON)
- core: make the webhook key dynamic (#1857) #1857 (Loïc Mathieu)
- docker: introduce julia plugin (Ludovic DEHON)
- jdbc: add an index on the execution labels #1841 (Loïc Mathieu)
- cli: reindex all flows command (#1846) #1846 (Loïc Mathieu)
- ui: bulk select move to top of tables (#1861) #1861 (brian-mulier-p)
- ui: date format settings (#1843) #1843 (brian-mulier-p)
- jdbc: improve logs indexes (#1882) #1882 (Loïc Mathieu)
- jdbc: improve JDBC PostgreSQL queues queries performance (#1883) #1883 (Loïc Mathieu)
- core: internal storage file preview (#1770) #1770 (YannC)
- core: add a configuration to display environments (#1875) #1875 (yuri)
- docker: add plugin hightouch to the docker image (#1910) #1910 (Loïc Mathieu)
- ui: admin tabs as sub-menus #1894 (brian.mulier)
- core: allow to skip and execution (#1678) #1678 (Loïc Mathieu)
- core: deprecate template #1916 (Ludovic DEHON)
- tasks: introduce new icons (Ludovic DEHON)
- ui: better display of file preview (Ludovic DEHON)
- ui: reduce the slider on the editor (Ludovic DEHON)
- ui: introduced new topology as libs (#1877) (YannC)
- ui: enhance the guided onboarding (#1940) #1940 (Anna Geller)
- ui: editor button not transparent (Ludovic DEHON)
- ui: update to latest ui-libs (Ludovic DEHON)
- ui: add a shortcut to execute flow (#1948) #1948 (yuri)
- ui: even better wording in the guided tour (#1964) #1964 (Anna Geller)
- core: multiple conditions service (#1950) (brian-mulier-p)
- upgrade @kestra-io/ui-libs to 0.0.12 (#1980) (YannC)
- core: new icons for core (#1977) (YannC)
- docker: introduce Malloy plugin (#1987) #1987 (ben8t)
- ui: update to latest ui-libs (Ludovic DEHON)
- cicd: analyse with sonar cloud (Ludovic DEHON)
- ui: update to latest ui-libs (Ludovic DEHON)
Bug Fixes
- core: flaky labels tests #1765 (Loïc Mathieu)
- ui: make the dark theme's
.text-muted
visible (#1779) #1779 (yuri) - core: serialization inclusion is a single property not a list #1766 (Loïc Mathieu)
- ui: Render chars instead of entities (#1781) #1781 (yuri)
- core: add predestroy to prevent Scheduler from crashing the whole app when context stops #1795 (brian.mulier)
- core: acl control added on 'Use' buttons in BlueprintsBrowser & BlueprintDetail #1819 (brian.mulier)
- blueprints: now loading icons from Kestra's API as well #1820 (brian.mulier)
- ui: auto-refresh button is now animated for better feedback #1803 (brian.mulier)
- core: can now override the way to retrieve registered plugins in JsonSchemaGenerator #1813 (brian.mulier)
- doc-gen: now also displaying properties with @PluginProperty inside bases in json schema (including conditions) #1836 (brian.mulier)
- remove deprecated #1828 (Loïc Mathieu)
- tests: longer timeout int MultipleConditionTriggerCaseTest (brian.mulier)
- core: WorkingDirectory validation throws an exception when tasks is null or empty #1838 (Loïc Mathieu)
- deps: force bouncycastle version for crypto plugin compatibility (#1844) [#1844](https://gi...
v0.10.1
Bug Fixes
- ui: missing task run value on log list (Ludovic DEHON)
- core: remove misleading default value for polling triggers #1723 (Loïc Mathieu)
- jdbc: DateTimeFormatter can be reused in the JdbcMapper #1722 (Loïc Mathieu)
- core: add worker group tag to the metrics #1727 (Loïc Mathieu)
- core: make the RetryTest more resilient #1727 (Loïc Mathieu)
- core: Fix flow comparison method (#1740) #1740 (YannC)
- ui: More concise "labels as array" handling #1743 (brian.mulier)
- core: JQ filters now allow object / array destructuring after doing its thing #1749 (brian.mulier)
- executable: Wrong quotes in add-opens variable for executable #1752 (brian.mulier)
- gradle: opens java.lang for the /threaddump endpoint (Loïc Mathieu)
- core: avoid infinite loop in the executor for Flowable tasks #1746 (Loïc Mathieu)
Chores
- version: update snapshot version 'v0.10.1-SNAPSHOT'. (Ludovic DEHON)
- always pull the image as we don't use the latest tag. #1724 (Loïc Mathieu)
- core: revert labels as list in a Flow #1743 (Loïc Mathieu)
- version: update to version 'v0.10.1'. (YannC)
Commits
v0.9.8
v0.9.7
Bug Fixes
- jdbc: DateTimeFormatter can be reused in the JdbcMapper (Loïc Mathieu)
Chores
- version: update to version 'v0.9.7'. (YannC)
Commits
- fix: Updated count variable (YannC)
v0.10.0
Kestra Release Note - 0.10.0
This new release brings important new core features such as Blueprints, new Script plugins, integration of basic authentication, and a secret function making the Open Source Edition even more robust.
Features
Blueprints
Blueprints are a curated, organized, and searchable catalog of ready-to-use examples designed to help you kick-start your workflow.
It’s available as a new section on the left bar menu and directly within the editor view**. All blueprints are validated and documented so that they just work.
You can easily customize and integrate them into your new or existing flows with a single click on the “Use” button.
Enterprise Edition users could write their own organization blueprints so they can share and grow a library of internal blueprints within teams.
Improved Support for Scripting
In this release, we revamped scripting tasks to bring more flexibility and control.
Each script task is now, by default, running in its own dedicated container.You can attach any Docker image you want if you need a specific one.
New tasks are available for Shell, Python, R, and Node.js:
Script
: to write and run ad-hoc scripts. It comes with abeforeCommands
property to execute any instruction needed before running the main script (installing dependencies for example)
id: script
namespace: release
tasks:
- id: run_python
type: io.kestra.plugin.scripts.python.Script
beforeCommands:
- pip install requests
warningOnStdErr: false
script: |
import requests
import json
response = requests.get("https://api.github.com")
data = response.json()
print(data)
Command
: to run arbitrary commands in a single task configuration. This task can be very powerful and associated with theWorkingDirectory
task. For example, to clone a Git repository and then execute the corresponding scripts.
id: command
namespace: release
tasks:
- id: working
type: io.kestra.core.tasks.flows.WorkingDirectory
tasks:
- id: clone_repo
type: io.kestra.plugin.git.Clone
url: https://github.com/your_repository
- id: run_python
type: io.kestra.plugin.scripts.python.Command
beforeCommands:
- pip install -r requirements.txt
dockerOptions:
image: ghcr.io/kestra-io/pydata:latest
commands:
- python main.py
-
LocalFile
: to create files in the local filesystem or to send files from the local filesystem to the internal storage. This task allows to uncouple inline scripts to their execution.id: "local-file" namespace: release tasks: - id: workingDir type: io.kestra.core.tasks.flows.WorkingDirectory tasks: - id: inputFiles type: io.kestra.core.tasks.storages.LocalFiles inputs: hello.txt: "Hello World" address.json: "{{ outputs.myTaskId.uri }}" - id: bash type: io.kestra.plugin.scripts.shell.Command commands: - cat hello.txt - sed -n 's/.*"country":"\([^"]*\)".*/\1/p' address.json
It also allows to expose outputs to internal storage. In the following example, we create two files with Bash commands and expose those into Kestra internal storage with the outputs property LocalFiles
id: "local-files"
namespace: release
tasks:
- id: workingDir
type: io.kestra.core.tasks.flows.WorkingDirectory
tasks:
- id: bash
type: io.kestra.plugin.scripts.shell.Command
commands:
- mkdir -p sub/dir
- echo "Hello from Bash" >> sub/dir/bash1.txt
- echo "Hello from Bash" >> sub/dir/bash2.txt
- id: outputFiles
type: io.kestra.core.tasks.storages.LocalFiles
outputs:
- sub/**
Those tasks run by default on DOCKER but you can use the runner: PROCESS
property to run it as a process on the Kestra host.
Note: the old scripting tasks w ill be deprecated, removed from the core and being retro compatible within the new plugins.
DAG task
Creating directed acyclic graphs, a common pattern in data orchestration, was already possible in Kestra by through Flow dependencies. With a brand new DAG task, it’s now even easier to do; directly between tasks at the Flow level.
id: magicDAG
namespace: dev
tasks:
- id: dag
type: io.kestra.core.tasks.flows.Dag
tasks:
- task:
id: customers
type: io.kestra.plugin.fs.http.Download
uri: https://raw.githubusercontent.com/dbt-labs/jaffle_shop/main/seeds/raw_customers.csv
- task:
id: orders
type: io.kestra.plugin.fs.http.Download
uri: https://raw.githubusercontent.com/dbt-labs/jaffle_shop/main/seeds/raw_orders.csv
- task:
id: payments
type: io.kestra.plugin.fs.http.Download
uri: https://raw.githubusercontent.com/dbt-labs/jaffle_shop/main/seeds/raw_payments.csv
- task:
id: transform
type: io.kestra.core.tasks.log.Log
message: |
Transforming data from:
{{outputs.customers.uri}}
{{outputs.orders.uri}}
{{outputs.payments.uri}}
dependsOn:
- customers
- orders
- payments
Label on executions
So far, it was only possible to add labels on a flow level by adjusting the workflow code. This release adds the ability to set custom labels for specific Executions.
Also, the labels added on a flow level will be automatically propagated to Execution labels.
For example you can add labels for “experiment” executions so you can retrieve them in the UI easily.
Basic Authentication
The community was asking about authentication in the open source to secure their instance in production. We heard you ! You can now add basic authentication to your Kestra instance with username/password values in the Kestra configuration.
server:
basic-auth:
enabled: true
username: admin
password: *****
Secret Function
We introduced a secret()
function allowing to read base64 secret value from environment variables.
id: secret
namespace: release
tasks:
- id: get_secret
type: io.kestra.core.tasks.debugs.Return
format: '{{ secret("my_secret")}}'
Worker Group
This release introduce worker groups, a ****set of workers that can be targeted specifically for a task execution or a polling trigger evaluation. For this, the task or the polling trigger must define the workerGroup.key
property with the key of the worker group to target. A default worker group can also be configured at the namespace level.
Here are common use cases in which Worker Groups can be beneficial:
- Execute tasks and polling triggers on specific compute instances (e.g., a VM with a GPU and preconfigured CUDA drivers).
- Execute tasks and polling triggers on a worker with a specific Operating System (e.g., a Windows server).
- Restrict backend access to a set of workers (firewall rules, private networks, ...).
- Execute tasks and polling triggers close to a remote backend (region selection).
Here is how you can ensure that a task is executed only by specific worker instances:
id: gpuTask
namespace: dev
tasks:
- id: hello
type: io.kestra.core.tasks.log.Log
message: |
This task will be executed on a specific remote worker that has access to a GPU
workerGroup:
key: gpuWorkerGroupKey
Polling Triggers
We have made significant improvements to the Polling trigger in the latest version of Kestra to enhance performance, strengthen security measures, simplify maintenance, and clarify the system architecture.
In previous versions, the trigger evaluation process was directly handled by the Scheduler. This meant that both the Worker and the Scheduler potentially accessed external systems, leading to manage the security and scalability of two services.
From now on, The Scheduler delegates the evaluation of polling triggers to the Worker. This architectural change has several advantages. Firstly, it simpli...
v0.9.5
Bug Fixes
- ui: fix query issue in home component (YannC)
Chores
- version: update snapshot version 'v0.9.5-SNAPSHOT'. (Ludovic DEHON)
- version: update to version 'v0.9.5'. (YannC)