github kestra-io/kestra v1.0.0

latest releases: v0.24.5, v0.23.15, v0.22.28...
one day ago

Kestra Open-Source Edition Changes

Changelog

πŸš€ Features

API

  • 05b485e add a new endpoint to replay and execution / task with new… (#10868), closes #10868

ai

build

  • 9b5c4b0 allow skip test on main ci

ci

  • a7d6dbc allow to run github release ci on dispatch

core

dashboard

  • 5da4d88 mandatory id + add autogenerated id to source for legacy handling (#10912), closes #10912

executions

flow

  • 609a5b8 add support for optional flow outputs
  • d3cccf3 pull up description to the FlowInterface

flows

namespaces

plugin

plugins

releases

storage

storages

stores

system

  • 6182015 report additional server events
  • 3929bf6 add distinct server-events for reporting
  • 0319f3d set the default number of worker threads to 8x available cpu cores
  • d3e661f improve performance of computeSchedulable

ui

global

πŸ“˜ Subtasks

ci

  • 986a2b4 don't run docker PR image workflow on forks

core

deps

executions

flows

namespaces

  • 771b98e add the needed prop for loading all namespaces inside a selector (#10544), closes #10544

system

  • 2498398 move the standalone runner to the cli module
  • 97ec24f merge Indexer with the IndexerInterface
  • be5e242 extract the scheduler to its own module
  • a5724bc extract the executor to its own module
  • f3057d2 extract the worker to its own module
  • 194ae82 add WorkerJobQueueInterface to properly pass workerId on subscribe
  • da180fb add a note on MapUtils.nestedToFlattenMap() method
  • 693d174 provide a more useful Either utility class
  • d6b8ba3 provide a MapUtils.nestedToFlattenMap() method

version

global

  • 2aafe15 add JacksonMapperTest.toMap()

πŸ› Bug Fixes

ai

ai-agent

build

  • c717890 fix and enhance release-plugins.sh
  • 6cfc5b8 reduce Gradle warnings

ci

  • a3c9b35 no more RC semver check on plugins
  • 2c03101 no more RC semver check on plugins
  • 7ee2cca no more RC semver check
  • ddb48a4 no more RC semver check
  • e4f9b11 workflow build artifact doesn't need the plugin version
  • 9a45f17 do not run github release on tag
  • 12cf41a don't publish docker in build-artifact
  • 6abe7f9 add missing build artifact job
  • cf82109 correctly pass GH token to release workflow

core


Kestra Enterprise Edition Changes

Changelog

πŸ“’ Breaking Changes

auditlog

  • dee93fa 🚨 properly manage resource type for auditlog (#4576), closes #4203 #4576

πŸš€ Features

API

  • f9c5211 add a new endpoint to replay and execution / task with new inputs (#4780), closes #4780

ai

  • 5b25883 add Gemini implementation for AI Copilot (#4898), closes #4241 #4898

apps

  • 9dc80dc introduce no code editor for building apps (#4771), closes #4771
  • 249a508 show app editor in multipanel layout (#4733), closes #4733

core

  • e0b153b add thread http client, deadlock and virtual thread metrics
  • 2bd39f9 add netty metrics on micrometer
  • e65cfb6 add animated edges to topology graph (#4627), closes #4627

executions

  • 7e011d0 allow flow trigger on concurrency limit

flows

  • 39755c7 add support for pebble expression input defaults (#9762)

namespace

  • a79e910 introducing Namespace context in multi panel view (#4708), closes #4708

namespaces

  • ab65436 introduce inherited key/value pairs drawer (#4842), closes #2830 #4842

plugin

  • 7eaef96 override same Tasks (eg OSS vs EE) thanks to priority attr (#4919), closes #4919

plugins

  • dbea8eb introducing versioning for Internal Storage and Secrets Manager plugins (#4767), closes #4767
  • 3f277ef expose endpoints to list storage/secret plugins (#4688), closes #4688

serviceaccount

  • 8b615ca add instance-level page for service accounts (#4905), closes #4905

storages

stores

system

  • d5fe584 add report for test suite (#3014), closes #3014
  • b448162 add additional server events, closes #3014
  • 522ad1d add distinct server-events for reporting (#3014), closes #3014
  • 53f2cc4 remove jOOQ pro, closes #4585

tests

  • 2e5755d introducing tab view for TestSuites (#4880), closes #4880
  • dd06426 add search test suites results endpoint, closes #4874
  • 8260f87 introducing multipanel editor and view for testsuite. (#4861), closes #4861
  • 5af259f add run testsuites by query endpoint, closes #3693
  • d71468c allow running specific testcase, fix openapi doc, closes #3693

ui

  • fd8020e configuration to keep ui report on EE, closes #4831

global

  • 2918936 export auditlogs through a streamed file (#4574), closes #4574
  • 44e4886 add action to merge release note between OSS and EE (#4783), closes #3966 #4783
  • 09ff1d2 changes on Auditlogs (#4662), closes #4662
  • b688709 hide auth method if disabled in console

πŸ“˜ Subtasks

core

  • b2c851f amend dependency graph coloring scheme (#4974), closes #4974
  • a6ead54 localize to languages other than english
  • 9b27f1b allow non standard url from ui in dev

deps

  • e0441db use playwright version from platform
  • 6727df4 update most of js deps
  • ed7e33a align apt package from oss and ee
  • 5a0cb1f bump com.gradleup.shadow to 9.1.0
  • 847a321 optimize way of importing shiki
  • ae44d00 bump ui-libs from 0.0.237 to 0.0.238
  • c1b8c2a regular dependency update (#4622), closes #4622

system

  • 82d4182 refactoring of the runner
  • 4f29eb4 refactoring of the indexer
  • 8f86924 extract the executor and the scheduler on their own modules
  • 9f61683 extract the worker in its own module
  • 68a812b add WorkerJobQueueInterface to properly pass workerId on subscribe

ui

  • de71e4d remove beta flag for plugin versioning (#4010), closes #4010

version

  • eb71571 update to version 'v1.0.0'.
  • d186a32 update @kestra-io/ui-libs to version 0.0.244 (#4956), closes #4956
  • 478f98b upgrade version to 1.0.0-SNAPSHOT

πŸ› Bug Fixes

Apps

  • 21c8833 keep the tag selection intact. (#4583), closes #4583

ai

  • 0688d72 move back to Gemini as default

apps

  • 0737666 improve pagination and tag selection (#4587), closes #4587
  • edae7cb show tags properly and better style of tag (#4541), closes #4541

auditlog

  • 3433544 fix auditlog detail for flow (#4577), closes #4577

auditlogs

autocomplete

  • 18b07cd NPE in namespace autocomplete, closes #4923

ci

  • 0633304 no more RC semver check
  • 6217631 add blueprints to indexing to avoid manual step after release

core

  • e04600e allow taskrun id and revision to be null like in OSS (#4973), closes #4973
  • 2ac8241 add missing metrics for reporting (#3014), closes #3014
  • 890f738 properly handle PRIMARY plugins in registry
  • 0f84632 update panel size management (#4960), closes #4960
  • 2ca4fb9 allow adding tags after creation of custom blueprints without any (#4949), closes #4926 #4949
  • 5e9de15 disable useless health check
  • eb21384 align open source & ee configuration
  • 410f19c sidebars configuration (#4791), closes #4728 #4791
  • aca4cad bring back the auditlogs for executions. (#4800), closes #4800
  • 3755c7f ensure yaml fields are populated immediately (#4778), closes #4778
  • 37bbb95 change cache policy on files returned by webserver that needs to stay fresh, closes #7499
  • cc92873 date filters are now working on metrics (#4657), closes #4657
  • a96e78a amend condition when the license banner is shown (#4593), closes #4588 #4593

dashboards

  • 52c1fb3 blueprints working for dashboards (#4954), closes #4954

docs

  • e5d5ca7 update plugin docs (#4902), closes #4902
  • 9a0e258 move proxy target from kestra to localhost and add UI README.md (#4802), closes #4802

executions

  • 726cc6e loading the flow from a webhook should filter on deleted flows
  • 1b7a1f0 SLA monitor should take into account restarted executions
  • 3a845a2 concurrency limit exceeded when restarting an execution, closes #7880
  • 6cb3b1c rename breakpoint param to breakpoints to match OSS (#4566), closes #4565 #4566
  • dadfe4e fixes tabs logic to handle audit logs unlocking (#4568), closes #4568

flows

  • e360299 pass proper namespace id on flow creation (#4909), closes #4909
  • 12902e6 add version autocompletion (#4851), closes #4702 #4851
  • a4ff495 properly import store into a component (#4643), closes #4643
  • 4375a90 use the namespace query while creating flows (#4642), closes #4642

iam

  • 95b2211 prevent UnsupportedOperationException on removeIf when no auths, closes #4953
  • 42e7247 disable the save on any field is blank and do not show success toast if already the roleId exist. (#4916), closes #4916
  • d57f2f2 encode email parameter before fetching invitations (#4912), closes #4900 #4912
  • 2170f55 delete all deprecated/unused role permissions
  • 7b809ec fix wrong data response returned from bindings API
  • 1615465 table will show checked for specifc role created. (#4538), closes #4538

logs

  • 8ae9c03 emitAsync is now keeping messages order
  • 12f0521 typo in logs filter (#4595), closes #4595

namespace

  • 06de2a0 fix autocomplete API (#4559), closes #4559

namespaces

  • 5c849c2 remove required attribute from worker group key (#4573), closes #4573
  • 48c0aa4 fix autocomplete and remove duplicate namespace endpoint (#4283), closes #4283 #4548

plugins

  • ab6096f fix exception when listing installed plugins (#4830), closes #4830
  • ef0d601 allow upload of SNAPSHOT jar as well. (#4775), closes #4775
  • f0b4554 fixes update btn showing loading for other secrets. (#4773), closes #4773

scim

system

  • a7bc214 rename service EMPTY state to INACTIVE (#4838), closes #4838
  • 3a9d4ec properly close the ScheduledExecutorService tasks

tenants

  • 75d46c7 properly save the configuration for dedicated storage and secrets (#4948), closes #4948
  • 059d652 fixes failing of sorting for name column (#4549), closes #4549

test

  • a935c07 access the yaml lang for result. (#4766), closes #4766
  • 9de1c0f disable kafka executor test (#4712), closes #4712
  • 8052f0a disable kafka concurrency queue test (#4711), closes #4711
  • a76ef66 add required kestra.url for tests

test-suite

  • 8da01fa add sort mapping to avoid exception in Kafka ES, closes #4970

tests

  • 07e642a fix failing test
  • c51c67b disabling tests that pass locally but fail on CI, closes #4958
  • 7970a85 prevent redirection if the route changed (#4951), closes #4920 #4951
  • cc8f388 /tests/results/search/last was fetching all data (#4889), closes #4756 #4889
  • eaaa736 #4852 kafka queue flaky test (#4868), closes #4852 #4868
  • 195cca8 #4852 fix unit tests (#4853), closes #4852 #4853

testsuite

  • e8d9216 route to result detail after run complete (#4899), closes #4899

ui

  • 9aac5c9 update component imports and refactor task wrapper usage (#4885), closes #4885

webserver

  • 385ef5b verify instance maintenant mode for enter/exit (#4623), closes #4623

global

  • ff4f99e hide 'or' if basic auth is disabled
  • 82da55c Remove SQL_CALC_FOUND_ROWS from AuditLogRepository for optimized SQL performance (#4784), closes #4784
  • b1daab4 failing kafka tests (#4735), closes #4735
  • e9b5c10 auth store should be registered if used (#4721), closes #4721
  • 867ea5c increase the count of namespace displayed when creating an acces… (#4696), closes #4692 #4696
  • a78dca8 pagination on invitations list is now working correctly (#4701), closes #4570 #4701
  • f224269 display link for invitation and make take for roles & groups clickable (#4651), closes #4637 #4651
  • 7fd224f role detail can not be fetched from admin view (#4654), closes #4654
  • 76ab69f various fixes on default role (#4650), closes #4635 #4650
  • fd6b713 handle empty flows list in lastExecutions correctly (#4554), closes #4554
  • ee78d53 fix(): icons

πŸ”— Dependencies

  • 146903f Revert "chore(deps): bump com.gradleup.shadow to 9.1.0"

πŸ”„οΈ Changes

core

  • d094b27 new no versioned plugin page (#4709), closes #4709

jdbc

  • 058bbdb Optimize SQL performance by replacing SQL_CALC_FOUND_ROWS with COUNT(*)

misc

  • 447dd16 override misc module. (#4694), closes #4694

namespaces

  • 980f64d migration of namespace module to pinia. (#4641), clos ...

⚠️ Breaking Changes

All Editions: Input defaults property is now dynamic

The defaults property for inputs is now dynamically rendered. This impacts any flows that use Pebble expressions directly as default values.

Example before 1.0 (will fail from 0.24 onwards):

id: session
namespace: company.team

inputs:
  - id: sessionId
    type: STRING
    defaults: "{{ execution.id }}"

tasks:
  - id: log
    type: io.kestra.plugin.core.log.Log
    message: "This is my session id: {{ render(inputs.sessionId) }}"

Updated approach:
Given that theΒ defaultsΒ are now dynamically rendered, the above flow will fail in Kestra 1.0 and higher, unless you move the expression to the task as follows:

id: session
namespace: company.team

inputs:
  - id: sessionId
    type: STRING
    required: false

tasks:
  - id: log
    type: io.kestra.plugin.core.log.Log
    message: "This is my session id: {{ inputs.sessionId ?? execution.id }}"

All Editions: Helm Charts Restructured

We reworked the Helm charts to distinguish between production, starter, and operator use cases:

  • kestra β†’ production-ready chart (no bundled dependencies).
  • kestra-starter β†’ starter chart with PostgreSQL, MinIO, and other dependencies for development environment and PoC.
  • kestra-operator β†’ Enterprise-only operator for custom Kubernetes resource management.

Key changes:

  • Dependencies (PostgreSQL, MinIO, Kafka, Elasticsearch) are removed from the production chart.
  • Deployment configuration is now organized under a common block and deployments overrides.
  • Custom configuration files are consolidated under a configurations entry.
  • Docker-in-Docker (dind) is now managed via a dedicated dind block with support for rootless mode (default).

See the Helm Chart Migration Guide for before/after examples.


All Editions: Singer Tap Plugin Removed

Singer support has been fully removed in 1.0 (deprecated since 0.24).

Why removed:

  • Singer is no longer maintained, lacks ecosystem backing, and poses long-term compatibility and security risks.

Migration:

Use open-source alternatives using the following Kestra plugins:

  • Airbyte for a large connector ecosystem.
  • dlt for Python-based ingestion pipelines.
  • CloudQuery for cloud asset and metadata syncing.

Refer to the Singer Migration Guide for a full checklist.


All Editions: Internal Package Structure Changes (Custom Plugins Only)

This change affects only users building custom plugins or using the Java library in tests.

  • io.kestra.core.runners.StandAloneRunner β†’ replaced by io.kestra.core.runners.TestRunner.
  • io.kestra.core.schedulers.AbstractScheduler β†’ replaced by io.kestra.scheduler.AbstractScheduler.

For plugin tests using Scheduler or Worker directly, add new Gradle modules:

testImplementation group: "io.kestra", name: "scheduler"
testImplementation group: "io.kestra", name: "worker"

Tests using @ExecuteFlow remain unaffected.

No impact for UI/API users.


All Editions: Debezium Plugin Requires Explicit Offset Storage Configuration

Starting with Kestra 1.0, Debezium triggers require an explicit offset.storage configuration. If you use Debezium, update your flows as follows:

Example update in existing triggers:

properties:
  offset.storage: org.apache.kafka.connect.storage.MemoryOffsetBackingStore
  database.history: io.debezium.relational.history.MemoryDatabaseHistory  # relevant for MySQL, SQL Server, Oracle, DB2

Recommended approach:
Set these as plugin defaults to avoid repeating them across multiple triggers:

pluginDefaults:
  - type: io.kestra.plugin.debezium
    forced: true
    values:
      properties:
        offset.storage: org.apache.kafka.connect.storage.MemoryOffsetBackingStore
        database.history: io.debezium.relational.history.MemoryDatabaseHistory  # relevant for MySQL, SQL Server, Oracle, DB2

Enterprise Edition: Audit Log API and Task Changes

Audit logging has been aligned across APIs and tasks:

  • API /api/v1{/tenant}/auditlog/search: filter permissions have been replaced by resources. Note that searching by permission is still possible in the UI under detail.permission.
  • Task PurgeAuditLogs: property permissions replaced by resources.
  • AuditLogDetails: field cls removed (was previously collected by AuditLogShipper).

Update all flows and API calls using permissions to use resources instead.

Don't miss a new kestra release

NewReleases is sending notifications on new releases.