Releases: kestra-io/kestra
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)
v0.9.4
Bug Fixes
- ui: icon are not displayed correctly (Ludovic DEHON)
Chores
- version: update snapshot version 'v0.9.3-SNAPSHOT'. (Ludovic DEHON)
- version: update to version 'v0.9.3'. (Ludovic DEHON)
- version: update to version 'v0.9.4'. (Ludovic DEHON)
v0.9.2
Features
- cicd: build internal workflow (Ludovic DEHON)
Bug Fixes
- ui: don't load task type and use flow instead (Ludovic DEHON)
- core: TestUtils.mockTrigger() must call runContext.forScheduler() (Loïc Mathieu)
- ui: Flow with dependencies can now be deleted (YannC)
- core: multiple potential deadlocks and races on the AbstractScheduler (Loïc Mathieu)
- core: redundant synchronization on the FlowListeners (Loïc Mathieu)
- ui: validation of trigger on lowcode failed (#1440) (Ludovic DEHON)
- tests: falling test depending on the backend (Ludovic DEHON)
Chores
- test: improve test (#1430) (Loïc Mathieu)
- version: update to version 'v0.9.2'. (Ludovic DEHON)
v0.9.1
Features
- core: improve the Worker usage of workerThreadReferences #1407 (Loïc Mathieu)
Bug Fixes
- core: task default can have duplicate values (Ludovic DEHON)
- ui: Error message on draft save #1404 (brian.mulier)
- core: executionId on trigger should not be duplicate #1419 (Ludovic DEHON)
- ui: Failsafe for infinite loading + handling already-saved flow with validation errors #1420 (brian.mulier)
- core: flowable task can fail on resolveState #1394 (Loïc Mathieu)
- core: don't crash the worker if it receive a flowable task #1407 (Loïc Mathieu)
- core: fail the worker if it receives directly a flowable task instead of silently doing nothing #1407 (Loïc Mathieu)
- ui: new version button color with white theme (Ludovic DEHON)
- ui: no more validation error at flow creation start #1431 (brian.mulier)
Chores
- version: update snapshot version 'v0.9.1-SNAPSHOT'. (Ludovic Dehon)
- docs: update the readme (#1415) #1415 (Anna Geller)
- test: improve some test duration & pause conditions (#1422) #1422 (Loïc Mathieu)
- version: update to version 'v0.9.1'. (Ludovic DEHON)
v0.9.0
Kestra Release Note - 0.9.0
This new release focused on user experience improvements and bugs resolving.
New Features
- ⭐ Flow Metrics Dashboard : since previous versions, any flows execution exposed
Metrics
. However there were no useful UI to explore and see those metrics. In this new release we created a new "Metrics tab" accessible at the Flow level. It may be useful to track specific metrics (count rows processed, explore third-party integration billing, see time of processes, etc.) and improve the observability of users tasks. - Save Flow as drafts: users are now able to save Flows as draft, even in the presence of errors in the Flow declaration. Useful when drafting flows and allows users to conveniently return to their work at a later time.
User Experiences Improvements
- Manage editor windows size: editor can shows both source and topology or source and documentation. We added the ability to resize those two windows with a slider.
- Ability to re-execute a Flow with the last inputs.
- Task required properties are now listed first in the documentation pages.
- Several improvements and fixes : improved flow and inputs validation, improved page redirections, fixed gantt display, improved error messages, fixed theme discrepancies etc.
Plugins
- New Git plugin
- New plugin Couchbase
- New NATS plugin
- Fix dbt discrepancies due to some issues in the
1.5.0
version - Fix spaces in filenames in GCS Downloads task
Documentation
Enterprise Edition
- New License system.
- Inherited variables are now available even if the user doesn’t have access to the namespace.
- Namespaces now have a proper dashboard.
- Fix stability issue when multiples conditions generate too many logs.
- Improve login and authentication.
- Fix bug on Gantt when using
Each
like tasks.
All Changes
Features
- core: improve SEO on plugin documentation #1172 (Loïc Mathieu)
- core: add an icon for the states sub-group of plugins #1174 (Loïc Mathieu)
- Java 17 #1189 (Loïc Mathieu)
- core: input validator step 1 #1123 (yuri1969)
- core: input validator step 2 #1123 (Loïc Mathieu)
- validate INT input with min/max #1123 (Loïc Mathieu)
- cli: add a startup hook (Ludovic DEHON)
- ui: change metrics column order to put 'tasg' last #1232 (Loïc Mathieu)
- core: improve Purge task documentation #1237 (Loïc Mathieu)
- ui: update the onboarding video (#1247) #1247 (Anna Geller)
- docker: add git plugin (Ludovic DEHON)
- ui: Save as draft on invalid flows (#1235) #1235 (brian-mulier-p)
- ui: Redirect on authentication expired (#1248) #1248 (brian-mulier-p)
- core: validate DATE, DATETIME, DURATION, FILE, FLOAT & TIME inputs (#1234) #1234 (Loïc Mathieu)
- core: add execution labels (#1190) #1190 (yuri)
- ui: Add Flow-like dashboard to namespaces (#1292) #1292 (brian-mulier-p)
- ui: handle query in tabs (Ludovic DEHON)
- ui: allow passing custom description to dashboard (Ludovic DEHON)
- ui: prevent flow save if namespace or id modified #1329 (brian.mulier)
- core: kill created tasks earlier #1328 (Loïc Mathieu)
- core: prefill inputs from existing execution and replay whole execution (#1272) #1272 (brian-mulier-p)
- ui: display latest version on top bar (Ludovic Dehon)
Bug Fixes
- docs: fix invalid links on docker memory (Ludovic DEHON)
- cli: failed test PluginDocCommandTest (#1173) #1173 (Loïc Mathieu)
- docs: make docs index link relative (Ludovic DEHON)
- core: Serialize null as null and not "null" in the ION file #1183 (Loïc Mathieu)
- ui: allow topo edition when creating (#1193) #1193 (YannC)
- ui: fix welcome redirection (#1200) #1200 (YannC)
- core: wrong warning block in core task documentation #1212 (Loïc Mathieu)
- ui: invalid link on taskrun list (Ludovic DEHON)
- ui: display welcome always (Ludovic DEHON)
- core: Flow trigger documentation #1233 (Loïc Mathieu)
- don't display task base properties by default #1229 (Loïc Mathieu)
- loadFlow with revision (#1259) #1259 (YannC)
- ui: can't open object modal on task form edit (#1266) #1266 (YannC)
- ui: prevent welcome redirection (#1265) #1265 (YannC)
- ui: theme on editor was not applied (#1268) #1268 (YannC)
- ui: Gantt can failed on low duration (#1256) #1256 (brian-mulier-p)
- ui: better contrast in validation error tooltip (#1269) #1269 (YannC)
- Display select column correctly in flows and executions list (#1253) #1253 (YannC)
- ui: typo on replay confirm tr...
v0.8.1
Chores
- version: update snapshot version 'v0.8.1-SNAPSHOT'. (Ludovic DEHON)
- version: update to version 'v0.8.1'. (Ludovic DEHON)
v0.8.0
Features
- core: add an originalId that will be the same in case of replay #1036 (Ludovic DEHON)
- core: handle timeout on Pause task (#1040) #1040 (Ludovic DEHON)
- cli: add option to remove execution from sys restore-queue (Ludovic DEHON)
- webserver: allow triggering execution at a specified revision (Ludovic DEHON)
- core: remove trigger on flow update from the scheduler (#1042) #1042 (Loïc Mathieu)
- ui: dynamic documentation in the editor (#1044) #1044 (YannC)
- core: improve core tasks documentation #1060 (Loïc Mathieu)
- core: allow passing the list of values for the each task in a list #1060 (Loïc Mathieu)
- core: document metrics #1063 (Loïc Mathieu)
- core: add a Fail task (#1061) #1061 (Loïc Mathieu)
- task: introduce new log.Fetch task (#1059) #1059 (YannC)
- task: new log task to replace echo task (#1055) #1055 (YannC)
- core: allow to specify plugin sub-group category (#1064) #1064 (Loïc Mathieu)
- core: add missing TOOL plugin category (#1079) #1079 (Loïc Mathieu)
- core: document deprecated tasks (#1078) #1078 (Loïc Mathieu)
- core: add icon for group and sub-group of plugins (#1086) #1086 (Loïc Mathieu)
- ui: editor plugin doc must be always visible and cached (#1087) #1087 (YannC)
- core: store metrics in a dedicated repository (#1047) #1047 (Loïc Mathieu)
- ui: filter charts to remove execution with 0 values (Ludovic DEHON)
- ui: introduce new logo (Ludovic DEHON)
- ui: hide documentation if screen res is too low (#1127) #1127 (YannC)
- ui: first low code iteration (#1067) #1067 (YannC)
- ui: lowcode improvement (#1136) #1136 (YannC)
- ui: add validation on lowcode everywhere (#1139) #1139 (YannC)
- ui: documentation as a tab options (#1141) #1141 (YannC)
Bug Fixes
- ui: wrong short on guided tour (Ludovic DEHON)
- cicd: publish to pip failed (Ludovic DEHON)
- jdbc: purge executor state at the end #1043 (Ludovic DEHON)
- core: execution originalId can be null (Ludovic DEHON)
- core: remove useless filtering on FlowUsage (Ludovic DEHON)
- ui: invalid breadcrumb link (Ludovic DEHON)
- core: remove some compilation warning (Ludovic DEHON)
- Added hack for condition schema in Monaco Editor (#1051) #1051 (YannC)
- ui: remove flow samples when leaving guided tour (#1050) #1050 (YannC)
- cli: remove leftovers of the OSS to EE migration (#1057) #1057 (Loïc Mathieu)
- core: avoid restarting errors task (#1056) #1056 (Loïc Mathieu)
- build: missing dependsOn for gradle 8 (Ludovic DEHON)
- core: source is not well formatted when submit with json #1068 (Ludovic DEHON)
- jdbc: add missing id column on the execution table (#1076) #1076 (Loïc Mathieu)
- webserver: missing io based execution on plugin controller (Ludovic DEHON)
- ui: suggestion modal is not triggering on macos (#1081) #1081 (brian-mulier-p)
- core: metric are not paginated and sortable (#1096) #1096 (Ludovic DEHON)
- cli: namespace update should not try to unserialize tasks (Ludovic DEHON)
- ui: date parsing should not apply for number (#1071) #1071 (brian-mulier-p)
- ui: filter cursor event only in yaml lang (#1099) #1099 (YannC)
- core: don't write sub-group h2 if no name (#1109) #1109 (Loïc Mathieu)
- core: unable to include another file in the flow (#1105) #1105 (Loïc Mathieu)
- core: move @Cacheable tag in PluginDocumentation (Yann C)
- jdbc: fix postgres migration with non default schema (#1111) #1111 (Andrey)
- ui: timeout for cursor event in editor to avoid blinking (#1110) #1110 (YannC)
- core: improve fail task documentation #1112 (Loïc Mathieu)
- jdbc: fix migration with schema (#1115) [#...