Compare commits

...

2039 Commits

Author SHA1 Message Date
Barthélémy Ledoux
712d6da84f fix(ui): make file panel appear beside main panel in namespace (#9546) 2025-06-16 14:45:05 +02:00
Bart Ledoux
fcc5fa2056 fix: package-lock 2025-06-16 14:44:01 +02:00
Loïc Mathieu
dace30ded7 fix(system): compilation issue 2025-06-16 14:18:55 +02:00
github-actions[bot]
2b578f0f94 chore(version): update to version '0.23.0-rc5-SNAPSHOT' 2025-06-16 12:05:27 +00:00
Florian Hussonnois
91f958b26b fix(executor): delete WorkerJobRunning for any terminated task (#9493)
Make ExecutorService responsible for deleting WorkerJobRunning
when a terminated TaskRun is added to an execution.

Changes:
 - Remove unecessary read before delete on WorkerJobRunning table.

Close: #9493
2025-06-16 14:03:11 +02:00
Bart Ledoux
d7fc6894fe tests: fix storybook tests 2025-06-16 13:29:34 +02:00
Bart Ledoux
c286348d27 fix(ui): make array and KV Pairs work in nocode 2025-06-16 12:17:23 +02:00
brian.mulier
de4ec49721 fix(core): yaml utils migration 2025-06-16 11:18:47 +02:00
Barthélémy Ledoux
1966ac6012 fix: cleanup empty metadata to fix variable creation (#9529) 2025-06-16 11:17:52 +02:00
Barthélémy Ledoux
a293a37ec9 fix(ui): nocode API calls on EE needs tenant (#9527) 2025-06-16 11:17:43 +02:00
Barthélémy Ledoux
f295724bb6 fix: small tweaks on tabs (#9520) 2025-06-16 11:17:34 +02:00
Barthélémy Ledoux
06505ad977 fix(ui): snafu on duplicate input pair (#9514) 2025-06-16 11:15:30 +02:00
Barthélémy Ledoux
cb31ef642f fix(ui): [nocode] make dag tasks work (#9506) 2025-06-16 11:14:17 +02:00
Barthélémy Ledoux
c320323371 fix(ui): nocode updating inputs from yaml (#9430) 2025-06-16 11:12:35 +02:00
Barthélémy Ledoux
a190cdd0e7 fix(ui): add datepicker to nocode string field (#9351)
Co-authored-by: GitHub Action <actions@github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-16 11:12:27 +02:00
Barthélémy Ledoux
0678f7c5e9 fix(ui): rename namespace field (#9492) 2025-06-16 11:08:05 +02:00
Barthélémy Ledoux
f39ba5c95e fix(ui): prevent cursor change in Editor component when modelValue is updated from outside (#9371) 2025-06-16 11:07:55 +02:00
Karuna Tata
b4e334c5d8 feat(ui): drag and convert tabs to panels (#9198)
Co-authored-by: Barthélémy Ledoux <bledoux@kestra.io>
2025-06-16 11:07:37 +02:00
Bart Ledoux
561380c942 fix(ui): restore add button as a button 2025-06-16 11:07:25 +02:00
Satvik Kushwaha
68b4867b5a fix(ui): make download and preview visible for text ouputs (#8348)
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-06-16 11:06:24 +02:00
Barthélémy Ledoux
cb7f99d107 fix(ui): variables should work with duplicated keys (#9425) 2025-06-16 11:05:17 +02:00
Barthélémy Ledoux
efac7146ff fix: properly detect condition fields (#9353) 2025-06-16 11:02:41 +02:00
Barthélémy Ledoux
11de42c0b8 fix(ui): nocode - open onPause in a new tab (#9366) 2025-06-16 11:02:31 +02:00
Barthélémy Ledoux
b58d9e10dd fix: initialize array fields without any value (#9367) 2025-06-16 11:00:04 +02:00
Barthélémy Ledoux
e25e70d37e refactor: load nocode root form from server schema (#9327) 2025-06-16 10:59:53 +02:00
Karuna Tata
f2dac28997 fix(ui): clear selection of retry form radio buttons (#9268)
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
thank you so much for this geat work ! ❤️
2025-06-16 10:59:44 +02:00
Barthélémy Ledoux
0ac8819d95 fix(ui): allow key of sub-tasks to be other than tasks (#9333) 2025-06-16 10:59:24 +02:00
Ludovic DEHON
d261de0df3 fix(core): robots.txt was not served
close kestra-io/kestra#9015
2025-06-13 23:01:48 +02:00
brian.mulier
02cac65614 fix(core): filters was triggering endless refresh
closes #9508
2025-06-13 16:25:34 +02:00
MilosPaunovic
5064687b7e fix(core)*: make sure tour always opens with code & topology tabs visible (#9513)
Closes https://github.com/kestra-io/kestra-ee/issues/4073.
2025-06-13 08:55:20 +02:00
YannC
7c8419b266 fix(ui): Better duplicate key management in the pair component (#9431)
* fix(ui): Better duplicate key mananage in the pair component

close #9220

* fix(ui): add a have-error prop on inputText that show a red shadow

* refactor: simplify inputpair component (#9491)

* fix: only show lock if disabled

* alertState define order

---------

Co-authored-by: Barthélémy Ledoux <bledoux@kestra.io>
2025-06-12 13:28:02 +02:00
Roman Acevedo
84e4c62c6d fix(tests): test editor was showing previous shown plugin doc
fixes https://github.com/kestra-io/kestra-ee/issues/4066
2025-06-12 13:21:29 +02:00
Nicolas K.
9aa605e23b Feat/rework compatibility layer (#9490)
* feat(core): rework compatibility layer

* feat(core): #4062 rework compatibility layer

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-06-12 10:42:49 +02:00
Roman Acevedo
faa77aed79 feat(tests): add execution url in test result 2025-06-12 10:03:05 +02:00
brian-mulier-p
fdce552528 feat(core): introduce tasksWithState autocompletion (#9485)
part of #8350
2025-06-12 09:55:57 +02:00
brian.mulier
a028a61792 fix(core): avoid infinite load upon route redirect (#9480)
closes #9479
2025-06-11 17:03:52 +02:00
brian.mulier
023a77a320 fix(core): properly map labels filters from query (#9480)
closes #9324
2025-06-11 17:03:52 +02:00
brian.mulier
bfee04bca2 fix(core): prevent incompatible timeRange & start/endDate filters + prevent multiple scope filters (#9480)
closes #9240
2025-06-11 17:03:52 +02:00
YannC
3756f01bdf fix(ui): base the required prop on the requiredProperties list (#9433)
close #9377
2025-06-11 13:09:27 +02:00
YannC
c1240d7391 feat(ui): allow to close a tab with mouse middle click like in a navigator/ide (#9434) 2025-06-11 08:55:13 +02:00
YannC
ac37ae6032 fix(core): use Min annotation instead of Positive (#9432)
close #9380
2025-06-10 17:15:11 +02:00
github-actions[bot]
9e51b100b0 chore(version): update to version '0.23.0-rc3-SNAPSHOT' 2025-06-10 12:51:54 +00:00
Miloš Paunović
bc81e01608 fix(core)*: properly display chart colors for logs (#9429) 2025-06-10 13:51:56 +02:00
YannC.
9f2162c942 feat(): add Kestra plugin in the list 2025-06-10 12:44:09 +02:00
brian-mulier-p
97992d99ee fix(core): handle properly dot in nested keys & commas in quoted filter values (#9410) 2025-06-10 11:55:30 +02:00
brian.mulier
f90f6b8429 chore(deps): bump vitest to 3.2.3 2025-06-10 11:55:30 +02:00
brian.mulier
0f7360ae81 build(tests): replace workspaces with proper storybook config + working aliases 2025-06-10 11:53:11 +02:00
Florian Hussonnois
938590f31f fix(plugins): check whether plugin registry support versioning (#9122) 2025-06-10 11:49:40 +02:00
YannC.
b2d1c84a86 fix(): display correctly doc/chart preview when editing custom dashboard
close #9411
2025-06-10 10:25:41 +02:00
Ludovic DEHON
d7ca302830 feat(system): add server_type as global metrics tags 2025-06-10 09:23:14 +02:00
Roman Acevedo
8656e852cc build(ci): fix setversion workflow not making tag push trigger main 2025-06-09 18:03:49 +02:00
brian-mulier-p
cc72336350 fix(core): avoid adding invalid keys from query parameters to filter (#9383)
closes #9364
2025-06-09 18:03:49 +02:00
Roman Acevedo
316d89764e tests(core): add storybook on executions filters (#9354) 2025-06-09 18:03:49 +02:00
Barthélémy Ledoux
4873bf4d36 chore: upgrade storybook (#9326) 2025-06-09 14:40:21 +02:00
Florian Hussonnois
204bf7f5e1 chore: add script to update gradle kestraVersion prop on plugins 2025-06-09 14:31:45 +02:00
Loïc Mathieu
1e0950fdf8 fix(system): import flow should set the tenantId 2025-06-09 13:51:53 +02:00
github-actions[bot]
4cddc704f4 chore(version): update to version '0.23.0-rc2-SNAPSHOT' 2025-06-09 10:48:43 +00:00
Miloš Paunović
f2f0e29f93 fix(namespaces): properly load flows when changing namespace (#9393)
Closes https://github.com/kestra-io/kestra/issues/9352.
2025-06-09 12:34:36 +02:00
Miloš Paunović
95011e022e fix(namespaces): reload namespace once the id parameter changes (#9372)
Closes https://github.com/kestra-io/kestra-ee/issues/3630.
2025-06-06 12:25:37 +02:00
brian.mulier
65503b708a fix(core): add DefaultFilterLanguage as default in KestraFilter
closes #9365
2025-06-05 17:42:34 +02:00
brian-mulier-p
876b8cb2e6 fix(core): avoid crashing in case of taskrun having too large value (#9359)
closes #9312
2025-06-05 14:11:37 +02:00
Nicolas K.
f3b7592dfa fix(flows): #9319 error when puase with timeout trigger an execution (#9334)
* fix(flows): #9319 error when puase with timeout trigger an execution even after it's terminated

* fix(flows): only skip paused flow when execution is terminated

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-06-05 10:15:49 +02:00
brian.mulier
4dbeaf86bb fix(core): larger debounce for filter 2025-06-05 09:48:53 +02:00
brian.mulier
f98e78399d fix(core): handle whitespaces in label key and value 2025-06-05 09:48:43 +02:00
brian.mulier
71dac0f311 fix(core): smarter autocomplete order in editor 2025-06-05 09:48:00 +02:00
brian-mulier-p
3077d0ac7a fix(core): additional plugins are now properly shown in plugin docs (#9329)
closes kestra-io/plugin-langchain4j#61
2025-06-05 09:46:57 +02:00
YannC.
9504bbaffe fix(ci): put back bump helm chart and remove if condition 2025-06-05 08:48:56 +02:00
YannC.
159c9373ad fix(ci): checkout actions from main branch 2025-06-04 21:12:56 +02:00
YannC.
55b9088b55 fix(ci): modify actions order 2025-06-04 21:06:17 +02:00
YannC.
601d1a0abb fix(ci): Correctly pass all the secrets through all workflows 2025-06-04 15:10:33 +02:00
Florian Hussonnois
4a1cf98f26 chore(version): bump to version '0.23.0-rc1-SNAPSHOT' 2025-06-04 14:07:30 +02:00
Loïc Mathieu
f544bc9f85 fix(system)*: don't include yourself as def in the JSONSchema
For AdditionalPlugin, as we resolves subtypes using isAssignable, we will resolve ourself as a subtype which leads to infinite loop while parsing the schema.
2025-06-04 13:18:36 +02:00
Piyush Bhaskar
f06998571d fix(core): update background for plugin-doc in EE Apps and alert-info block styling in plugin doc. (#9323) 2025-06-04 16:10:01 +05:30
Piyush Bhaskar
2a27f031e2 fix(triggers): update link color in triggers (#9257) 2025-06-04 16:09:32 +05:30
YannC.
7e4a030fa3 fix(): add mising checkout in workflow github release 2025-06-04 12:25:32 +02:00
Loïc Mathieu
979b271638 fix(system)*: correctly resolve additional plugin subtypes so autocompletion work
Part-of: https://github.com/kestra-io/plugin-langchain4j/issues/61
2025-06-04 11:06:59 +02:00
Florian Hussonnois
bfc8556024 fix(build): fix deve-tool release-plugins script 2025-06-04 10:20:40 +02:00
Roman Acevedo
ca10215540 fix: langchain4j with wrong repo name in .plugins 2025-06-04 10:16:47 +02:00
Piyush Bhaskar
4bd3a50f9d fix(flow): update flow revision restoration (#9311) 2025-06-04 13:25:28 +05:30
Piyush Bhaskar
cfa239a7df fix(core): improve theme handling in Monaco editor (#9294) 2025-06-04 13:25:15 +05:30
brian.mulier
e163d91122 fix(core): rename NAMESPACE_PREFIX comparator to PREFIX 2025-06-04 09:32:29 +02:00
Miloš Paunović
8980c23895 chore(core): add an extra storage key constant for maintenance mode (#9310)
Related to https://github.com/kestra-io/kestra-ee/issues/3961.
2025-06-04 09:19:08 +02:00
Miloš Paunović
1c1bc18d91 fix(core): if task array has enum options, show select box instead of input (#9270)
Closes https://github.com/kestra-io/kestra/issues/9208.
Closes https://github.com/kestra-io/kestra/issues/9255.
2025-06-04 08:07:32 +02:00
brian.mulier
282cd766e2 fix(core): restore theme colors from Monaco editor 2025-06-03 20:37:55 +02:00
brian.mulier
ea0c3b9b22 fix(core): remove text filter for dashboards 2025-06-03 17:52:39 +02:00
brian.mulier
43ad5aa3fd fix(core): regex is not yet supported for text so we remove it for now 2025-06-03 17:46:31 +02:00
Anna Geller
581d5e4961 docs: clarify log level on the log task (#9277) 2025-06-03 15:58:44 +02:00
Roman Acevedo
8de568e7ac chore(version): update snapshot version 'v0.24.0-SNAPSHOT'. 2025-06-03 15:51:39 +02:00
Roman Acevedo
29eb0eb9c2 chore(version): update to version 'v0.23.0-rc0-SNAPSHOT'. 2025-06-03 15:49:49 +02:00
brian.mulier
83c6333c6f fix(core): change naming from STARTS_WITH_NAMESPACE_PREFIX to NAMESPACE_PREFIX 2025-06-03 15:32:42 +02:00
Florian Hussonnois
ccb871aec5 fix(ci): fix workflow gradle-release 2025-06-03 15:18:04 +02:00
Barthélémy Ledoux
3fe4556dd5 refactor: remove the theme and chartColor from schemes (#7296) 2025-06-03 15:00:35 +02:00
Barthélémy Ledoux
4a0d449106 refactor: remove nocode components registration from global scope (#9211) 2025-06-03 14:58:55 +02:00
Barthélémy Ledoux
c787ce3b4c fix: only load default values when changing type (#9272) 2025-06-03 14:58:41 +02:00
Roman Acevedo
cd9fdcd3d3 tests(system): make restartForEachItem test more deterministic 2025-06-03 14:27:48 +02:00
brian-mulier-p
e580c3590c feat(executions): add filter bar to flow concurrency tab (#9269)
closes #5825
2025-06-03 14:24:51 +02:00
brian.mulier
786be667a2 fix(core): remove REGEX filter for text search 2025-06-03 14:04:06 +02:00
Piyush Bhaskar
e2373448ff fix(core): update save button disabled logic. (#9267) 2025-06-03 17:17:16 +05:30
Miloš Paunović
23499a627a chore(core): remove sort buttons in no code if the block type is plugin defaults (#9265)
Closes https://github.com/kestra-io/kestra/issues/9217.
2025-06-03 12:36:27 +02:00
Miloš Paunović
24c4eebaf4 chore(core): remove margin from blueprints if used in combined view (#9264)
Closes https://github.com/kestra-io/kestra/issues/8503.
2025-06-03 12:28:00 +02:00
Piyush Bhaskar
3606a563f3 feat(flows): add global save functionality (#9262) 2025-06-03 15:55:30 +05:30
Anna Geller
22131f8c49 fix(assertions): fix assertions grammar (#9173) 2025-06-03 12:24:16 +02:00
YannC
c3d5811c86 fix: now correctly handles State filter for executions (#9223) 2025-06-03 12:15:44 +02:00
YannC
317621e7bb fix(ui): allows even embed table to be sorted (#9261)
close #9230
2025-06-03 12:09:16 +02:00
Daniel Rivas
598582fa76 test(cli): add return code and YAML-output tests for ConfigPropertiesCommand (#8827) 2025-06-03 12:00:43 +02:00
Loïc Mathieu
9bd87d7492 feat(flow): allow grouping plugin properties
Closes #7199
2025-06-03 11:59:10 +02:00
Roman Acevedo
712a3753f6 fix(triggers): bulk actions for Triggers with new Filter 2025-06-03 11:34:51 +02:00
Nicolas K.
49bb93b4db feat(tenants): change the tenant migration command name (#9253)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-06-03 11:32:18 +02:00
Miloš Paunović
f10b289d76 fix(dashboards): include pagination parameters in default dashboard tables (#9251)
Closes https://github.com/kestra-io/kestra/issues/9250.
2025-06-03 11:08:29 +02:00
brian.mulier
7f677211af fix(core): avoid adding incomplete key.{subKey} as text filter
closes #9243
2025-06-03 10:53:08 +02:00
Roman Acevedo
066a5f09fe fix(flows,executions): filtering QUERY NOT_EQUALS was not handled in jdbc 2025-06-03 10:44:32 +02:00
YannC
5145cf0567 fix(secrets): display all namespaces (#9248)
close kestra-io/kestra-ee#3942
2025-06-03 10:00:38 +02:00
Loïc Mathieu
70c1a8671a feat(execution): allow to loop until an unlimited duration or iteration count
But not both as this would means unlimited loops which are a bad practice.

Fixes #9152
2025-06-03 09:32:27 +02:00
Miloš Paunović
fc7df186f6 fix(core): prevent monaco suggestion widget to update its position (#9164)
Closes https://github.com/kestra-io/kestra/issues/9116.
2025-06-03 09:08:27 +02:00
Piyush Bhaskar
76d068fe35 fix(core): same position in center for all modals (#9247) 2025-06-03 12:28:29 +05:30
YannC
5c624579e0 fix(dashboard): make refresh button works (#9238)
close #7083
2025-06-03 08:55:13 +02:00
Piyush Bhaskar
a1db7b5677 chore(version): update @kestra-io/ui-libs to version 0.0.203 for finally block (#9246) 2025-06-03 12:21:36 +05:30
Miloš Paunović
2d36646cac refactor(core): remove unnecessary import (#9245) 2025-06-03 08:50:55 +02:00
Piyush Bhaskar
1c294cf4af fix(triggers): show the url instead of open. (#9244) 2025-06-03 12:13:02 +05:30
brian.mulier
ac19b4a86d fix(core): properly parse IN & NOT_IN values for Dashboards 2025-06-02 20:32:18 +02:00
brian.mulier
3511a8f74e fix(core): skip empty values from filters in query 2025-06-02 20:26:27 +02:00
brian.mulier
30bf32af83 fix(core): better relevance on filter syntax highlighting + IN working
closes #9214
2025-06-02 20:17:54 +02:00
brian.mulier
4d73138152 fix(core): restoreUrl is now scoped to route tab
closes #9235
2025-06-02 18:51:22 +02:00
YannC
fa96ca1f12 fix(core): Valid correctly conditions in triggers (#9228) 2025-06-02 17:39:11 +02:00
Nicolas K.
7fcafce47b feat(tenants): change the tenant migration command name (#9215)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-06-02 16:53:16 +02:00
Roman Acevedo
d92015cdc6 refactor(system): centralize filters legacy mapping in controllers (#9183) 2025-06-02 16:15:59 +02:00
AJ Emerich
7c0435ffd7 docs(dashboard): fix indentations in examples and add KPI (#9203)
* docs(dashboard): fix indentations in examples and add KPI

Closes https://github.com/kestra-io/kestra/issues/9193

* docs(kpi-chart): update width
2025-06-02 16:10:03 +02:00
Miloš Paunović
8c0c50bff3 chore(core): keep the property name in no code in monospace font (#9216)
Closes https://github.com/kestra-io/kestra/issues/9213.
2025-06-02 15:36:29 +02:00
Miloš Paunović
b55032bd3f chore(triggers): remove column cron from triggers listing and sort out trigger details dialog (#9212)
Closes https://github.com/kestra-io/kestra/issues/8605.
2025-06-02 15:35:26 +02:00
Barthélémy Ledoux
ba5d7e4c1a fix: restore namespace and id when emptying while editing (#9138) 2025-06-02 14:33:40 +02:00
Loïc Mathieu
15937a6565 feat(system): FlowRepository.findByNamespacePrefixWithSource() 2025-06-02 13:48:31 +02:00
Miloš Paunović
c0f66f6dda fix(core): amend positioning of the default tour elements (#9202)
Closes https://github.com/kestra-io/kestra/issues/9172.
2025-06-02 13:38:15 +02:00
Miloš Paunović
8265f6db7a fix(dashboards): use namespace parameter for next execution table to be able to build links (#9195)
Closes https://github.com/kestra-io/kestra/issues/9188.
2025-06-02 12:42:49 +02:00
github-actions[bot]
f55d2e2350 chore(core): localize to languages other than english (#9197)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-06-02 12:11:53 +02:00
Miloš Paunović
c8e6e5ad50 feat(tests): add tests preview tab in left menu (#9191)
Closes https://github.com/kestra-io/kestra-ee/issues/3927.
2025-06-02 12:05:07 +02:00
Miloš Paunović
a03721040f chore(secrets): allow deletion of all tags, including the last one (#9187)
Closes https://github.com/kestra-io/kestra-ee/issues/3937.
2025-06-02 11:43:54 +02:00
Miloš Paunović
afe267eeeb chore(secrets): make the key field disabled on secret editing (#9185)
Closes https://github.com/kestra-io/kestra-ee/issues/3936.
2025-06-02 11:43:31 +02:00
Barthélémy Ledoux
a51f4f213b fix(ui): nocode - add clear selected button for anyof (#9136)
Co-authored-by: GitHub Action <actions@github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-02 11:23:19 +02:00
Ludovic DEHON
c7986ec986 build(deps): bump org.testcontainers:testcontainers to 1.21.1 2025-06-02 10:58:53 +02:00
Piyush Bhaskar
5205cf24a6 chore(version): update the ui-libs version (#9184) 2025-06-02 14:09:18 +05:30
dependabot[bot]
9ff2df6ae4 build(deps): bump com.github.oshi:oshi-core from 6.8.1 to 6.8.2
Bumps [com.github.oshi:oshi-core](https://github.com/oshi/oshi) from 6.8.1 to 6.8.2.
- [Release notes](https://github.com/oshi/oshi/releases)
- [Changelog](https://github.com/oshi/oshi/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oshi/oshi/compare/oshi-parent-6.8.1...oshi-parent-6.8.2)

---
updated-dependencies:
- dependency-name: com.github.oshi:oshi-core
  dependency-version: 6.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 10:19:01 +02:00
dependabot[bot]
f46234a577 build(deps): bump org.postgresql:postgresql from 42.7.5 to 42.7.6
Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.7.5 to 42.7.6.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.7.5...REL42.7.6)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-version: 42.7.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 10:18:20 +02:00
dependabot[bot]
97b23a2d91 build(deps): bump org.testcontainers:junit-jupiter from 1.21.0 to 1.21.1
Bumps [org.testcontainers:junit-jupiter](https://github.com/testcontainers/testcontainers-java) from 1.21.0 to 1.21.1.
- [Release notes](https://github.com/testcontainers/testcontainers-java/releases)
- [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.21.0...1.21.1)

---
updated-dependencies:
- dependency-name: org.testcontainers:junit-jupiter
  dependency-version: 1.21.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 10:18:00 +02:00
Loïc Mathieu
bf18f671ce fix(system): don't set execution to queued twice 2025-06-02 09:35:08 +02:00
brian.mulier
e3285b1813 fix(core): add red highlighter upon using wrong comparator for a key in filters
closes #9090
closes #9097
2025-05-30 19:50:13 +02:00
brian.mulier
3ffa446c54 feat(core): implement STARTS_WITH_NAMESPACE_PREFIX filter 2025-05-30 19:49:37 +02:00
brian.mulier
87f4143ed4 fix(core): handle text filter properly for dashboards 2025-05-30 19:33:20 +02:00
brian.mulier
c439d08a0e fix(core): implement STARTS_WITH_NAMESPACE_PREFIX global filter using REGEX 2025-05-30 18:04:49 +02:00
Roman Acevedo
81d7588627 feat(system): add STARTS_WITH_NAMESPACE_PREFIX query filter for by namespace query 2025-05-30 17:21:29 +02:00
brian.mulier
f797f87041 fix(core): fixed eslint not to apply to tests 2025-05-30 17:19:10 +02:00
Miloš Paunović
3484074274 fix(core): handle no code inputs type change (#9166)
Closes https://github.com/kestra-io/kestra/issues/9101.
2025-05-30 15:21:56 +02:00
brian.mulier
630e4fd43a fix(core): repair audit logs type filter
closes #9091
2025-05-30 15:20:20 +02:00
brian.mulier
c6bc44ca6c fix(core): better filter comparator detection 2025-05-30 15:19:38 +02:00
Roman Acevedo
9063f61a4c feat(flows): remove JDBC NAMESPACE START_WITH filter specifities 2025-05-30 14:17:10 +02:00
Roman Acevedo
20c229a64f fix(executions): inclusive validation of start and end date 2025-05-30 14:17:10 +02:00
Roman Acevedo
a632c5e81a fix(flows): bulk actions for Flows with new Filter 2025-05-30 14:17:10 +02:00
Roman Acevedo
c8376daa1b refactor(flows): remove old FlowRepositoryInterface.find method not used anymore 2025-05-30 14:17:10 +02:00
Miloš Paunović
e29840de36 fix(core): amend padding on the global error notification container (#9161)
Closes https://github.com/kestra-io/kestra-ee/issues/3924.
2025-05-30 11:46:55 +02:00
Piyush Bhaskar
d8f8cb6244 fix(core): definition now expands from properties. (#9160) 2025-05-30 14:41:04 +05:30
Miloš Paunović
f6095cee99 fix(dashboards): amend line chart values & bar chart stacks sorting (#9158)
Closes https://github.com/kestra-io/kestra/issues/6603.
Closes https://github.com/kestra-io/kestra-ee/issues/3918.
2025-05-30 10:45:39 +02:00
YannC.
3865f90553 ci: moved helm update trigger on EE side 2025-05-30 09:30:28 +02:00
Piyush Bhaskar
f93ecbf741 fix(core): update regex to correctly render the alert for embedded docs. (#9151) 2025-05-29 18:32:39 +05:30
Miloš Paunović
9f03840e21 chore(dashboards): improve date format in dashboard table cells (#9150) 2025-05-29 14:33:26 +02:00
Miloš Paunović
e150384e17 fix(dashboards): change default dashboard yaml to include filtering in progress states (#9146)
States that now will be filtered for the `In Progress` table:

- `CREATED`
- `RESTARTED`
- `QUEUED`
- `RUNNING`
- `PAUSED`
- `RETRYING`
- `KILLING`

Closes https://github.com/kestra-io/kestra/issues/9125.
2025-05-29 14:11:08 +02:00
Miloš Paunović
29006071bb fix(executions): properly guard against the npe error (#9147) 2025-05-29 14:06:19 +02:00
Miloš Paunović
ff2df65b00 fix(dashboards): properly replace namespace and flow variables in flow dashboard yaml (#9145) 2025-05-29 14:03:23 +02:00
Miloš Paunović
e00d1ca0b7 fix(dashboards): show proper value in dashboard table, flow column (#9142) 2025-05-29 10:37:53 +02:00
Miloš Paunović
345a6331ad fix(dashboards): amend line chart values & bar chart stacks sorting (#9141)
Closes https://github.com/kestra-io/kestra/issues/6603.
Closes https://github.com/kestra-io/kestra-ee/issues/3918.
2025-05-29 10:35:15 +02:00
Miloš Paunović
124fcbf87f fix(core): switch filter colors on main theme change (#9140)
Closes https://github.com/kestra-io/kestra/issues/9119.
2025-05-29 08:32:17 +02:00
Piyush Bhaskar
82f617b704 feat(core): 503 Service Unavailable status in error messages. (#9135) 2025-05-29 10:51:24 +05:30
brian.mulier
6e6d4e4d26 fix(core): avoid sending date filters to flow list API call
closes kestra-io/kestra-ee#3911
closes #9132
2025-05-28 23:13:16 +02:00
brian.mulier
31a96fe30b fix(core): properly filter Namespace executions 2025-05-28 23:10:56 +02:00
brian.mulier
dd52bc1d4c fix(core): text search without needing "text" key prefix
closes #9105
2025-05-28 18:29:56 +02:00
brian.mulier
b2cfe1dda3 fix(core): properly remap q parameter to text in filter bar 2025-05-28 17:55:22 +02:00
Nicolas K.
457e4826a8 test(storage): remove null tenant in test suit (#9139)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-05-28 17:41:13 +02:00
Loïc Mathieu
6a465c1289 feat(system): monitor and close the Scheduler monitoring loop 2025-05-28 16:02:54 +02:00
Miloš Paunović
e93ef87dba chore(dashboards): load more dashboards at once (#9127) 2025-05-28 16:00:15 +02:00
Miloš Paunović
a990155519 chore(dashboards): use displayName property for table headers, if existing (#9129)
Related to https://github.com/kestra-io/kestra-ee/issues/3910.
2025-05-28 15:54:16 +02:00
Miloš Paunović
38a0c7aafb chore(dashboards): make sure save button is disabled again on successful action (#9131)
Related to https://github.com/kestra-io/kestra-ee/issues/3910.
2025-05-28 15:52:46 +02:00
Miloš Paunović
ba793a00a4 chore(dashboards): remove text transformation in chart legend creation (#9130) 2025-05-28 15:52:05 +02:00
Loïc Mathieu
6c7a8be5bd fix(system): use the correct config name for resonse cache 2025-05-28 15:21:05 +02:00
brian.mulier
858f37933e fix(core): avoid sort, page & size from interfering with filter widget 2025-05-28 15:18:27 +02:00
YannC
80061e3fb3 fix: don't use a endDate when not asked (#9056)
* fix: don't use a endDate when not asked

close #9037

* test: fix following change
2025-05-28 15:04:56 +02:00
YannC
59f2674f75 feat: improved new custom dashboard (#9120)
* apply correctly the default filter for namespace and flow pages
* apply a default date on charts if none is set
* add flow_id filter in the global filter
2025-05-28 14:59:00 +02:00
Miloš Paunović
525717a9b8 chore(dashboards): multiple ux improvements of dashboards (#9111)
Closes https://github.com/kestra-io/kestra/issues/9038.
Closes https://github.com/kestra-io/kestra/issues/9057.
Closes https://github.com/kestra-io/kestra-ee/issues/3879.
2025-05-28 14:54:07 +02:00
brian.mulier
30adacaf75 fix(core): log level is not a multi-value filter
closes #9087
2025-05-28 14:48:58 +02:00
brian.mulier
961608fef6 fix(core): remove namespace & flowId keys on Flow -> Executions page filter 2025-05-28 14:48:03 +02:00
brian.mulier
f585264620 fix(core): avoid red-coloured key in filters 2025-05-28 14:31:08 +02:00
Piyush Bhaskar
81a94ec23f fix(core): bring back radio styles. (#9112)
* fix(core): bring back radio styles.

* bring radio back

Co-authored-by: Barthélémy Ledoux <bledoux@kestra.io>

---------

Co-authored-by: Barthélémy Ledoux <bledoux@kestra.io>
2025-05-28 17:55:50 +05:30
Nicolas K.
4f8ea9afb1 feat(storage): refactor getPath (#9104)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-05-28 14:12:58 +02:00
Roman Acevedo
0523c04be0 fix(executions): by-query not working with new filters (#9058) 2025-05-28 13:15:03 +02:00
Miloš Paunović
63e9bf2672 chore(flows): take default namespace into account on flow creation (#9110)
Closes https://github.com/kestra-io/kestra/issues/9109.
2025-05-28 12:56:41 +02:00
Loïc Mathieu
7cc938c605 feat(test): allow inline files fixtures and render fixture outputs 2025-05-28 12:48:08 +02:00
Florian Hussonnois
3e21e69e85 fix(system): wait for grace period before reemitting tasks for terminated_forced workers
When a worker transitition to the TERMINATED_FORCED, the LivenessCoordinator
should wait for termination grace period to ensure
that all in-flight task-runs had time to be completely processed by the executors

Related-to: #8334
2025-05-28 12:03:48 +02:00
YannC
28417f04d9 feat: replace daily charts by customized charts (#9081) 2025-05-28 11:52:21 +02:00
Nicolas K.
4041ebf340 fix(tests): add tenant id to log repository tests (#9100)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-05-28 11:45:55 +02:00
brian.mulier
36d79e68dc chore(deps): splitpanes types 2025-05-28 11:23:08 +02:00
Miloš Paunović
6e0516f448 fix(core): prevent cursor in code editor from jumping to top (#9095)
Closes https://github.com/kestra-io/kestra/issues/9013.
2025-05-28 11:10:16 +02:00
Barthélémy Ledoux
a12d5b3eb5 fix: setup anyof forms for taskRunner retry and others (#9049)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-05-28 11:07:16 +02:00
brian.mulier
c4d9a33987 chore(deps): splitpanes types 2025-05-28 11:04:22 +02:00
brian.mulier
5c33907288 chore(deps): remove @types/splitpanes and add a manual module for it + fix vue version 2025-05-28 10:56:54 +02:00
Nicolas K.
5f0910b54e test(storage): remove all null tenant test (#9054)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-05-28 09:30:28 +02:00
Piyush Bhaskar
36900cb9ec fix(flow): diff shows as per revision number (#9080) 2025-05-28 12:43:15 +05:30
Miloš Paunović
7047b605f5 fix(core): amend keyboard save shortcut for both flow and namespace files (#9030) 2025-05-28 08:16:33 +02:00
brian.mulier
9e84b12008 fix(core): support REGEX filtering 2025-05-27 20:02:08 +02:00
brian.mulier
7297221e06 fix(core): add REGEX filtering on namespace field in JDBC 2025-05-27 19:24:14 +02:00
brian.mulier
37c001aa56 fix(core): avoid overriding sort, size and page from new filtering 2025-05-27 19:12:39 +02:00
brian.mulier
a12a6ccc2f fix(core): filtering was not working with pagination
closes #9027
2025-05-27 18:58:55 +02:00
brian.mulier
ba2179ed56 fix(core): avoid red-coloured filter keywords
closes #9024
2025-05-27 18:55:02 +02:00
brian.mulier
1a5b1f2b5c fix(core): wrong childFilter naming 2025-05-27 18:52:54 +02:00
brian.mulier
3d26205464 fix(deps): fixed storybook router version to UI one 2025-05-27 17:19:18 +02:00
brian.mulier
9a759e2807 fix(core): avoid undefined due to scope filter addition
closes #9024
2025-05-27 17:19:09 +02:00
brian.mulier
997d71f586 fix(core): scope is a single value filter 2025-05-27 17:17:34 +02:00
Loïc Mathieu
3bc75efbf2 fix(dashboard): Properly cast log level column in Dashboards
Fixes #8128
2025-05-27 16:18:49 +02:00
Loïc Mathieu
5260726daa fix(ui): namespace tab didn't use the pluginDefault translation 2025-05-27 16:18:08 +02:00
brian-mulier-p
79ee64a8a7 fix(core): handle AND by spaces in filters (#9046)
closes kestra-io/kestra-ee#3003
2025-05-27 15:56:01 +02:00
Piyush Bhaskar
69ff5a2365 fix: color of Failed status (#9042) 2025-05-27 18:46:33 +05:30
Anna Geller
387eb9bb33 fix(dashboard): simplify naming for ratio (#9041) 2025-05-27 14:50:00 +02:00
Miloš Paunović
f380501f61 fix(core): properly show custom dashboard card titles (#9035) 2025-05-27 14:16:18 +02:00
brian-mulier-p
217fbcddb8 fix(core): update flow & namespace overview dashboard filters (#9034)
closes #9033
2025-05-27 14:11:56 +02:00
Miloš Paunović
cbc250bb1c fix(core): amend plugin page problems due to npe (#9031)
Closes https://github.com/kestra-io/kestra-ee/issues/3865.
2025-05-27 14:01:06 +02:00
Piyush Bhaskar
c53791435c fix(core): use new color tokens for panes and editor. (#9020) 2025-05-27 16:49:49 +05:30
Satvik Kushwaha
8846da55e8 fixed spacing in demo apps page (#9021)
* fixed spacing in demo apps page

* minor tweak

---------

Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>
2025-05-27 16:47:40 +05:30
github-actions[bot]
7cefbaccb7 chore(core): localize to languages other than english (#9023)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-27 13:11:48 +02:00
Miloš Paunović
4a5cd1dce7 chore(core): make sure id property is required for sla block (#9022) 2025-05-27 12:55:49 +02:00
Miloš Paunović
4b2e50242b feat(namespaces): allow exporting single namespace files from editor sidebar (#8967) 2025-05-27 12:26:02 +02:00
YannC
f81125ed0b fix: avoid the Kestra Instance to be indexed (#9018)
close #9015
2025-05-27 12:14:15 +02:00
Miloš Paunović
c8f58f842c fix(core): properly check if property is nullish (#9019) 2025-05-27 11:48:54 +02:00
brian.mulier
c25c60d442 chore(build): remove add jmh-benchmarks gradle.properties to gitignore 2025-05-27 11:39:28 +02:00
brian-mulier-p
71a8aea570 feat(core): move KestraFilter to a Monaco-based implementation (#8915)
closes kestra-io/kestra-ee#3004
2025-05-27 11:36:23 +02:00
Barthélémy Ledoux
81da94dfd1 fix(core): avoid inserting empty tasks in flow (#9016) 2025-05-27 11:29:39 +02:00
YannC.
1cc7b3e443 fix: avoid diving by 0 with the KPI chart 2025-05-27 11:23:38 +02:00
Kelvin Yim
f7c2cbec43 fix(ui): improve padding and font sizes on Blueprints tab in Editor (#9002)
* fix/8050 - Improve padding and font sizes on the Blueprints tab in the Editor

fix(ui): improve padding and font sizes on Blueprints tab in Editor

Image 1:
- Added a "Blueprints" tittle
- Added 32px horizontal padding and 16px bottom padding to blueprint container
- Change font tittle
- Reduced blueprint title font size
- Added spacing between Source title and code block
- Changed background to ks-background-input
- Changed editor to ks-background-input

Image 2:
- Changed top spacing
- Changed background to ks-background-input
- Changed "bold" tittle blueprint to "regular"

Fixes #8950

* fix/8050 - Improve padding and font sizes on the Blueprints tab in the Editor

fix(ui): improve padding and font sizes on Blueprints tab in Editor

- FIx padding between tittle "Source" and code block
- changed css &.custom-dark-vs-theme
- Add Community top spacing

Fixes #8950

* fix(ui): improve padding and font sizes on Blueprints tab in Editor

- Updated back button with rounded background and ChevronLeft icon
- Reduced blueprint title font size and improved header layout
- Added proper spacing and alignment for header elements

Fixes #8950

* revert gitignore and application.yml

* fix(ui): minor tweaks.

---------

Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>
2025-05-27 14:29:42 +05:30
Roman Acevedo
0101f53954 build(ci): require translations to be done (#9014)
at least for the current RC period
2025-05-27 10:54:07 +02:00
Loïc Mathieu
a0ee30916c chore(system): JdbcQueue code refactoring 2025-05-27 10:46:05 +02:00
github-actions[bot]
c30abf40ee chore(core): localize to languages other than english (#9011)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-27 10:28:19 +02:00
Barthélémy Ledoux
17858091a4 fix(ui): clicking on edit/delete in topology opens a nocode (#8993) 2025-05-27 10:25:54 +02:00
Miloš Paunović
09318b7bc2 chore(core): amend labels of task anyof component radio buttons (#9005) 2025-05-27 09:41:47 +02:00
Miloš Paunović
069159f8fd chore(core): add sla block to no code editor (#9004)
Closes https://github.com/kestra-io/kestra/issues/7081.
2025-05-27 09:32:05 +02:00
Loïc Mathieu
6039d100ee feat(system): add metrics for flowable tasks
Part-of: #8341
2025-05-27 09:20:09 +02:00
Loïc Mathieu
6630cf045f fix(system): remove required props in definitions that have a default
Fixes https://github.com/kestra-io/plugin-scripts/issues/243
2025-05-27 08:57:36 +02:00
Loïc Mathieu
270b4d4bc2 feat(system): add metics for concurrency limit
Part_of: #8341
2025-05-27 08:57:10 +02:00
Piyush Bhaskar
3ad13272e5 fix(core): full width for wrapper containing properties. (#9003) 2025-05-27 11:40:44 +05:30
YannC
ea402261d5 Replace the default dashboard with custom dashboard (#8769)
* feat:
- Implement width property
- Replace custom dashboard
- Started to integrate the KPI chart

* feat(ui): introduce dashboard chart layout system

* feat(ui): introduce dashboard chart kpi card

* chore(ui): amend layout widths for sm screen size

* chore(ui): prevent editing of default dashboard

* chore(ui): centering the KPI text inside the box

* chore(ui): dashboard edit preview to respect set layouts

* chore(ui): initial work on setting the default flow & namespace dashboards

* fix(ui): make sure there is no naming clashes

* feat: KPI chart backend implementation

* feat: validation annotations

* chore(ui): make chart legend align to right side

* chore(ui): properly show chart labels

* chore(ui): improve state and ID components inside custom tabels

* chore(ui): add proper link to execution in tables

* feat: implemented Triggers as Datasource for custom dashboards

close kestra-io/kestra-ee#3740

* feat: modified the Markdown chart so now it accept different sources

* feat: rename KPI property to numerator & where

close #3739

* chore(ui): improve markdown component

* chore(ui): markdown charts

* chore(ui): markdown charts

* chore(ui): markdown charts remove padding

* chore(ui): markdown charts

* feat: fixes + define custom dashboard equivalent to current default dashboard with some modification

* fix: round double value

* chore(ui): improve  flows and ns charts

* chore(ui): make sure that table shows execution links only if namespace and flowId exist

* chore(ui): make sure markdown is properly shown on dashboard edititng

* fix: correctly do preview instead of load on homepage

* fix: correctly preview markdown chart and add description in default flow dashboard

* fix: apply review changes

* fix: modify test following classes modifications on charts

* tests: restore package-lock

* remove chromatic tools and a warning

---------

Co-authored-by: MilosPaunovic <paun992@hotmail.com>
Co-authored-by: Bart Ledoux <bledoux@kestra.io>
2025-05-27 08:02:11 +02:00
yuri
57bafd1240 fix(ui): show proper no results (#8870)
* fix(ui): show proper no result

* Migrated the `SelectTable` component away from `NoData` to the
  placeholder text attribute.
* Enabled `NoData` for logs since their empty result case was also
  not clear.

* fix(core): make selection work and few more tweak.

---------

Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>
2025-05-27 11:23:26 +05:30
Loïc Mathieu
f90e22a935 fix(tests): improve test robustness by avoiding spinning a new thread for receive timeout 2025-05-26 20:35:28 +02:00
Loïc Mathieu
ec21ef3d32 feat(system): add a metrics for the Executor thread count
Part-of: #8341
2025-05-26 19:37:32 +02:00
Loïc Mathieu
88b88856da feat(system): add metrics to the JDBC queue
Part-of: #8340
2025-05-26 19:37:03 +02:00
github-actions[bot]
96b481348f chore(core): localize to languages other than english (#8999)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-26 18:10:40 +02:00
brian-mulier-p
e3a8c1c086 fix(plugins): resolve subtypes in low code editor (#8957)
closes #8903
2025-05-26 17:49:50 +02:00
Miloš Paunović
87fe3abee5 refactor(core): rename the type in random retry (#8998) 2025-05-26 17:47:56 +02:00
Miloš Paunović
4b7d90faf4 chore(core): add retry block to no code editor (#8996)
Closes https://github.com/kestra-io/kestra/issues/7031.
2025-05-26 17:40:12 +02:00
Barthélémy Ledoux
2f8a844326 fix: save namespace files when clicking ctrl-S (#8994) 2025-05-26 17:09:06 +02:00
Loïc Mathieu
1b4efc51bf feat(system): restore the flow queue after tenant migration
This would lower the risk of trigger/topology not up to date and would make all components having to right set of flows.
2025-05-26 15:37:33 +02:00
YannC
d3c29fcadd fix(logs): Use correct property for filtering logs in kafka (#8812)
* fix(logs): Use correct property for filtering logs in kafka

* test: added a test for date
2025-05-26 15:20:03 +02:00
Barthélémy Ledoux
059323aca0 fix(ci): nocode translate (#8988)
Co-authored-by: GitHub Action <actions@github.com>
2025-05-26 14:35:41 +02:00
YannC
aae752ff3c feat: add a new method "taskWithState" that leverage on the property tasks (#8907)
close #5653
2025-05-26 13:09:13 +02:00
Piyush Bhaskar
ee5c39cbe4 fix(core): remove placeholder on input (#8984)
* fix(core): remove placeholder on input

* fix: remove not required
2025-05-26 16:17:17 +05:30
Roman Acevedo
021357c7a4 feat(tests): validate the Flow exists when create or update Test 2025-05-26 12:35:09 +02:00
Piyush Bhaskar
eff58d96c8 fix(core): few tweaks to align the placeholder and ui as per design. (#8980)
* fix(core): few tweaks to align the placeholder and ui as per design.

* fix: minor tweak

---------

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-05-26 15:27:39 +05:30
Barthélémy Ledoux
3c7ca60188 fix(nocode): reorder subtasks (#8976) 2025-05-26 11:55:46 +02:00
Piyush Bhaskar
06635cdecd fix(core): navigating back to plugins home. (#8972)
* fix(core): navigating back to plugins home.

* fix: keep the scroll to top

Co-authored-by: Barthélémy Ledoux <bledoux@kestra.io>

---------

Co-authored-by: Barthélémy Ledoux <bledoux@kestra.io>
2025-05-26 15:20:53 +05:30
Miloš Paunović
8ada2846bc feat(core): move complex task fields inline in no code editor (#8977)
Closes https://github.com/kestra-io/kestra/issues/8934.
2025-05-26 11:21:49 +02:00
Florian Hussonnois
c2dc1c0b8b fix(cli): properly install all plugins depending on kestra distribution
Related-to: kestra-io/kestra-ee#3806
2025-05-26 10:27:25 +02:00
Miloš Paunović
d66ee28a7a refactor(core): simplify header badge component usage (#8963) 2025-05-26 10:20:34 +02:00
dependabot[bot]
cbe32742f7 build(deps): bump software.amazon.awssdk:bom from 2.31.45 to 2.31.50
Bumps software.amazon.awssdk:bom from 2.31.45 to 2.31.50.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-version: 2.31.50
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 09:52:36 +02:00
dependabot[bot]
55fb234760 build(deps): bump me.champeau.jmh from 0.7.2 to 0.7.3
Bumps me.champeau.jmh from 0.7.2 to 0.7.3.

---
updated-dependencies:
- dependency-name: me.champeau.jmh
  dependency-version: 0.7.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 09:52:16 +02:00
dependabot[bot]
6b00ab2623 build(deps): bump com.google.cloud:libraries-bom from 26.60.0 to 26.61.0
Bumps [com.google.cloud:libraries-bom](https://github.com/googleapis/java-cloud-bom) from 26.60.0 to 26.61.0.
- [Release notes](https://github.com/googleapis/java-cloud-bom/releases)
- [Changelog](https://github.com/googleapis/java-cloud-bom/blob/main/release-please-config.json)
- [Commits](https://github.com/googleapis/java-cloud-bom/compare/v26.60.0...v26.61.0)

---
updated-dependencies:
- dependency-name: com.google.cloud:libraries-bom
  dependency-version: 26.61.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 09:51:55 +02:00
Malaydewangan09
2aa5b1e236 feat(plugins): add plugins InfluxDB, Jenkins, Ollama, GraphQL 2025-05-26 09:31:31 +02:00
Ludovic DEHON
67c2ac8d01 feat(plugins): add allowedResponseCodes on http tasks
close #8973
2025-05-26 09:26:47 +02:00
github-actions[bot]
eb4de0530e chore(core): localize to languages other than english (#8964)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-24 11:55:49 +02:00
Barthélémy Ledoux
d7a420474f feat(ui): make trigger conditions in no-code a form (#8859) 2025-05-24 00:31:22 +02:00
Piyush Bhaskar
3de436cb8b feat(core): improve the ux of no code editor (#8955) 2025-05-23 19:54:15 +02:00
Florian Hussonnois
e46d4ed7ef fix(flows): adjust plugin doc to match the specified plugin version
Related-to: kestra-io/kestra-ee#3528
Related-to: kestra-io/ui-libs#496
2025-05-23 17:46:33 +02:00
github-actions[bot]
5994ffa74c chore(core): localize to languages other than english (#8961)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-23 17:15:50 +02:00
Roman Acevedo
c98911c394 refactor(core): regroup Test and Beta badges with same component 2025-05-23 17:02:09 +02:00
Nicolas K.
29c3bd7dec fix(core): tenant migration scripts now update keys
* chore(core): add keyboard shortcuts icon to flow editor tab (#8925)

fix(core): don't send empty operations when migrating roles (#3807)

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>

* fix(core): migrate key that required tenant id to avoid duplication

---------

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-05-23 16:44:53 +02:00
Roman Acevedo
2601df3de2 feat(tests): add a contextual Test badge on Execution topbar
fixes https://github.com/kestra-io/kestra-ee/issues/3812
2025-05-23 16:36:16 +02:00
Roman Acevedo
16ea41caa3 feat(tests): add ERROR state and handling
fixes #3804

* feat(tests): display errors in UI test results
2025-05-23 16:09:25 +02:00
Miloš Paunović
246892af29 fix(core): amend autocompletion in multi panel yaml flow editor (#8956)
Closes https://github.com/kestra-io/kestra/issues/8796.
2025-05-23 14:59:09 +02:00
Miloš Paunović
7de5002166 feat(core): save individual namespace files from multi panel editor (#8930)
Closes https://github.com/kestra-io/kestra/issues/8923.
2025-05-23 12:56:12 +02:00
Loïc Mathieu
1a4bb04258 fix(system): rename flyway migrations
They have been renamed in develop due to clashes but one was already backported on 0.22.

Fixes https://github.com/kestra-io/kestra-ee/issues/3819
2025-05-23 11:42:21 +02:00
YannC
88fa884e26 fix(filters): change label filtering to 'and' instead of 'or' (#8661)
* fix(filters): change label filtering to 'and' instead of 'or'

link to #8489

* test(execution): add test to validate and behavior

* test(execution): fix test
2025-05-23 11:26:46 +02:00
Florian Hussonnois
99a6d7533c fix(build): exclude jmh-benchmark module 2025-05-23 11:22:21 +02:00
Miloš Paunović
2c944612f3 fix(core): prevent multiple tabs for adding tasks to create duplicate entries (#8916)
Closes https://github.com/kestra-io/kestra/issues/8781.
Closes https://github.com/kestra-io/kestra/issues/8926.
2025-05-23 09:07:59 +02:00
Miloš Paunović
dc8095b6a2 fix(core): filter the inputs with no id field to prevent breaking of panel (#8944)
Closes https://github.com/kestra-io/kestra/issues/8932.
2025-05-23 08:57:26 +02:00
brian-mulier-p
84310e82e2 fix(system): force a state after kill (#8937)
closes #8936
2025-05-22 19:04:35 +02:00
Loïc Mathieu
ca652a1e96 fix(plugins)*: ForEach executes task in the wrong order when no concurrency limit
Fixes #8904
2025-05-22 17:53:35 +02:00
Miloš Paunović
625478cfb1 chore(core): add keyboard shortcuts icon to flow editor tab (#8925) 2025-05-22 15:37:10 +02:00
YannC
228359c661 test: avoid FileChangedEventListenerTest being flaky (#8810) 2025-05-22 11:38:25 +02:00
Florian Hussonnois
770a703482 feat(system): optimize MapUtils for merge
Optimize merge method by removing use of
java stream
2025-05-22 09:46:54 +02:00
Florian Hussonnois
55740133f0 chore(test): add module for jmh benchmarks 2025-05-22 09:46:54 +02:00
Loïc Mathieu
593aad2aea feat(system): don't compute empty task outputs
The method to compute task output is costly and can be avoided if there are no outputs.
2025-05-22 09:25:11 +02:00
Loïc Mathieu
a179f17dc6 feat(system): don't clone maps when not necessary
This is very cosly as RunVariables are computed each time we create an execution context.
2025-05-22 09:25:11 +02:00
François Delbrayelle
59a6c99fef fix(test): mockTaskRun should be public 2025-05-22 09:20:31 +02:00
Miloš Paunović
769cc28bf0 fix(core): make sure that complex tasks are properly rendered for both inputs and sections (#8902) 2025-05-22 08:30:31 +02:00
Florian Hussonnois
b5aaa6fb38 fix(core): cleanup LogService to always prefix with tenant
Remove use of kestra.ee.tenants.enabled property
2025-05-21 16:18:14 +02:00
brian-mulier-p
1ee60c1075 fix(core): avoid multiple rendering in ForEachItem (#8906)
closes #8905
2025-05-21 16:08:21 +02:00
brian.mulier
a5df187304 fix(plugins): remove "DYNAMIC" log from browser console 2025-05-21 14:53:04 +02:00
YannC
07814abd96 feat(core): added SecurityScheme annotation for openapi spec file generation + add some custom Schema name to avoid duplicated name (#8726) 2025-05-21 14:36:23 +02:00
YannC
2996c885f7 fix(filters): corrected the namespace contains filter (#8653)
close #8498
2025-05-21 14:35:38 +02:00
Loïc Mathieu
0fd8461249 feat(system): use Property.ofValue(T) instead of Property.of(T) 2025-05-21 13:35:35 +02:00
Loïc Mathieu
05d296df34 feat(system): Property.ofValue & Property.ofExpression
Deprecate Property.of(T) in favor of Property.ofValue(T) and new Property(String) in favor of Property.ofExpression(String)
2025-05-21 13:35:35 +02:00
Loïc Mathieu
87d162729e fix(plugins): ForEach must be displayed as a sequential
As the tasks inside each task group are executed sequentially, groups are executed concurrently not tasks inside them.

Part-of: https://github.com/kestra-io/kestra-ee/issues/3722
2025-05-21 13:28:52 +02:00
dependabot[bot]
e4ec427409 build(deps): bump posthog-js from 1.245.0 to 1.245.1 in /ui (#8900)
Bumps [posthog-js](https://github.com/PostHog/posthog-js) from 1.245.0 to 1.245.1.
- [Release notes](https://github.com/PostHog/posthog-js/releases)
- [Changelog](https://github.com/PostHog/posthog-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/PostHog/posthog-js/compare/v1.245.0...v1.245.1)

---
updated-dependencies:
- dependency-name: posthog-js
  dependency-version: 1.245.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-21 12:52:17 +02:00
Miloš Paunović
14d6ad5e0d fix(core): filter deprecated properties from optional ones in no code editor (#8896) 2025-05-21 12:51:21 +02:00
Miloš Paunović
341f10a237 chore(deps): regular dependency update (#8895)
Performing a weekly round of dependency updates in the NPM ecosystem to keep everything up to date.
2025-05-21 12:39:43 +02:00
Florian Hussonnois
fb4b1c842a fix(core): fix misc APIs with main tenants
Fix unit-tests
2025-05-21 12:24:09 +02:00
Florian Hussonnois
e3c4f0e502 fix(core): fix rooting to main tenant for configs endpoint 2025-05-21 09:15:24 +02:00
Florian Hussonnois
caf701a1c4 fix(system): remove main tenant from api/v1/configs 2025-05-20 18:57:01 +02:00
Nicolas K.
8821705a06 test(controller): add logs to understand why the test fail (#8858)
* test(controller): add logs to understand why the test fail

* test(controller): add logs to make sure the executions are running

* test(controller): add logs to make sure the executions are running

* test(controller): add logs to make sure the executions are running

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-05-20 16:55:42 +02:00
Piyush Bhaskar
0723565d99 fix(core): center last step in tour and add Finish animation (#8862)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-05-20 19:09:21 +05:30
github-actions[bot]
15759b8054 chore(core): localize to languages other than english (#8864)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-20 14:15:15 +02:00
Miloš Paunović
bdd0c675b8 chore(core): add group for deprecated properties in the no code editor (#8863)
Closes https://github.com/kestra-io/kestra/issues/7207.
2025-05-20 13:59:14 +02:00
github-actions[bot]
a51e4e240a chore(core): localize to languages other than english (#8861)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-20 13:04:40 +02:00
Piyush Bhaskar
8e8bf8e304 fix(core): tweak product tour flow listing (#8860)
Closes https://github.com/kestra-io/kestra/issues/8366.
2025-05-20 13:02:31 +02:00
Roman Acevedo
d3228b27b7 feat(tests): add fixtures to results 2025-05-20 11:35:15 +02:00
Barthélémy Ledoux
f293f9d849 fix(ui): nocode should allow to delete on click on bin (#8712)
* refactor: remove SECTIONS from local constants

* fix(ui): make delete button work for section, errors & tasks

* fix: allow delete of error, finally and afterexec

* fix: allow deleting fro any section

* use updated YAML_UTILS

* fix keyname usage

* update ui-libs for yaml utils

* fix: delete all tasks and keep order in creation

* chore: update ui-libs
2025-05-20 11:15:35 +02:00
Barthélémy Ledoux
cbf1a9823f fix(ui): update basePath to include 'main' tenant in api urls (#8856) 2025-05-20 10:41:00 +02:00
brian-mulier-p
1a7ccb97bf fix(plugins): show back if property is dynamic (#8846)
closes kestra-io/ui-libs#471
2025-05-20 10:28:11 +02:00
Loïc Mathieu
c9421879c8 fix(system): use a concurrent list to possibly fix the flaky test 2025-05-20 09:43:48 +02:00
Loïc Mathieu
b0f93e1945 chore(system): skip sleep in the JdbcQueue when at max poll size
When a queue is at max poll size, this means that it is at full capacity. In this case skip the sleep and process immediatly the next batch of message.
This improve latency at high thoughput without adding too much load to the database.

We can even go further by skipping sleep each time the poll returns messages but this would imply database cost so for now we balance performance and database cost by only skipping sleep when at max capacity.
2025-05-20 09:43:15 +02:00
Nicolas K.
4b228c966c fix(server): port changed during the redirection when no tenant id in uri (#8854)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-05-19 19:16:15 +02:00
Daniel Rivas
d755123087 feat(namespaces): Namespace search case insensitivity (#8717)
* Fix: Changed the namespace parsing so that it parses the NAMESPACE_FIELD case-insensitively

* Fix indentation issues
2025-05-19 18:18:34 +02:00
Bala Aparna
5fd9c21ef4 test(plugins): add code coverage to plugin command CLI (#8829)
Added test cases for:

Listing all available subcommands in the PluginCommand CLI help output.
Verifying that external plugins are not loaded by default in PluginCommand.

Updated existing tests for:

Enhanced help output validation to check for the presence of all expected subcommands/ 
Explicitly asserted the behavior of the loadExternalPlugins() method.

Ensured coverage for:

Edge cases where subcommands might be missing from the help output.
Input variants by directly invoking the command and capturing CLI output.
Error handling by confirming correct CLI configuration and plugin loading behavior.
2025-05-19 18:17:30 +02:00
Florian Hussonnois
eede188b38 fix(system): handle storage version in storage interface factory
Related-to: kestra-io/kestra-ee#3302
2025-05-19 18:05:10 +02:00
Anna Geller
f7fbf232cf feat(docker)!: remove non-critical dependencies (#8853) 2025-05-19 17:33:12 +02:00
Nicolas K.
734fcbc45b feat(core): #3427 add OSS tenant migration scripts (#8798)
* feat(core): #3427 add OSS tenant migration scripts

* clean(core): fixes after review

* clean(core): make only one command for oss and EE migration

* fix(core): user synchronisation command and clean PR

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-05-19 16:42:59 +02:00
Miloš Paunović
9cdc3c54a3 fix(core): make sure that complex tasks are properly rendered (#8848)
Closes https://github.com/kestra-io/kestra/issues/8119.
2025-05-19 15:01:20 +02:00
Karuna Tata
a73c45a802 change label color to white (#8850) 2025-05-19 18:28:34 +05:30
Nicolas K.
11a7e68e93 feat(core)!: make tenant id required (#8460)
* feat(core)!: WIP make tenant id required

* feat(core)!: WIP make tenant id required

* test(core)!: WIP fix storage unit test

* build(deps): bump com.google.guava:guava from 33.4.7-jre to 33.4.8-jre

Bumps [com.google.guava:guava](https://github.com/google/guava) from 33.4.7-jre to 33.4.8-jre.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-version: 33.4.8-jre
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump io.micronaut.platform:micronaut-platform

Bumps [io.micronaut.platform:micronaut-platform](https://github.com/micronaut-projects/micronaut-platform) from 4.8.0 to 4.8.2.
- [Release notes](https://github.com/micronaut-projects/micronaut-platform/releases)
- [Commits](https://github.com/micronaut-projects/micronaut-platform/compare/v4.8.0...v4.8.2)

---
updated-dependencies:
- dependency-name: io.micronaut.platform:micronaut-platform
  dependency-version: 4.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump flyingSaucerVersion from 9.11.6 to 9.12.0

Bumps `flyingSaucerVersion` from 9.11.6 to 9.12.0.

Updates `org.xhtmlrenderer:flying-saucer-core` from 9.11.6 to 9.12.0
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.6...v9.12.0)

Updates `org.xhtmlrenderer:flying-saucer-pdf` from 9.11.6 to 9.12.0
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.6...v9.12.0)

---
updated-dependencies:
- dependency-name: org.xhtmlrenderer:flying-saucer-core
  dependency-version: 9.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.xhtmlrenderer:flying-saucer-pdf
  dependency-version: 9.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump software.amazon.awssdk:bom from 2.31.21 to 2.31.25

Bumps software.amazon.awssdk:bom from 2.31.21 to 2.31.25.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-version: 2.31.25
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump com.github.oshi:oshi-core from 6.8.0 to 6.8.1

Bumps [com.github.oshi:oshi-core](https://github.com/oshi/oshi) from 6.8.0 to 6.8.1.
- [Release notes](https://github.com/oshi/oshi/releases)
- [Changelog](https://github.com/oshi/oshi/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oshi/oshi/compare/oshi-parent-6.8.0...oshi-parent-6.8.1)

---
updated-dependencies:
- dependency-name: com.github.oshi:oshi-core
  dependency-version: 6.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.opensearch.client:opensearch-java

Bumps [org.opensearch.client:opensearch-java](https://github.com/opensearch-project/opensearch-java) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/opensearch-project/opensearch-java/releases)
- [Changelog](https://github.com/opensearch-project/opensearch-java/blob/v2.23.0/CHANGELOG.md)
- [Commits](https://github.com/opensearch-project/opensearch-java/compare/v2.22.0...v2.23.0)

---
updated-dependencies:
- dependency-name: org.opensearch.client:opensearch-java
  dependency-version: 2.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump co.elastic.logging:logback-ecs-encoder

Bumps [co.elastic.logging:logback-ecs-encoder](https://github.com/elastic/ecs-logging-java) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/elastic/ecs-logging-java/releases)
- [Commits](https://github.com/elastic/ecs-logging-java/compare/v1.6.0...v1.7.0)

---
updated-dependencies:
- dependency-name: co.elastic.logging:logback-ecs-encoder
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* tests(system): isolate SchedulerScheduleTest tests with tenantId

* Feat/storage outputs (#8361)

* feat(executions): Store outputs inside the internal storage (1/2)

* feat(executions): Store outputs inside the internal storage (2/2)

* feat(test): allow passing tenantId to tests

---------

Co-authored-by: Ludovic DEHON <tchiot.ludo@gmail.com>

* chore(deps): regular dependency update (#8484)

Performing a weekly round of dependency updates in the NPM ecosystem to keep everything up to date.

* fix(ui): full view height for single task logs (#8042)

Co-authored-by: Miloš Paunović <paun992@hotmail.com>

* feat: synchronize task edition with editor (#8433)

* fix(controls): adjust bottom position of contorls in multiPanelsEditor (#8465)

* fix(executions): unqueing execution must remove the execution queued

When an execution is queued in the JDBC backend, a record is inserted inside the execution_queued table, we must remove this record when we unqeue an execution.

Fixes #8448

* chore(core): localize to languages other than english (#8485)

Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>

* tests(webserver): fix flaky test which could query previous tests tasks

* tests(system): debug flaky error of shouldPauseExecutionByQueryRunningFlows

* tests(system): debug flaky error of shouldPauseExecutionByQueryRunningFlows

* tests(system): try with different task id

* tests(system): bump sleep-short sleep time to 10s

* fix(execution)*: decode and hide nested inputs of type SECRET

Fixes #7964

* refactor(core): pass the dynamic concurrency schema to no code editor (#8488)

There was an issue with passing hard-coded concurrency schema to be rendered in No Code editor, which is now amended and we're passing down the previously fetched one

* chore(deps): update gradle version

* doc(basic.md): add link to configuration for kestra property variables (#8490)

* fix(flows): properly check average duration for dashboard graphs (#8457)

There was a problem on flows view with the main chart not showing proper data until user clicks on duration toggle.

Closes https://github.com/kestra-io/kestra/issues/8435.
Closes https://github.com/kestra-io/kestra-ee/issues/3499.

* docs(core-pause): update pauseDuration properties, titles, descriptions (#8495)

* fix(system): restrict the JdbcConcurrencyLimitService to the JDBC runner

* fix(core): fix indexer metric description (#8500)

* Add examples with expression and trimmed values (#6154)

* chore(ui): improvement to drilldown for Default and Custom Charts. (#7885)

* chore(ui): improvement to drilldown for Default and Custom Charts.

* minor tweak

* test: fix the Barchart stories to test drilldown

---------

Co-authored-by: Bart Ledoux <bledoux@kestra.io>

* fix(ui): restart trigger position for backfill column (#8246)

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
Co-authored-by: Bart Ledoux <bledoux@kestra.io>

* feat(plugin): add a way to provide additional type of plugins

Provide a way for plugins to define a new type of plugins.
To do that, a plugin must provide both an abstract base class that extends AdditionalPlugin and a set of concret classes.
Both the abstract base class and the concrete classes mut be inside the same plugin. This is a limitation that we may work on later by providing, for example, an SPI to add base classes to the application classloader.

* fix(ui): save existing flow after making changes (#8378)

Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>

* fix(core): failing DocumentationGeneratorTest.returnDoc()

* chore(core): refactor  component to composition API  structure and with some styling (#8504)

* feat(flows): add validation for use of inputs and outputs with '-' in the name (#8379)

* test(core): fix breaking change in local flow repository (#8517)

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>

* feat(system)!: remove the SQLServer runner

Part-of: https://github.com/kestra-io/kestra-ee/issues/3504

* chore(build): add Postgres stat extension

* feat(plugins): add Langchain4J plugins

* chore(system): add warn log when emit logQueue failed (#8432)

* feat(plugins): add Go Script plugin

* fix(jdbc): add service_id index on service_instance table

* chore(flows): improve the blueprints view within the flow editing panels (#7983)

Changes here consist of removing the tags from blueprint view on Multi Panel flow editor, along with couple of other UI improvements.

Closes https://github.com/kestra-io/kestra/issues/7881.

Co-authored-by: Miloš Paunović <paun992@hotmail.com>

* fix(flows): properly load blueprints in multi panel view (#8524)

While using the new Multi Panel view blueprints were not loading properly due to wrong paramtere being sent to action. now that's sorted.

Closes https://github.com/kestra-io/kestra/issues/8523.

* feat(flows): improve the display of array inputs when running an execution (#7953)

This PR is introducing a change of how the `array` inputs are displayed inside the flow run dialog, to be more user-friendly.

Closes https://github.com/kestra-io/kestra/issues/6947.

---------

Co-authored-by: Miloš Paunović <paun992@hotmail.com>

* fix(system): change default config values for liveness

Change kestra.server.liveness.interval from 5s to 10s
to be less agressive on liveness check. Align
other default liveness configs with kafka implementation.

* fix(ui): amend Absolute date filter's looks (#8501)

* chore(core): localize to languages other than english (#8528)

Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>

* docs(flow-trigger): add note about no Pebble in conditions

* fix(ui): remove parts of filter using backspace (#8105)

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>

* fix(ui): open link in markdown in other tab. (#8258)

* fix(ui): open link in markdown in other tab.

* chore(core): restrict attribute to external links.

Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>

---------

Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>

* fix(system): load OpenTelemetry lib in the app classloader

Without that, as we have it here, plugins may have class loading issue if they use OpenTelemetry internally (like in the Elasticsearch client).

* feat(ui): Add search in internal docs (#8458)

Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>

* fix(triggers): inject default later inside the Scheduler

Today, as they are injected eagerly, they are done even if no trigger exists.
This is counter-performant, and in case the flow is an error will log each seconds.
Doing it a little later will be better.

* build(deps): bump software.amazon.awssdk:bom from 2.31.25 to 2.31.30

Bumps software.amazon.awssdk:bom from 2.31.25 to 2.31.30.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-version: 2.31.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump org.wiremock:wiremock-jetty12 from 3.12.1 to 3.13.0

Bumps [org.wiremock:wiremock-jetty12](https://github.com/wiremock/wiremock) from 3.12.1 to 3.13.0.
- [Release notes](https://github.com/wiremock/wiremock/releases)
- [Commits](https://github.com/wiremock/wiremock/compare/3.12.1...3.13.0)

---
updated-dependencies:
- dependency-name: org.wiremock:wiremock-jetty12
  dependency-version: 3.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* build(deps): bump jacksonVersion from 2.18.3 to 2.19.0

Bumps `jacksonVersion` from 2.18.3 to 2.19.0.

Updates `com.fasterxml.jackson:jackson-bom` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-bom/compare/jackson-bom-2.18.3...jackson-bom-2.19.0)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.18.3...jackson-core-2.19.0)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.module:jackson-module-parameter-names` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-modules-java8/compare/jackson-modules-java8-2.18.3...jackson-modules-java8-2.19.0)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-yaml` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-dataformats-text/compare/jackson-dataformats-text-2.18.3...jackson-dataformats-text-2.19.0)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-smile` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-dataformats-binary/compare/jackson-dataformats-binary-2.18.3...jackson-dataformats-binary-2.19.0)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-cbor` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-dataformats-binary/compare/jackson-dataformats-binary-2.18.3...jackson-dataformats-binary-2.19.0)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-ion` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-dataformat-ion/commits)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-xml` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-dataformat-xml/compare/jackson-dataformat-xml-2.18.3...jackson-dataformat-xml-2.19.0)

Updates `com.fasterxml.jackson.datatype:jackson-datatype-guava` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-datatypes-collections/compare/jackson-datatypes-collections-2.18.3...jackson-datatypes-collections-2.19.0)

Updates `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.18.3 to 2.19.0

Updates `com.fasterxml.jackson.datatype:jackson-datatype-jdk8` from 2.18.3 to 2.19.0

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson:jackson-bom
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.module:jackson-module-parameter-names
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-smile
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-cbor
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-ion
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-xml
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-guava
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jdk8
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(execution): update display names for executions. (#8527)

* fix(core): change incorrectly used search parameter (#8534)

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>

* fix(ui): set isCreating to false when opening flow edit mode (#8549)

* fix(core): safely access section and identifier query params (#8542)

Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>

* fix(ui): update storybook editor tests with provided keys (#8550)

Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>

* chore(core): localize to languages other than english (#8554)

Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>

* fix(triggers): amend broken filtering on triggers tab (#8553)

There was a problem with both namespace and state filters on Triggers page which is now properly sorted.

Closes https://github.com/kestra-io/kestra/issues/8529.

* chore: attempt to fix flaky tests (#8537)

SingleFlowCommandsTest:

The flow Delete -> Create -> Update sequence is weird - delete got HTTP 404.
Reworked to Create -> Update -> Delete sequence.

PurgeLogsTest:

The log repository contained the prepared single entry but also might
contain additional entries from previously logged messages.

* fix(namespaces): namespaceFiles with same name are wrongly overwritten (#8562)

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>

* feat(core): forward execution labels in Flow Trigger

* chore(triggers)*: properly handle switches for triggers disabled from within flow source (#8106)

It was not clear as to which trigger can not be enabled and why. Now, that is much more clear with the proper tooltips and disabling of switch toggling.

Closes https://github.com/kestra-io/kestra/issues/8011.
Closes https://github.com/kestra-io/kestra/issues/5736.

* fix(executions): fix execution failure due to UnsupportedOperationException (#8563)

Fix: #8563

* chore(core): localize to languages other than english (#8568)

Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>

* feat(system): add TestSuite model,taskFixture impl

* fix: redirect to edit when saving new flow (#8560)

Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>

* feat(system)*: decrease defaut JDBC queue poll size

Decreasing it from 100 to 50 didn't show any performance hit but should lower the memory consumption now that we process the queue concurrently in the executor.

## BEFORE - pollSize=100
- 10 tx/s: 150ms
- 25 tx/s: 200ms
- 50 tx/s: 300ms
- 75 tx/s: 5.2s
- 100 tx/s: 15s

## AFTER - pollSize=50
- 10 tx/s: 150ms
- 25 tx/s: 200ms
- 50 tx/s: 300ms
- 75 tx/s: 4.8s
- 100 tx/s: 14s

* feat(flows): Allow to define an onPause task on the Pause task

The onPause task will be executed immediatly when the execution is paused.
Part-of: #3601

* feat(core)!: WIP make tenant id required

* feat(core)!: WIP make tenant id required

* Feat/storage outputs (#8361)

* feat(executions): Store outputs inside the internal storage (1/2)

* feat(executions): Store outputs inside the internal storage (2/2)

* feat(test): allow passing tenantId to tests

---------

Co-authored-by: Ludovic DEHON <tchiot.ludo@gmail.com>

* tests(webserver): fix flaky test which could query previous tests tasks

* feat(executions): Add workerId to each worker task attemps

Closes #7799

* Feat/storage outputs (#8361)

* feat(executions): Store outputs inside the internal storage (1/2)

* feat(executions): Store outputs inside the internal storage (2/2)

* feat(test): allow passing tenantId to tests

---------

Co-authored-by: Ludovic DEHON <tchiot.ludo@gmail.com>

* wip(core): fix unit tests

* test(core): fix unit tests

* test(core): fix unit tests

* test(core): fix unit tests

* feat(core): make tenant id required everywhere

* feat(core): make tenant required in create user command

* feat(core): clean the PR

* feat(core): add tenant id to dashboard controller

* fix(core): tests after merging

* clean(core): fixes after review

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Roman Acevedo <roman.acevedo62@gmail.com>
Co-authored-by: Loïc Mathieu <loikeseke@gmail.com>
Co-authored-by: Ludovic DEHON <tchiot.ludo@gmail.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <actions@github.com>
Co-authored-by: AJ Emerich <aemerich@kestra.io>
Co-authored-by: ben8t <46634684+Ben8t@users.noreply.github.com>
Co-authored-by: Bart Ledoux <bledoux@kestra.io>
Co-authored-by: Satvik Kushwaha <59243339+satvik2131@users.noreply.github.com>
Co-authored-by: Karuna Tata <karuna.tata@devrev.ai>
Co-authored-by: Hashim Khalifa <105060840+hashimzs@users.noreply.github.com>
Co-authored-by: lwyang <1670906161@qq.com>
Co-authored-by: 杨利伟 <yangliwei@xiaomi.com>
Co-authored-by: Florian Hussonnois <fhussonnois@kestra.io>
Co-authored-by: yuri <1969yuri1969@gmail.com>
Co-authored-by: AJ Emerich <aj-emerich@proton.me>
Co-authored-by: rajatsingh23 <48049052+rajatsingh23@users.noreply.github.com>
2025-05-19 14:49:10 +02:00
Karuna Tata
05e348370f ui(fix): change namespace hover to white (#8842)
* change namespace hover to white

* fix
2025-05-19 17:24:16 +05:30
Piyush Bhaskar
84a6d09945 chore(core): fix import (#8845) 2025-05-19 15:58:32 +05:30
Roman Acevedo
b5cc011914 build: influxdb and graphql not available yet 2025-05-19 11:34:03 +02:00
dependabot[bot]
174e3f85b1 build(deps): bump org.sonarqube from 6.1.0.5360 to 6.2.0.5505
Bumps org.sonarqube from 6.1.0.5360 to 6.2.0.5505.

---
updated-dependencies:
- dependency-name: org.sonarqube
  dependency-version: 6.2.0.5505
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 10:49:32 +02:00
dependabot[bot]
ba5890f5d0 build(deps): bump io.micrometer:micrometer-core from 1.14.6 to 1.15.0
Bumps [io.micrometer:micrometer-core](https://github.com/micrometer-metrics/micrometer) from 1.14.6 to 1.15.0.
- [Release notes](https://github.com/micrometer-metrics/micrometer/releases)
- [Commits](https://github.com/micrometer-metrics/micrometer/compare/v1.14.6...v1.15.0)

---
updated-dependencies:
- dependency-name: io.micrometer:micrometer-core
  dependency-version: 1.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 10:47:39 +02:00
Florian Hussonnois
86f0b23cde build: update release-plugin script to set kestra version for plugins
Related-to: kestra-io/kestra-ee#3348
2025-05-19 10:36:50 +02:00
Roman Acevedo
ded5a932e0 chore(tests): add tests icon to tests list view 2025-05-19 10:30:25 +02:00
Roman Acevedo
69037d00c9 feat(tests): improve empty page 2025-05-19 10:30:25 +02:00
Piyush Bhaskar
74b425250c feat(core): change selection to tab and remove display of type and tooltip. (#8805)
* feat(core): replace select with tabs for schema selection.

* feat(core): change selection to tab and remove display of type and tooltip.

* fix: remove obsolete component and add class.

* chore(core): task enclosed under a border.

* fixes enclosed border only for anyOf type

---------

Co-authored-by: Barthélémy Ledoux <bledoux@kestra.io>
2025-05-19 13:39:52 +05:30
Loïc Mathieu
75ff7d86c5 fix(system): use the minPollInterval when the last poll is beyond all interval
As beyond all interval means it's less than the first interval so we should wait for the minimum not the maximum
2025-05-19 10:07:36 +02:00
dependabot[bot]
1186a8db46 build(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.38.2 to 0.38.3.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.38.2...v0.38.3)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-version: 0.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 09:55:31 +02:00
dependabot[bot]
cc95c4a80b build(deps): bump software.amazon.awssdk:bom from 2.31.40 to 2.31.45
Bumps software.amazon.awssdk:bom from 2.31.40 to 2.31.45.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-version: 2.31.45
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 09:55:13 +02:00
dependabot[bot]
232194dcba build(deps): bump com.github.docker-java:docker-java from 3.5.0 to 3.5.1
Bumps [com.github.docker-java:docker-java](https://github.com/docker-java/docker-java) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/docker-java/docker-java/releases)
- [Changelog](https://github.com/docker-java/docker-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/docker-java/docker-java/compare/3.5.0...3.5.1)

---
updated-dependencies:
- dependency-name: com.github.docker-java:docker-java
  dependency-version: 3.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 09:54:56 +02:00
Barthélémy Ledoux
8a36ddd184 fix: update topology when no-code changes (#8822)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-05-19 09:44:44 +02:00
Barthélémy Ledoux
251802570c fix: restore multipanle bottom of panels (#8823) 2025-05-19 09:44:23 +02:00
Piyush Bhaskar
c90590582e feat(flows): Actions for Flow Navbar (#8838) 2025-05-19 12:44:21 +05:30
Miloš Paunović
3d0c63027a chore(core): remove console warning due to deprecated property (#8819) 2025-05-19 08:55:30 +02:00
brian-mulier-p
2043c81fea fix(plugins): add back metrics to plugin docs (#8826)
closes #8792
2025-05-16 19:55:44 +02:00
brian-mulier-p
5a78cdde12 fix(plugins): type and type-defining properties are now readonly (#8820)
closes #8818
2025-05-16 18:25:06 +02:00
Loïc Mathieu
30b39b2d30 feat(execution): add an execution kind
This allow to differentiate between normal executions and test executions
2025-05-16 17:00:27 +02:00
Miloš Paunović
c9a277d4d5 fix(core): properly handle input creation/updating via no code editor (#8787) 2025-05-16 14:30:28 +02:00
Piyush Bhaskar
bc0f24f22a fix(core): fixes change in theme aligned with selection in setttings. (#8815) 2025-05-16 16:37:58 +05:30
gluttonweb
a856654acb Update core/src/main/java/io/kestra/core/schedulers/AbstractScheduler.java
Co-authored-by: Loïc Mathieu <loikeseke@gmail.com>
2025-05-16 11:43:41 +02:00
weibo1
2c53a210d7 feat: Performance optimization for handle() method: Filter out executions with non-null next_execution_date in the query method, start a separate scheduled thread for scanning, reporting metrics and logging 2025-05-16 11:43:41 +02:00
Loïc Mathieu
476f34e986 feat(system): change the way we concurrently process executor queues
Instead of consuming multiple time the queue, which lead to concurrent queries on the `queues` table, process concurrently via an ExecutorService the messages from the queue.
We dind't process a new batch of messages until the existing one is totally process to be sure we process in FIFO the same execution message.

Also, go back to a poll size of 100 to mitiguate the performance hit due to this change.
2025-05-15 17:03:34 +02:00
Loïc Mathieu
a8e826af7d fix(system)*: reset the trigger into the KafkaScheduler instead of the ExecutorMain 2025-05-15 17:02:44 +02:00
Barthélémy Ledoux
2a9a926ea3 chore: the code is now in ui-libs delete the duplicate yaml-utils test (#8799) 2025-05-15 15:32:10 +02:00
Florian Hussonnois
59e631f048 fix(plugins): properly handle POSIX permissions for Docker task runner
Set POSIX file permissions when uploading/download working-dir files
from and to Docker container
2025-05-15 15:19:40 +02:00
Nicolas K.
09d91034ab test(server): fix time range unit test (#8802)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-05-15 15:00:32 +02:00
Loïc Mathieu
3639abb8bb chore(system): improve performance of IdUtils.fromParts()
Surprisingly, this method appear in some CPU and allocation profile as having a high cost, especially on the scheduler.
Switching to using a StringJoiner brings 4x perf improvements in method execution time (great improvement also on allocation but didn't have a measurement).
2025-05-15 14:07:47 +02:00
Loïc Mathieu
2d5d4b7c1d chore(system): mask Caffeine metrics log
As it's not an error and we cannot do anything if we don't want metrics (which cost) but want to hide that log.
2025-05-15 14:05:25 +02:00
Miloš Paunović
171272ac4b refactor(deps): revert monaco-yaml upgrade due to patch on previous version (#8797) 2025-05-15 11:18:28 +02:00
Malaydewangan09
3c5975f4b3 feat(plugins): add InfluxDB, GraphQL plugins 2025-05-15 09:11:40 +02:00
Loïc Mathieu
f6b7dbd653 fix(core): flaky test ExecutionServiceTest.replayEachSeq or replayEachSeq2
One of the two is failing pretty often, using @ExecuteFlow instead of @LoadFlow seems to make them non-flaky.
We can also remove the second ad those are duplicated test but maybe the person that duplicate it has some reason...
2025-05-14 18:24:50 +02:00
Piyush Bhaskar
ab9551aada feat(core): Embed videos directly on EE-feature teasers. (#8790)
* feat(demo): add video support to various demo components and enhance layout

* update video sources

* feat(core): Embed videos directly on EE-feature teasers.
2025-05-14 19:29:08 +05:30
Miloš Paunović
6642df4756 refactor(deps): revert monaco-yaml upgrade due to patch on previous version (#8791) 2025-05-14 15:53:39 +02:00
Roman Acevedo
e3fa5b7df1 fix(tests): assertions with numbers 2025-05-14 15:36:26 +02:00
Roman Acevedo
fca529a908 feat(tests): rename testsuite to tests in UI,API 2025-05-14 15:36:26 +02:00
YannC
dd29e7521f fix(filters): allows to filter using is not for relative date filter (#8659)
link to #8494
2025-05-14 15:29:49 +02:00
Miloš Paunović
e7129b1024 fix(core): check for schema existence on no code input editing (#8775) 2025-05-14 13:59:53 +02:00
Barthélémy Ledoux
dff9fec74c fix: allow retry edition in no-code (#8770)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-05-14 13:34:55 +02:00
Miloš Paunović
c898da3aa3 fix(core): make no code breadcrumb clickable only in legacy mode (#8776) 2025-05-14 13:34:08 +02:00
Miloš Paunović
c517985c80 chore(deps): regular dependency update (#8774)
Performing a weekly round of dependency updates in the NPM ecosystem to keep everything up to date.
2025-05-14 11:18:14 +02:00
Miloš Paunović
b8fb39c67e refactor(core): remove obsolete node script (#8773) 2025-05-14 11:06:31 +02:00
Miloš Paunović
32358c787a chore(plugins): hide deprecated plugins from plugin select options (#8744)
Closes https://github.com/kestra-io/kestra/issues/7205.
2025-05-14 10:39:02 +02:00
Piyush Bhaskar
bbcd377257 feat(core): replace task array option selection design (#8699)
Closes https://github.com/kestra-io/kestra/issues/8694.
2025-05-14 09:14:11 +02:00
Loïc Mathieu
df70618b91 feat(system): use the FlowMetaStore instead of the FlowRepository inside the Executor 2025-05-13 17:15:36 +02:00
Roman Acevedo
58fcd0a18d feat(system): add TestSuite run and assertions
feat(system): add assertions for TestSuites

feat(system): allow isNull and other assertion

feat(system): return a default error message
2025-05-13 16:54:31 +02:00
brian.mulier
79242f9e22 tests(executions): remove flakiness on some tests around sleep 2025-05-13 16:07:10 +02:00
brian.mulier
925169c474 fix(executions): avoid to stop following execution too early leading to UI display shifting from actual state (#8718)
part of kestra-io/kestra-ee#3526
2025-05-13 16:07:10 +02:00
Miloš Paunović
cf206e0b08 chore(core): properly handle topology action clicks while using multi panel editor (#8705)
Closes https://github.com/kestra-io/kestra/issues/7804.
Closes https://github.com/kestra-io/kestra/issues/8275.
2025-05-13 15:56:20 +02:00
Miloš Paunović
6156af2969 fix(core): showing properties of any-of tasks (#8748) 2025-05-13 15:51:01 +02:00
Barthélémy Ledoux
9b12079ca4 fix(namespaces): use the right route param to get namespace files (#8747) 2025-05-13 15:45:00 +02:00
Barthélémy Ledoux
dbb7761104 fix(ui): legacy editor iew no-code does not need creatintask flag (#8742) 2025-05-13 13:39:53 +02:00
Miloš Paunović
e616aa525c chore(flows): remove unnecessary section about keyboard shortcuts from flow basic documentation (#8745)
Closes https://github.com/kestra-io/kestra/issues/7065.
2025-05-13 13:27:00 +02:00
Ludovic DEHON
5e4253ec84 fix(core): some logs can emits null message 2025-05-13 07:34:38 +02:00
github-actions[bot]
2bfdca389f Translations from en.json (#8734)
* chore(core): localize to languages other than english

Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

* Apply suggestions from code review

---------

Co-authored-by: GitHub Action <actions@github.com>
Co-authored-by: Anna Geller <anna.m.geller@gmail.com>
2025-05-12 17:39:49 +02:00
Barthélémy Ledoux
a213a90bbe feat(ui): treat the pluginsdefaults as a section (#8731) 2025-05-12 16:59:12 +02:00
Loïc Mathieu
5c060b5c39 fix(plugins)*: don't cache the condition property inside the If task
Doing that, causes an issue if the If task is used inside a ForEach with a concurrencyLimit > 1.

Fixes #8697
2025-05-12 16:31:44 +02:00
AJ Emerich
ffdebf3f4c docs(docker): update title and description of docker kill grace period property (#8733)
Part of https://github.com/kestra-io/kestra-ee/issues/3625
2025-05-12 14:40:18 +01:00
AJ Emerich
52931769f9 docs(http): update SSL options property with note 2025-05-12 13:46:16 +02:00
dependabot[bot]
625e78375f build(deps): bump com.google.cloud:libraries-bom from 26.59.0 to 26.60.0
Bumps [com.google.cloud:libraries-bom](https://github.com/googleapis/java-cloud-bom) from 26.59.0 to 26.60.0.
- [Release notes](https://github.com/googleapis/java-cloud-bom/releases)
- [Changelog](https://github.com/googleapis/java-cloud-bom/blob/main/release-please-config.json)
- [Commits](https://github.com/googleapis/java-cloud-bom/compare/v26.59.0...v26.60.0)

---
updated-dependencies:
- dependency-name: com.google.cloud:libraries-bom
  dependency-version: 26.60.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 11:56:16 +02:00
dependabot[bot]
c8c649cb75 build(deps): bump net.thisptr:jackson-jq from 1.2.0 to 1.3.0
Bumps [net.thisptr:jackson-jq](https://github.com/eiiches/jackson-jq) from 1.2.0 to 1.3.0.
- [Release notes](https://github.com/eiiches/jackson-jq/releases)
- [Commits](https://github.com/eiiches/jackson-jq/compare/1.2.0...1.3.0)

---
updated-dependencies:
- dependency-name: net.thisptr:jackson-jq
  dependency-version: 1.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 11:28:57 +02:00
dependabot[bot]
2c1ea4e1c7 build(deps): bump software.amazon.awssdk:bom from 2.31.35 to 2.31.40
Bumps software.amazon.awssdk:bom from 2.31.35 to 2.31.40.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-version: 2.31.40
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 11:26:13 +02:00
dependabot[bot]
5e08c7dd50 build(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.38.1 to 0.38.2.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.38.1...v0.38.2)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-version: 0.38.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 11:24:53 +02:00
Loïc Mathieu
13d86c41ea feat(plugins)!: kill the Docker container on kill
And allow configuring a grace period.

Fixes https://github.com/kestra-io/kestra-ee/issues/3625
Part-of: https://github.com/kestra-io/kestra-ee/issues/3526
2025-05-12 11:22:09 +02:00
Loïc Mathieu
a117634348 feat(system): add metrics for Worker Job resubmission
Part-of: https://github.com/kestra-io/kestra/issues/8341
2025-05-12 11:06:16 +02:00
Barthélémy Ledoux
7262ebe616 fix(ui): nocode save /close button is now smaller (#8713) 2025-05-09 22:47:48 +02:00
Florian Hussonnois
2792fa4535 fix(core): allow scalar-to-string concatenation in typed task property
Enable concatenation of arbitrary scalar values (e.g., numbers, booleans)
into a string when setting a typed plugin property expecting a single value:
e.g., the `value` property of the `io.kestra.plugin.core.kv.Set` task.

Fix: kestra-io/kestra-ee#3570
2025-05-09 17:50:52 +02:00
Florian Hussonnois
e6e9803c4a fix(system): avoid catching JVM fatal error on Worker
Re-throw VirtualMachineError when an exception is catched
from a worker task ensuring, for example, that OOM are
correctly propagated.
2025-05-09 17:38:18 +02:00
Barthélémy Ledoux
cf91ca2baf fix(ui): update breadcrumb click behavior in legacy (#8709) 2025-05-09 15:53:31 +02:00
Barthélémy Ledoux
c11af3fa9d fix: make settings menu proper links (#8710)
* fix: make settings menu proper links

* chore(core): remove bg on select's header

---------

Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>
2025-05-09 17:34:59 +05:30
Miloš Paunović
f980a6850b fix(namespaces)*: send proper parameter for namespace on file creation/update (#8706)
There was a problem with sending the non-existing parameter to `vuex` action for creation/update of namespace files. Now that's sorted.

Closes https://github.com/kestra-io/kestra-ee/issues/3567.
2025-05-09 13:02:38 +02:00
Miloš Paunović
bc09676a57 chore(flows): make flow validation a bit less aggressive (#8700)
Flow was being validate with a throttle of `500ms`, which was too aggressive. Now it's increased to `2000ms`.

Closes https://github.com/kestra-io/kestra-ee/issues/3627.
2025-05-08 10:37:07 +02:00
github-actions[bot]
faa6f8fc71 chore(core): localize to languages other than english (#8690)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-07 13:10:33 +02:00
Loïc Mathieu
e0af7e824b fix(core): flaky test RunContextLoggerText.logs()
Wait a little longuer by default for logs to avoid too much flakyness.
2025-05-07 12:39:52 +02:00
Loïc Mathieu
e7b72a5d7f feat(system): send task and trigger usage metrics
Fixes https://github.com/kestra-io/kestra-ee/issues/3532
2025-05-07 12:39:14 +02:00
Loïc Mathieu
fcc1fcb799 chore(system): rename FlowExecutorInterface to FlowMetaStoreInterface
Part-of: https://github.com/kestra-io/kestra-ee/issues/3474
2025-05-07 12:36:52 +02:00
Roman Acevedo
ee444bef30 chore(system): prepare TestSuite ui
advance on CRUD UI for Add unit tests for flows — new tab on the Flows page, runnable from the UI, API or from CI/CD (needs CLI and GitHub Action) kestra-ee#3110

linked to feat(system): add TestSuite list and edit pages kestra-ee#3585
2025-05-07 12:30:46 +02:00
Loïc Mathieu
aecf1dbe07 feat(flows)!: evaluate flow trigger on PAUSED by default
This is a breaking change as existing flow trigger wich didn't filter to any states on conditiosn or preconditions was before triggering executions only on terminal states and will now trigger executions on terminated and paused states.

Fixes https://github.com/kestra-io/kestra-ee/issues/3535
2025-05-07 11:43:15 +02:00
Loïc Mathieu
d13a4e70c7 chore(build): gradle runStandalone 2025-05-07 11:43:03 +02:00
Miloš Paunović
5248e95bd9 chore(deps): regular dependency update (#8687)
Performing a weekly round of dependency updates in the NPM ecosystem to keep everything up to date.
2025-05-07 10:03:17 +02:00
YannC
79a6fbbab1 fix(filters): use correct key for timeRange when using multiple filters (#8657)
close #8498
2025-05-07 09:13:34 +02:00
Dhinakaran T
61dcb852e3 chore(triggers): swap the backfill button on triggers page with the one form flow triggers (#8624)
Closes https://github.com/kestra-io/kestra/issues/8606.

---------

Co-authored-by: dhinakaranst <dinastdhinast@.com>
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-05-07 09:05:38 +02:00
Loïc Mathieu
0c93bc6275 chore(core): retry flaky test triggerPaused() 2025-05-06 17:21:50 +02:00
Loïc Mathieu
1754f81e0b feat(system): add NoopCache
To use where we want to be able to disable caching.
2025-05-06 17:21:50 +02:00
Loïc Mathieu
7117ae60f5 feat(system): purge empty service instances
Purge service instance in EMPTY state after a certain duration, 30 days by default, to avoid never ending groth on the service_instances table.

Fixes #8514
2025-05-06 17:17:46 +02:00
Loïc Mathieu
2b015f8d06 fix(tests): flaky test ExecutionServiceTest.deleteExecutionKeepLogs() 2025-05-06 17:06:03 +02:00
github-actions[bot]
8cccd3725d chore(core): localize to languages other than english (#8656)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-06 15:20:07 +02:00
Dhivya G
fdcea57b18 feat(ui): add version property to Frontend API call (#8650) 2025-05-06 14:55:01 +02:00
yuri
3f1d4f8fe0 feat(core): enable filter refresh interval to be changed in settings (#8522)
This change is introducing a new setting for users to choose - the automatic table refresh interval.

---------

Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-05-06 14:44:09 +02:00
Loïc Mathieu
fe0a5d287b feat(system): add metrics to the executor
Add metrics to the executor for:
- Execution delays
- Execution killed events
- SLA expirations and violations

Part-of: #8341
2025-05-06 14:20:29 +02:00
Loïc Mathieu
5237bcc90c fix(system): subflow validation can fail when typing 2025-05-06 14:17:39 +02:00
AbdurRahman2004
d7a3e24465 chore(core): update keyboard shortcut for triggering the autocompletion (#8618)
Label for triggering autocompletion was `CMD/CTRL + SPACE`, but on `MacOS`, that was triggering a Spotlight search. As the `CTRL + SPACE` works on `MacOS` also, the label is tweaked.

Closes https://github.com/kestra-io/kestra/issues/8617

---

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-05-06 13:53:04 +02:00
Loïc Mathieu
df5419f9ec fix(flows): ForEach concurrency should not be over the number of values
Fixes #8614
2025-05-06 10:23:09 +02:00
AJ Emerich
9b72ce5a18 docs(http): add mention to check for plugins before using HTTP 2025-05-06 09:24:12 +02:00
Barthélémy Ledoux
e287964416 fix(editor): check isFlow when displaying NoCode in legacy editor (#8645) 2025-05-05 17:29:25 +02:00
dependabot[bot]
5759495216 build(deps): bump software.amazon.awssdk:bom from 2.31.30 to 2.31.35
Bumps software.amazon.awssdk:bom from 2.31.30 to 2.31.35.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-version: 2.31.35
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 12:08:43 +02:00
Loïc Mathieu
e89e5988ec feat(jdbc): Improve JDBC queue poll duration selection
- By default, switch from quick polling to long polling after 30s of inacitvity on a queue
- By default, configure long polling interval to 500ms
- Use steps to goes from quick polling to long polling (5 steps automatically computed)
2025-05-05 12:07:54 +02:00
github-actions[bot]
51c522976e chore(core): localize to languages other than english (#8641)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-05 11:54:18 +02:00
Miloš Paunović
722d94ba4b fix(core): introduce back the proper translation key (#8639) 2025-05-05 11:51:15 +02:00
Miloš Paunović
e47816c941 fix(core): amend the problem with translation key (#3577) (#8638) 2025-05-05 11:49:18 +02:00
Barthélémy Ledoux
3fdd976b5c fix(ui): conditionally render icon based on save mode (#8636) 2025-05-05 11:26:43 +02:00
Anna Geller
2f8a5903f3 fix(naming): name action file in the same way as name to avoid double display and confusion (#8634) 2025-05-05 11:10:04 +02:00
github-actions[bot]
f3250c0dc9 chore(core): localize to languages other than english (#8635)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-05-05 11:09:53 +02:00
Barthélémy Ledoux
2c58e97ec3 feat: allow multiple nocode (#8532) 2025-05-05 10:56:56 +02:00
dependabot[bot]
1bd89843ed build(deps): bump org.testcontainers:testcontainers
Bumps [org.testcontainers:testcontainers](https://github.com/testcontainers/testcontainers-java) from 1.20.6 to 1.21.0.
- [Release notes](https://github.com/testcontainers/testcontainers-java/releases)
- [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.20.6...1.21.0)

---
updated-dependencies:
- dependency-name: org.testcontainers:testcontainers
  dependency-version: 1.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 09:37:22 +02:00
dependabot[bot]
c565b3b947 build(deps): bump org.jsoup:jsoup from 1.19.1 to 1.20.1
Bumps [org.jsoup:jsoup](https://github.com/jhy/jsoup) from 1.19.1 to 1.20.1.
- [Release notes](https://github.com/jhy/jsoup/releases)
- [Changelog](https://github.com/jhy/jsoup/blob/master/CHANGES.md)
- [Commits](https://github.com/jhy/jsoup/compare/jsoup-1.19.1...jsoup-1.20.1)

---
updated-dependencies:
- dependency-name: org.jsoup:jsoup
  dependency-version: 1.20.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 09:36:59 +02:00
dependabot[bot]
5ce8763ccf build(deps): bump org.jooq:jooq from 3.20.3 to 3.20.4
Bumps org.jooq:jooq from 3.20.3 to 3.20.4.

---
updated-dependencies:
- dependency-name: org.jooq:jooq
  dependency-version: 3.20.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 09:36:42 +02:00
dependabot[bot]
d52974de4b build(deps): bump com.azure:azure-sdk-bom from 1.2.33 to 1.2.34
Bumps [com.azure:azure-sdk-bom](https://github.com/azure/azure-sdk-for-java) from 1.2.33 to 1.2.34.
- [Release notes](https://github.com/azure/azure-sdk-for-java/releases)
- [Commits](https://github.com/azure/azure-sdk-for-java/compare/azure-sdk-bom_1.2.33...azure-sdk-bom_1.2.34)

---
updated-dependencies:
- dependency-name: com.azure:azure-sdk-bom
  dependency-version: 1.2.34
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 09:36:23 +02:00
dependabot[bot]
c9296b657a build(deps): bump com.microsoft.playwright:playwright
Bumps [com.microsoft.playwright:playwright](https://github.com/microsoft/playwright-java) from 1.51.0 to 1.52.0.
- [Release notes](https://github.com/microsoft/playwright-java/releases)
- [Commits](https://github.com/microsoft/playwright-java/compare/v1.51.0...v1.52.0)

---
updated-dependencies:
- dependency-name: com.microsoft.playwright:playwright
  dependency-version: 1.52.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 09:35:31 +02:00
dependabot[bot]
6f24e31c32 build(deps): bump opensearchRestVersion from 2.19.1 to 2.19.2
Bumps `opensearchRestVersion` from 2.19.1 to 2.19.2.

Updates `org.opensearch.client:opensearch-rest-client` from 2.19.1 to 2.19.2
- [Release notes](https://github.com/opensearch-project/OpenSearch/releases)
- [Changelog](https://github.com/opensearch-project/OpenSearch/blob/main/CHANGELOG.md)
- [Commits](https://github.com/opensearch-project/OpenSearch/compare/2.19.1...2.19.2)

Updates `org.opensearch.client:opensearch-rest-high-level-client` from 2.19.1 to 2.19.2
- [Release notes](https://github.com/opensearch-project/OpenSearch/releases)
- [Changelog](https://github.com/opensearch-project/OpenSearch/blob/main/CHANGELOG.md)
- [Commits](https://github.com/opensearch-project/OpenSearch/compare/2.19.1...2.19.2)

---
updated-dependencies:
- dependency-name: org.opensearch.client:opensearch-rest-client
  dependency-version: 2.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.opensearch.client:opensearch-rest-high-level-client
  dependency-version: 2.19.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 09:35:12 +02:00
dependabot[bot]
90180cc069 build(deps): bump org.fusesource.jansi:jansi from 2.4.1 to 2.4.2
Bumps [org.fusesource.jansi:jansi](https://github.com/fusesource/jansi) from 2.4.1 to 2.4.2.
- [Release notes](https://github.com/fusesource/jansi/releases)
- [Changelog](https://github.com/fusesource/jansi/blob/master/changelog.md)
- [Commits](https://github.com/fusesource/jansi/compare/jansi-2.4.1...jansi-2.4.2)

---
updated-dependencies:
- dependency-name: org.fusesource.jansi:jansi
  dependency-version: 2.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 09:34:48 +02:00
Florian Hussonnois
01110c51f6 fix(flows): fix regression on flow validation (#8600)
Fix regression on flow validation when injecting
plugin default values

Fix: #8600
2025-05-02 09:09:02 +02:00
Loïc Mathieu
02723aa3d9 fix(dashboards)*: SQL errors on logs data chart
- PostgreSQL needs a cast from enum to text.
- Missing quotes on the WHERE clause.

Fixes #8128
2025-04-30 18:09:45 +02:00
github-actions[bot]
3d4ebf5f3b chore(core): localize to languages other than english (#8611)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-04-30 15:44:14 +02:00
Piyush Bhaskar
266c671095 feat(iam): introduce user menu into left sidebar (#8602)
This PR is introducing the new user menu with actions inside the left sidebar.

Relates to https://github.com/kestra-io/kestra-ee/issues/2105.
Relates to https://github.com/kestra-io/kestra-ee/issues/2964.

---------

Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-04-30 15:35:20 +02:00
Miloš Paunović
aae1315f74 fix(executions): amend storybook tests for inputs form (#8608) 2025-04-30 14:59:10 +02:00
brian-mulier-p
a9f0cae83f fix(core): Doc search is more relevant (#8601)
closes #6329
2025-04-30 14:35:37 +02:00
Satvik Kushwaha
98cfd32676 feat(executions): use schedule set input values for backfills (#7913)
Made changes to backfilling executions input to fill the default input value by the input value set within a schedule.

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-04-30 13:27:31 +02:00
Miloš Paunović
a9a2765521 chore(deps): regular dependency update (#8599)
Performing a weekly round of dependency updates in the NPM ecosystem to keep everything up to date.
2025-04-30 12:21:05 +02:00
github-actions[bot]
c0ba1831bf chore(core): localize to languages other than english (#8576)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-04-29 21:52:47 +02:00
Florian Hussonnois
a26fabe083 feat(system): add uv to kestra docker image
Use uv to install packages. UV is now required
to manage pythons dependencies for the plugin-script python.

Fix: kestra-io/kestra-ee#3527
2025-04-29 17:27:59 +02:00
Florian Hussonnois
bf41fb4613 fix(core): remove tutorial flows from anonymous report
Fix: kestra-io/kestra-ee#3387
2025-04-29 17:27:28 +02:00
Loïc Mathieu
097336ef28 feat(executions): Add workerId to each worker task attemps
Closes #7799
2025-04-29 16:13:23 +02:00
Loïc Mathieu
7467f1f7fb feat(flows): Allow to define an onPause task on the Pause task
The onPause task will be executed immediatly when the execution is paused.
Part-of: #3601
2025-04-29 15:48:59 +02:00
Loïc Mathieu
4e602021a8 feat(system)*: decrease defaut JDBC queue poll size
Decreasing it from 100 to 50 didn't show any performance hit but should lower the memory consumption now that we process the queue concurrently in the executor.

## BEFORE - pollSize=100
- 10 tx/s: 150ms
- 25 tx/s: 200ms
- 50 tx/s: 300ms
- 75 tx/s: 5.2s
- 100 tx/s: 15s

## AFTER - pollSize=50
- 10 tx/s: 150ms
- 25 tx/s: 200ms
- 50 tx/s: 300ms
- 75 tx/s: 4.8s
- 100 tx/s: 14s
2025-04-29 15:11:24 +02:00
Barthélémy Ledoux
1c23e31b6b fix: redirect to edit when saving new flow (#8560)
Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>
2025-04-29 14:14:36 +02:00
Loïc Mathieu
9beb86bfb5 feat(system): add TestSuite model,taskFixture impl 2025-04-29 11:03:57 +02:00
github-actions[bot]
e0723a94b5 chore(core): localize to languages other than english (#8568)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-04-29 10:37:01 +02:00
Florian Hussonnois
475a961cec fix(executions): fix execution failure due to UnsupportedOperationException (#8563)
Fix: #8563
2025-04-29 10:34:48 +02:00
Piyush Bhaskar
c5b7c5d483 chore(triggers)*: properly handle switches for triggers disabled from within flow source (#8106)
It was not clear as to which trigger can not be enabled and why. Now, that is much more clear with the proper tooltips and disabling of switch toggling.

Closes https://github.com/kestra-io/kestra/issues/8011.
Closes https://github.com/kestra-io/kestra/issues/5736.
2025-04-29 10:31:55 +02:00
Roman Acevedo
2cf6c54b89 feat(core): forward execution labels in Flow Trigger 2025-04-28 16:55:10 +02:00
Nicolas K.
13d02ee396 fix(namespaces): namespaceFiles with same name are wrongly overwritten (#8562)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-04-28 16:14:31 +02:00
yuri
21dc831f25 chore: attempt to fix flaky tests (#8537)
SingleFlowCommandsTest:

The flow Delete -> Create -> Update sequence is weird - delete got HTTP 404.
Reworked to Create -> Update -> Delete sequence.

PurgeLogsTest:

The log repository contained the prepared single entry but also might
contain additional entries from previously logged messages.
2025-04-28 15:07:28 +02:00
Miloš Paunović
1c9f9af82a fix(triggers): amend broken filtering on triggers tab (#8553)
There was a problem with both namespace and state filters on Triggers page which is now properly sorted.

Closes https://github.com/kestra-io/kestra/issues/8529.
2025-04-28 12:07:50 +02:00
github-actions[bot]
dc5acbc5bb chore(core): localize to languages other than english (#8554)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-04-28 12:00:37 +02:00
Barthélémy Ledoux
3e23456fb7 fix(ui): update storybook editor tests with provided keys (#8550)
Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>
2025-04-28 11:43:55 +02:00
Piyush Bhaskar
2943e10e7e fix(core): safely access section and identifier query params (#8542)
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-04-28 14:06:39 +05:30
Barthélémy Ledoux
0ec8bd45c8 fix(ui): set isCreating to false when opening flow edit mode (#8549) 2025-04-28 10:34:36 +02:00
Nicolas K.
10e882a54a fix(core): change incorrectly used search parameter (#8534)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-04-28 10:32:57 +02:00
Piyush Bhaskar
4bc7f72fcd chore(execution): update display names for executions. (#8527) 2025-04-28 14:00:21 +05:30
dependabot[bot]
ce6770c574 build(deps): bump jacksonVersion from 2.18.3 to 2.19.0
Bumps `jacksonVersion` from 2.18.3 to 2.19.0.

Updates `com.fasterxml.jackson:jackson-bom` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-bom/compare/jackson-bom-2.18.3...jackson-bom-2.19.0)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.18.3...jackson-core-2.19.0)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.module:jackson-module-parameter-names` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-modules-java8/compare/jackson-modules-java8-2.18.3...jackson-modules-java8-2.19.0)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-yaml` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-dataformats-text/compare/jackson-dataformats-text-2.18.3...jackson-dataformats-text-2.19.0)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-smile` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-dataformats-binary/compare/jackson-dataformats-binary-2.18.3...jackson-dataformats-binary-2.19.0)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-cbor` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-dataformats-binary/compare/jackson-dataformats-binary-2.18.3...jackson-dataformats-binary-2.19.0)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-ion` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-dataformat-ion/commits)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-xml` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-dataformat-xml/compare/jackson-dataformat-xml-2.18.3...jackson-dataformat-xml-2.19.0)

Updates `com.fasterxml.jackson.datatype:jackson-datatype-guava` from 2.18.3 to 2.19.0
- [Commits](https://github.com/FasterXML/jackson-datatypes-collections/compare/jackson-datatypes-collections-2.18.3...jackson-datatypes-collections-2.19.0)

Updates `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.18.3 to 2.19.0

Updates `com.fasterxml.jackson.datatype:jackson-datatype-jdk8` from 2.18.3 to 2.19.0

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson:jackson-bom
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.module:jackson-module-parameter-names
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-smile
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-cbor
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-ion
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-xml
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-guava
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jdk8
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 09:42:04 +02:00
dependabot[bot]
04f32abb77 build(deps): bump org.wiremock:wiremock-jetty12 from 3.12.1 to 3.13.0
Bumps [org.wiremock:wiremock-jetty12](https://github.com/wiremock/wiremock) from 3.12.1 to 3.13.0.
- [Release notes](https://github.com/wiremock/wiremock/releases)
- [Commits](https://github.com/wiremock/wiremock/compare/3.12.1...3.13.0)

---
updated-dependencies:
- dependency-name: org.wiremock:wiremock-jetty12
  dependency-version: 3.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 09:41:33 +02:00
dependabot[bot]
d9ab998a03 build(deps): bump software.amazon.awssdk:bom from 2.31.25 to 2.31.30
Bumps software.amazon.awssdk:bom from 2.31.25 to 2.31.30.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-version: 2.31.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 09:41:09 +02:00
Loïc Mathieu
e19056cad3 fix(triggers): inject default later inside the Scheduler
Today, as they are injected eagerly, they are done even if no trigger exists.
This is counter-performant, and in case the flow is an error will log each seconds.
Doing it a little later will be better.
2025-04-28 09:40:33 +02:00
Karuna Tata
897abdd89d feat(ui): Add search in internal docs (#8458)
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-04-28 09:37:25 +02:00
Loïc Mathieu
2571f73811 fix(system): load OpenTelemetry lib in the app classloader
Without that, as we have it here, plugins may have class loading issue if they use OpenTelemetry internally (like in the Elasticsearch client).
2025-04-25 21:26:32 +02:00
Piyush Bhaskar
00cf7863e1 fix(ui): open link in markdown in other tab. (#8258)
* fix(ui): open link in markdown in other tab.

* chore(core): restrict attribute to external links.

Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>

---------

Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-04-25 19:09:22 +05:30
rajatsingh23
3c68ff5a2d fix(ui): remove parts of filter using backspace (#8105)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-04-25 14:08:38 +02:00
AJ Emerich
10ce92c0f5 docs(flow-trigger): add note about no Pebble in conditions 2025-04-25 11:54:04 +02:00
github-actions[bot]
6baeba8f63 chore(core): localize to languages other than english (#8528)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-04-25 11:19:18 +02:00
yuri
efe836874f fix(ui): amend Absolute date filter's looks (#8501) 2025-04-25 14:24:00 +05:30
Florian Hussonnois
8746f2bd15 fix(system): change default config values for liveness
Change kestra.server.liveness.interval from 5s to 10s
to be less agressive on liveness check. Align
other default liveness configs with kafka implementation.
2025-04-25 10:28:30 +02:00
Piyush Bhaskar
34a7316d3f feat(flows): improve the display of array inputs when running an execution (#7953)
This PR is introducing a change of how the `array` inputs are displayed inside the flow run dialog, to be more user-friendly.

Closes https://github.com/kestra-io/kestra/issues/6947.

---------

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-04-25 09:40:24 +02:00
Miloš Paunović
fc452aff94 fix(flows): properly load blueprints in multi panel view (#8524)
While using the new Multi Panel view blueprints were not loading properly due to wrong paramtere being sent to action. now that's sorted.

Closes https://github.com/kestra-io/kestra/issues/8523.
2025-04-25 13:08:45 +05:30
Piyush Bhaskar
77da3fd16c chore(flows): improve the blueprints view within the flow editing panels (#7983)
Changes here consist of removing the tags from blueprint view on Multi Panel flow editor, along with couple of other UI improvements.

Closes https://github.com/kestra-io/kestra/issues/7881.

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-04-25 09:10:29 +02:00
杨利伟
03f9aa8e85 fix(jdbc): add service_id index on service_instance table 2025-04-24 18:14:15 +02:00
Loïc Mathieu
3f9f60dd26 feat(plugins): add Go Script plugin 2025-04-24 17:25:16 +02:00
lwyang
8b5f333c02 chore(system): add warn log when emit logQueue failed (#8432) 2025-04-24 16:02:12 +02:00
Loïc Mathieu
d27626fbd1 feat(plugins): add Langchain4J plugins 2025-04-24 15:42:15 +02:00
Loïc Mathieu
08f5ad2710 chore(build): add Postgres stat extension 2025-04-24 14:51:34 +02:00
Loïc Mathieu
56fa97b2e4 feat(system)!: remove the SQLServer runner
Part-of: https://github.com/kestra-io/kestra-ee/issues/3504
2025-04-24 14:50:57 +02:00
Nicolas K.
14210f1661 test(core): fix breaking change in local flow repository (#8517)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-04-24 14:34:10 +02:00
Hashim Khalifa
1fb6958e9e feat(flows): add validation for use of inputs and outputs with '-' in the name (#8379) 2025-04-24 14:31:53 +02:00
Piyush Bhaskar
5e7bc96322 chore(core): refactor component to composition API structure and with some styling (#8504) 2025-04-24 14:29:18 +05:30
Loïc Mathieu
729cf56c54 fix(core): failing DocumentationGeneratorTest.returnDoc() 2025-04-24 10:36:38 +02:00
Karuna Tata
a21cff4ba0 fix(ui): save existing flow after making changes (#8378)
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-04-24 10:31:32 +02:00
Loïc Mathieu
7e590dd603 feat(plugin): add a way to provide additional type of plugins
Provide a way for plugins to define a new type of plugins.
To do that, a plugin must provide both an abstract base class that extends AdditionalPlugin and a set of concret classes.
Both the abstract base class and the concrete classes mut be inside the same plugin. This is a limitation that we may work on later by providing, for example, an SPI to add base classes to the application classloader.
2025-04-24 10:04:51 +02:00
Satvik Kushwaha
ad9f69334c fix(ui): restart trigger position for backfill column (#8246)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
Co-authored-by: Bart Ledoux <bledoux@kestra.io>
2025-04-24 09:43:59 +02:00
Piyush Bhaskar
c7b448a9f0 chore(ui): improvement to drilldown for Default and Custom Charts. (#7885)
* chore(ui): improvement to drilldown for Default and Custom Charts.

* minor tweak

* test: fix the Barchart stories to test drilldown

---------

Co-authored-by: Bart Ledoux <bledoux@kestra.io>
2025-04-24 10:42:06 +05:30
ben8t
b1a48c17f2 Add examples with expression and trimmed values (#6154) 2025-04-23 19:57:00 +02:00
AJ Emerich
7957b9db12 fix(core): fix indexer metric description (#8500) 2025-04-23 16:48:02 +01:00
Loïc Mathieu
d58898ff34 fix(system): restrict the JdbcConcurrencyLimitService to the JDBC runner 2025-04-23 16:29:10 +02:00
AJ Emerich
1ff2e0355d docs(core-pause): update pauseDuration properties, titles, descriptions (#8495) 2025-04-23 14:34:02 +01:00
Piyush Bhaskar
9cb7cd6453 fix(flows): properly check average duration for dashboard graphs (#8457)
There was a problem on flows view with the main chart not showing proper data until user clicks on duration toggle.

Closes https://github.com/kestra-io/kestra/issues/8435.
Closes https://github.com/kestra-io/kestra-ee/issues/3499.
2025-04-23 14:23:40 +02:00
AJ Emerich
728a6a3af8 doc(basic.md): add link to configuration for kestra property variables (#8490) 2025-04-23 12:04:12 +01:00
Ludovic DEHON
ebd957f00d chore(deps): update gradle version 2025-04-23 12:52:49 +02:00
Miloš Paunović
f24734f5f2 refactor(core): pass the dynamic concurrency schema to no code editor (#8488)
There was an issue with passing hard-coded concurrency schema to be rendered in No Code editor, which is now amended and we're passing down the previously fetched one
2025-04-23 11:54:22 +02:00
Loïc Mathieu
d14ff78fd8 fix(execution)*: decode and hide nested inputs of type SECRET
Fixes #7964
2025-04-23 11:45:57 +02:00
Roman Acevedo
1506d68132 tests(system): bump sleep-short sleep time to 10s 2025-04-23 11:39:50 +02:00
Roman Acevedo
bf4310edc3 tests(system): try with different task id 2025-04-23 11:39:50 +02:00
Roman Acevedo
b4106af12b tests(system): debug flaky error of shouldPauseExecutionByQueryRunningFlows 2025-04-23 11:39:50 +02:00
Roman Acevedo
1974fd15ec tests(system): debug flaky error of shouldPauseExecutionByQueryRunningFlows 2025-04-23 11:39:50 +02:00
Roman Acevedo
ce3eea76f0 tests(webserver): fix flaky test which could query previous tests tasks 2025-04-23 11:39:50 +02:00
github-actions[bot]
636f0f61d7 chore(core): localize to languages other than english (#8485)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-04-23 11:18:49 +02:00
Loïc Mathieu
3105ddc40b fix(executions): unqueing execution must remove the execution queued
When an execution is queued in the JDBC backend, a record is inserted inside the execution_queued table, we must remove this record when we unqeue an execution.

Fixes #8448
2025-04-23 11:13:31 +02:00
Piyush Bhaskar
b779aa1aed fix(controls): adjust bottom position of contorls in multiPanelsEditor (#8465) 2025-04-23 13:26:36 +05:30
Barthélémy Ledoux
fa5a391103 feat: synchronize task edition with editor (#8433) 2025-04-23 09:43:47 +02:00
Piyush Bhaskar
b947c23402 fix(ui): full view height for single task logs (#8042)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-04-23 09:43:19 +02:00
Miloš Paunović
54b8ff9d0c chore(deps): regular dependency update (#8484)
Performing a weekly round of dependency updates in the NPM ecosystem to keep everything up to date.
2025-04-23 09:38:02 +02:00
Loïc Mathieu
724058a06f Feat/storage outputs (#8361)
* feat(executions): Store outputs inside the internal storage (1/2)

* feat(executions): Store outputs inside the internal storage (2/2)

* feat(test): allow passing tenantId to tests

---------

Co-authored-by: Ludovic DEHON <tchiot.ludo@gmail.com>
2025-04-22 15:46:57 +02:00
Roman Acevedo
d454d133f5 tests(system): isolate SchedulerScheduleTest tests with tenantId 2025-04-22 15:41:54 +02:00
dependabot[bot]
a06421dd84 build(deps): bump co.elastic.logging:logback-ecs-encoder
Bumps [co.elastic.logging:logback-ecs-encoder](https://github.com/elastic/ecs-logging-java) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/elastic/ecs-logging-java/releases)
- [Commits](https://github.com/elastic/ecs-logging-java/compare/v1.6.0...v1.7.0)

---
updated-dependencies:
- dependency-name: co.elastic.logging:logback-ecs-encoder
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 11:23:18 +02:00
dependabot[bot]
de6fcab785 build(deps): bump org.opensearch.client:opensearch-java
Bumps [org.opensearch.client:opensearch-java](https://github.com/opensearch-project/opensearch-java) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/opensearch-project/opensearch-java/releases)
- [Changelog](https://github.com/opensearch-project/opensearch-java/blob/v2.23.0/CHANGELOG.md)
- [Commits](https://github.com/opensearch-project/opensearch-java/compare/v2.22.0...v2.23.0)

---
updated-dependencies:
- dependency-name: org.opensearch.client:opensearch-java
  dependency-version: 2.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 11:22:01 +02:00
dependabot[bot]
b2f68a7b97 build(deps): bump com.github.oshi:oshi-core from 6.8.0 to 6.8.1
Bumps [com.github.oshi:oshi-core](https://github.com/oshi/oshi) from 6.8.0 to 6.8.1.
- [Release notes](https://github.com/oshi/oshi/releases)
- [Changelog](https://github.com/oshi/oshi/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oshi/oshi/compare/oshi-parent-6.8.0...oshi-parent-6.8.1)

---
updated-dependencies:
- dependency-name: com.github.oshi:oshi-core
  dependency-version: 6.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 11:10:17 +02:00
dependabot[bot]
01cb30f933 build(deps): bump software.amazon.awssdk:bom from 2.31.21 to 2.31.25
Bumps software.amazon.awssdk:bom from 2.31.21 to 2.31.25.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-version: 2.31.25
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 11:09:06 +02:00
dependabot[bot]
d2cda63cfa build(deps): bump flyingSaucerVersion from 9.11.6 to 9.12.0
Bumps `flyingSaucerVersion` from 9.11.6 to 9.12.0.

Updates `org.xhtmlrenderer:flying-saucer-core` from 9.11.6 to 9.12.0
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.6...v9.12.0)

Updates `org.xhtmlrenderer:flying-saucer-pdf` from 9.11.6 to 9.12.0
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.6...v9.12.0)

---
updated-dependencies:
- dependency-name: org.xhtmlrenderer:flying-saucer-core
  dependency-version: 9.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.xhtmlrenderer:flying-saucer-pdf
  dependency-version: 9.12.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 11:08:11 +02:00
dependabot[bot]
f89187db6a build(deps): bump io.micronaut.platform:micronaut-platform
Bumps [io.micronaut.platform:micronaut-platform](https://github.com/micronaut-projects/micronaut-platform) from 4.8.0 to 4.8.2.
- [Release notes](https://github.com/micronaut-projects/micronaut-platform/releases)
- [Commits](https://github.com/micronaut-projects/micronaut-platform/compare/v4.8.0...v4.8.2)

---
updated-dependencies:
- dependency-name: io.micronaut.platform:micronaut-platform
  dependency-version: 4.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 11:07:01 +02:00
dependabot[bot]
8e4fe892e9 build(deps): bump com.google.guava:guava from 33.4.7-jre to 33.4.8-jre
Bumps [com.google.guava:guava](https://github.com/google/guava) from 33.4.7-jre to 33.4.8-jre.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-version: 33.4.8-jre
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 11:04:45 +02:00
Barthélémy Ledoux
eb13dce0ff fix(ui): use creating=true instead of identifier=new (#8443) 2025-04-22 09:46:02 +02:00
Florian Hussonnois
a14518b810 refactor(plugin): add dedicated service to parse tasks log line
Add new TaskLogLineMatcher class for matching and
 capturing structured data from task execution logs.

Related-to: kestra-io/kestra-ee#3441
2025-04-22 09:37:32 +02:00
Piyush Bhaskar
c64f15a035 fix(container): update tab container classes for better layout handling. (#8456) 2025-04-22 12:19:29 +05:30
Piyush Bhaskar
f79541616e chore(ui): Improve the display of Resume/Kill executions (#8227)
* chore(ui): Improve the display of Resume/Kill executions

* minor tweak

---------

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-04-21 11:22:35 +05:30
Frank Tianyu Zeng
cb6a6bfd91 fix(revision): restore side-by-side view in revision history after flow edit (#8439)
Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>
2025-04-21 11:12:36 +05:30
Ludovic DEHON
b2ae2ff6f7 feat(build): fix some sonar alert 2025-04-20 22:23:41 +02:00
Ludovic DEHON
a7836ca673 feat(build): add sonar 2025-04-19 00:49:09 +02:00
YannC
7bc60a1056 fix(ui): add new property in filters (#8444) 2025-04-18 21:27:55 +02:00
YannC
09943a1e7b fix(webserver): set ids parameters as body instead of queryvalue (#8438) 2025-04-18 11:58:11 +02:00
Sayed Murtadha Ahmed
8b6af7a808 chore(core)*: make sure that notifications with large message text are closeable (#8431)
There was a problem when an error message is too big, the toaster could not be closed. This change is amending that issue.

Closes https://github.com/kestra-io/kestra/issues/8352.
2025-04-17 11:44:17 +02:00
YannC.
e74e7ff8e5 fix(ui): correct path for namespace files on namespace page
close #8140
2025-04-17 10:34:46 +02:00
Anna Geller
9adf3a5444 fix(docs): improve PublishMetrics example and basic.md KV doc (#8427) 2025-04-16 20:02:36 +02:00
Karuna Tata
c069b2fbb3 chore(core)*: deboucing task validation from no code editor (#8418)
There was an issue when a user edited a task from the No Code editor—the validation endpoint was being called excessively, instead of waiting for the user to finish typing. This has now been resolved with this PR.

Closes https://github.com/kestra-io/kestra/issues/7073.

Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-04-16 12:31:03 +02:00
YannC
534b7f4ec7 refactor(core): changes to improve openapi spec
* better method name
* correct annotation to descript body
2025-04-16 12:26:32 +02:00
Miloš Paunović
7b1ee4a9e0 refactor(core): prevent inheriting unused attributes in components (#8419)
Remove default inheriting of attributes in Vue components, which are not used. This pollutes the console with warnings and it's not necessary, so this PR is solving the problem.
2025-04-16 12:08:45 +02:00
Miloš Paunović
38a9ebcbef refactor(core): replace deprecated vue flow options parameter (#8417)
Remove usage of the deprecated options object parameter with the id one, as per the latest API guidelines. This change ensures compatibility with future versions and removes the related console warning.

Related to #7804.
2025-04-16 10:29:47 +02:00
weibo1
eea47c6e40 feat(system): add duration metrics for handle() method 2025-04-16 09:05:00 +02:00
weibo1
e1c4ae22f2 feat(system): add index to commonly queried fields in the WHERE conditions of the triggers table 2025-04-16 09:05:00 +02:00
Miloš Paunović
b7861a139e chore(deps): regular dependency update (#8415)
Performing a weekly round of dependency updates in the NPM ecosystem to keep everything up to date.
2025-04-16 08:46:32 +02:00
Miloš Paunović
954d64ecaa fix(core)*: allow horizontal scrolling of tabs in multi panel view (#8414)
If there are multiple tabs opened in a single panel of the new multi panel view,  there was no ability to scroll and see the overflowing ones. With changes in this PR, users can now do just that.

Closes https://github.com/kestra-io/kestra/issues/8270.
2025-04-16 12:05:37 +05:30
Karuna Tata
f61ba36023 feat(core)*: allow moving of entire panels (#8377)
Changes in this pull request now allow users to move entire panels where ever they want, plus, there are `Move right` and `Move left` options in the context menu.

Closes https://github.com/kestra-io/kestra/issues/8272.

Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-04-16 07:47:09 +02:00
Loïc Mathieu
fbd989ccab feat(core): allow to specify Pause task resume behavior (#8242)
When a pause task is resumed either because it wait until the end of it's duration or is resumed manually, it can now use a behavior to describe what to do next: resume, warn, fail, or cancel the execution.

Fixes #8242
2025-04-15 17:39:53 +02:00
yuri
12affd4b4b fix(build): amend Node Gradle to reflect changes (#7970) 2025-04-15 15:15:34 +02:00
Satvik Kushwaha
b75730a0ca chore(dashboards)*: amend hover color of table top buttons on dashboard (#8388)
Tables on main dashboard which have the `See all` buttons needed UI tweaking of color on hover, which is handled in this pull request.

Closes https://github.com/kestra-io/kestra/issues/8376.

Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-04-15 14:14:49 +02:00
Barthélémy Ledoux
4170615765 fix(ui): navigation between flow editor and tabs - blank screen (#8392) 2025-04-15 11:41:18 +02:00
Barthélémy Ledoux
5cfb6aa1f5 test(ui): ignore unhandled canceled promises in storybook (#8394) 2025-04-15 11:39:39 +02:00
AJ Emerich
41d660e18e docs(core): update plugin titles and descriptions (#8390) 2025-04-15 11:22:47 +02:00
yuri
8af4f1928a chore(webserver): amend copy&pasted description (#8346) 2025-04-15 11:12:09 +02:00
github-actions[bot]
1488caccc7 chore(core): localize to languages other than english (#8391)
Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference.

Co-authored-by: GitHub Action <actions@github.com>
2025-04-15 11:09:33 +02:00
Karuna Tata
85fc48963f feat(core): add a confirmation dialog before leaving the settings page (#8365)
If the user changed something on the `Settings` page and then just navigated to another page, all new changes would all be lost. This PR is adding a confirmation dialog before route leave, if there are any changes made, to confirm either saving or discarding them.

Closes https://github.com/kestra-io/kestra/issues/8364.

Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-04-15 10:31:49 +02:00
Barthélémy Ledoux
b706dec9d2 test(core): make storybook tests pass with less warnings (#8382)
Lots of warnings that we can see in the UI unit tests make them flaky. In this PR we're trying to avoid pollution as much as possible so we can at least test.

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-04-15 10:16:14 +02:00
Karuna Tata
ceac4d38f9 feat(core)*: implement redirection to flow creation page on skipping tutorial (#8333)
When a user clicks the `Skip tutorial` button, it just does that, shuts the tutorial down but leaves the user on the same page. This change will redirect users to `Flow Creation` page if the `Skip Tutorial` button is clicked.

Closes https://github.com/kestra-io/kestra/issues/8326.

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-04-15 08:11:41 +02:00
dependabot[bot]
ec7bf52e08 build(deps-dev): bump vite in /ui in the npm_and_yarn group (#8362)
Bumps the npm_and_yarn group in /ui with 1 update: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `vite` from 6.2.5 to 6.2.6
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.2.6
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-14 15:22:09 +02:00
Loïc Mathieu
247594299c feat(system)!: Describe our internal metrics
Add a description to all our internal metrics.

BREAKING CHANGE: the following metrics has been removed:
- executor.taskrun.next.count
- executor.workertaskresult.count

The metric scheduler.execution.running.duration has been renamed to scheduler.execution.lock.duration
2025-04-14 15:17:23 +02:00
Loïc Mathieu
513139976c feat(system): Allow to describe metrics (#1989) 2025-04-14 15:17:23 +02:00
Miloš Paunović
2cab9de57c refactor(namespaces): remove the unused maximize property (#8380)
There is no more need for `maximize` property to be passed for locked tabs, and therefore it's removed in this commit.
2025-04-14 13:55:45 +02:00
dependabot[bot]
cfae13c045 build(deps): bump io.micrometer:micrometer-core from 1.14.5 to 1.14.6
Bumps [io.micrometer:micrometer-core](https://github.com/micrometer-metrics/micrometer) from 1.14.5 to 1.14.6.
- [Release notes](https://github.com/micrometer-metrics/micrometer/releases)
- [Commits](https://github.com/micrometer-metrics/micrometer/compare/v1.14.5...v1.14.6)

---
updated-dependencies:
- dependency-name: io.micrometer:micrometer-core
  dependency-version: 1.14.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 11:55:59 +02:00
dependabot[bot]
6190f8774a build(deps): bump com.google.guava:guava from 33.4.6-jre to 33.4.7-jre
Bumps [com.google.guava:guava](https://github.com/google/guava) from 33.4.6-jre to 33.4.7-jre.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-version: 33.4.7-jre
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 10:55:50 +02:00
dependabot[bot]
b98a0a783d build(deps): bump commons-io:commons-io from 2.18.0 to 2.19.0
Bumps commons-io:commons-io from 2.18.0 to 2.19.0.

---
updated-dependencies:
- dependency-name: commons-io:commons-io
  dependency-version: 2.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 10:10:24 +02:00
dependabot[bot]
3da2dc6257 build(deps): bump flyingSaucerVersion from 9.11.5 to 9.11.6
Bumps `flyingSaucerVersion` from 9.11.5 to 9.11.6.

Updates `org.xhtmlrenderer:flying-saucer-core` from 9.11.5 to 9.11.6
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.5...v9.11.6)

Updates `org.xhtmlrenderer:flying-saucer-pdf` from 9.11.5 to 9.11.6
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.5...v9.11.6)

---
updated-dependencies:
- dependency-name: org.xhtmlrenderer:flying-saucer-core
  dependency-version: 9.11.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.xhtmlrenderer:flying-saucer-pdf
  dependency-version: 9.11.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 10:10:06 +02:00
dependabot[bot]
6feb027696 build(deps): bump org.aspectj:aspectjweaver from 1.9.23 to 1.9.24
Bumps [org.aspectj:aspectjweaver](https://github.com/eclipse/org.aspectj) from 1.9.23 to 1.9.24.
- [Release notes](https://github.com/eclipse/org.aspectj/releases)
- [Commits](https://github.com/eclipse/org.aspectj/commits)

---
updated-dependencies:
- dependency-name: org.aspectj:aspectjweaver
  dependency-version: 1.9.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 10:09:21 +02:00
dependabot[bot]
83d6095669 build(deps): bump software.amazon.awssdk:bom from 2.31.16 to 2.31.21
Bumps software.amazon.awssdk:bom from 2.31.16 to 2.31.21.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-version: 2.31.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 10:09:02 +02:00
dependabot[bot]
444e3d2a77 build(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.37.0 to 0.38.1.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.37.0...v0.38.1)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-version: 0.38.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 10:08:28 +02:00
Satvik Kushwaha
752405ac78 fix(flows)*: amend text color problem in no code editor on firefox (#8367)
There was an issue with title color of tasks on the `No Code` editor (which stayed dark no matter the mode selected), but only viewed in `Firefox` browser. That is sorted out with this pull request.

Closes https://github.com/kestra-io/kestra/issues/8327.

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-04-14 09:35:39 +02:00
Miloš Paunović
860c1b218c feat(core)*: allow closing all tabs at once in a single panel (#8360)
Adds the ability to close all tabs in a single panel with a single click, improving usability and eliminating the need to close each tab individually.

Closes https://github.com/kestra-io/kestra/issues/8273.
2025-04-11 15:14:04 +02:00
Barthélémy Ledoux
0bd017556a fix(ui): command array should display properly in no-code (#8349) 2025-04-11 14:47:17 +02:00
Miloš Paunović
63ec5cab27 build(core): update commit message and description for translation-related pull requests (#8358)
This change updates the commit message and description generated by the translation CI process to be more descriptive and consistent with our commit conventions. It improves the clarity and traceability of automated translation updates in the commit history.
2025-04-11 14:38:31 +02:00
brian-mulier-p
e73f15a538 fix(core): bring back documentation on some plugins (#8354)
swagger is now resolved from Kestra classpath

closes #8265
2025-04-11 13:00:53 +02:00
github-actions[bot]
f871fa838e chore(translations)*: localize to languages other than english (#8353) 2025-04-11 12:11:38 +02:00
Miloš Paunović
c2028759e4 feat(core)*: introduce a dropdown menu for each panel (#8351)
This is the initial work to support the two related issues mentioned above, which is introducing the context menu for each tab panel, which will give us the place to list related actions.

Relates to https://github.com/kestra-io/kestra/issues/8272.
Relates to https://github.com/kestra-io/kestra/issues/8273.
2025-04-11 11:56:04 +02:00
Nicolas K.
21d6e0fa62 test(system): rework concurrency paused tests so they actually test t… (#8339)
* test(system): rework concurrency paused tests so they actually test the pause + concurrency behavior

* test(system): Add a flow name check in the queue because kafka queue is not cleaned between tests

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-04-11 11:16:01 +02:00
Bart Ledoux
ab666bff11 test(ui): failing test for autocompletiona after contributor's PR 2025-04-11 09:42:23 +02:00
Miloš Paunović
92c082e2e0 chore(flows)*: hide horizontal scroll on editor based inputs (#8347)
There was always a horizontal scrollbar present at editor compnent when used as input field, which was previously handled for the No Code editor in https://github.com/kestra-io/kestra/pull/8216.

Relates to https://github.com/kestra-io/kestra-ee/issues/3404.
2025-04-11 08:09:22 +02:00
Frank Tianyu Zeng
5a3a54fd57 feat(variables): add missing functions to editor autocompletion (#8245)
closes #7733

---------

Co-authored-by: brian.mulier <bmmulier@hotmail.fr>
2025-04-10 23:32:40 +02:00
Florian Hussonnois
1576051ebb fix(flow): re-enable NotEmpty constraint on property tasks for Sequential 2025-04-10 18:03:35 +02:00
Loïc Mathieu
4ec2a5d064 chore(system): don't emit two time a workertaskresult for RUNNING
We emit a WorkerTaskResult in RUNNING, then create an attempt, emit a new WorkerTaskResult with the attemps and then start running the task.
We can only emit one time a WorkerTaskResult as the second would be emitted microseconds after so it's just noise.
2025-04-10 18:02:42 +02:00
Florian Hussonnois
846e20a100 fix(flow): enhance error handling when injecting plugin defaults
Add a new checked exception FlowProcessingException to enhance error
handling when parsing, validating a flow, and injecting plugin defaults.

Related-to: #7894
2025-04-10 17:13:40 +02:00
Barthélémy Ledoux
433a332123 feat: use TaskTasks.vue to show subtask (#8332) 2025-04-10 16:59:10 +02:00
Loïc Mathieu
9b8b240d7c feat(core): use a fixed-size mask to mask secrets (#8131)
Fixes 8131
2025-04-10 15:17:05 +02:00
Miloš Paunović
e6937c4a8c feat(core)*: close code tab if file is deleted (#8331)
In the new multi panel view, if we have `code` tab opened and delete that file from `files` panel, we'll automatically close the opened tab for the file in question.

Closes https://github.com/kestra-io/kestra/issues/8271.
2025-04-10 14:51:43 +02:00
Nicolas K.
70dbe6a219 test(system): fix flaky runner test by adding sleep in subtask (#8329)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-04-10 14:41:21 +02:00
Mathieu Gabelle
8ceee4cfdc refactor: migrate plugin.core flowable tasks to dynamic proeprties (#8313)
* refactor: migrate plugin.core flowable tasks to dynamic proeprties

migrated properties to dynamic properties if possible
updated tests accordingly
remove unused import and fix sonar issues
2025-04-10 13:59:57 +02:00
Florian Hussonnois
b97347df97 fix(flow): handle parsing error when reading flows from repository
This commit fixes NPE in JdbcExecutor that can occurred when
reading invalid an flow, and add better handling of parsing error in JDBC flow
repositories.

Related-to: #7894
2025-04-10 13:28:11 +02:00
Piyush Bhaskar
b177a1f304 chore(ui): Add a trigger from Triggers tab (#7754)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-04-10 11:11:34 +02:00
Piyush Bhaskar
999406aee4 fix(ui): uniform scrollbar across UI (#7758)
* scrollbar  uniforming

* fix(ui): uniform scrollbar across ui.

* minor tweaks

* minor tweak

---------

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-04-10 11:10:46 +02:00
Barthélémy Ledoux
31fd0303b5 fix: make monaco composition API (#8320)
* refactor: make monaco composition API

* fix kv

* rename var in monaco

* enable autocomplete in new panel

* fix: set theme even in diff mode

* refactor: avoid using computed when unnecessary
2025-04-10 10:57:28 +02:00
Florian Hussonnois
32b4a9e0be fix(core): handle parsing error when reading flows from repository
This commit fixes a regression after applying plugin default
versions in the AbstractJdbcFlowRepository
2025-04-09 22:58:24 +02:00
Barthélémy Ledoux
2c411a27cc build: use storybook test addon to get coverage (#8316) 2025-04-09 20:53:53 +02:00
Florian Hussonnois
504ff282ef fix: add missing indices for service instance table 2025-04-09 19:01:42 +02:00
Nicolas K.
365d82eb96 feat(#233)!: remove warningOnError behavior (#8321)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-04-09 18:00:20 +02:00
YannC
9a67466d9c chore(deps): upgrade micronaut-platform to 4.8.0 (#8232)
* chore(deps): upgrade micronaut-platform to 4.8.0

* fix: http client version enforcement is not needed anymore as docker-java as updated the dependency

* fix: make applicationContext protected in SchedulerPollingTriggerTest

* fix: upgrade docker-java version to 3.5.0

* fix: make some method protected in the AbstractRunnerTest so it can be override
2025-04-09 17:06:38 +02:00
Nicolas K.
a04db6510b feat(makefile): add pull-plugin script and fixe clone-plugin script (#8283)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-04-09 17:03:05 +02:00
Will Russell
ab2fea660a doc(Core): task example indentation error 2025-04-09 15:25:25 +01:00
ben8t
1c9016ba45 fix(sanitycheck): update flows id and namespace
* fix:sleep assert comparison

* fix:edit sanitycheck according to new process

* fix:typo
2025-04-09 14:46:47 +02:00
Miloš Paunović
935ff944a5 fix(ui): make sure that dropping tab places it into right place (#8315)
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-04-09 14:41:01 +02:00
Will Russell
fd4667383c doc(Devcontainer): link instructions to contributing guide 2025-04-09 12:15:44 +01:00
Loïc Mathieu
5bec2fa8b3 feat(cli,core)!: change KESTRA_ env prefix by ENV_
This avoid possible security issue as you can use env var to override Kestra configuration properties and Kestra related configuration properties starts with `kestra`.

Fixes https://github.com/kestra-io/kestra-ee/issues/3131
2025-04-09 12:48:54 +02:00
Piyush Bhaskar
c24fcfd0ca chore(ui): Add a trigger from Triggers tab (#7754)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-04-09 11:25:34 +02:00
Piyush Bhaskar
22424c69b6 chore(ui): improve the filter label colors on hover (#8141) 2025-04-09 11:17:18 +02:00
Bart Ledoux
938b3cc08b tests: fix storybook multipanel test 2025-04-09 11:15:14 +02:00
Piyush Bhaskar
5fdf2f3085 chore(ui): amend scrollbar issue on the no code editor fields (#8216) 2025-04-09 11:10:07 +02:00
Tanvir Ahmed
062957982b fix: [#8282] - Fixed issue with Devcontainer not running on arm64 architecture (#8285)
* fix: [#8282] - Fixed issue with Devcontainer not running on arm64 architecture

* chore: Updated implementation of dynamic install of Java JDK
2025-04-09 10:07:16 +01:00
Bart Ledoux
c08213b48d ci: remove some odd arguments to frontend checkout 2025-04-09 10:49:25 +02:00
Karuna Tata
152d96f018 chore(ui): remove reorder buttons when there's only one value in no code arrays (#8266) 2025-04-09 09:52:02 +02:00
AJ Emerich
4865843b10 fix(docs): add titles and examples to Dashboard chart types (#8233)
* fix(docs): add titles to Dashboard chart types

* fix(docs): add examples to Dashboard chart types

* fix(docs): add bar chart example
2025-04-09 09:19:46 +02:00
Miloš Paunović
47309a0782 chore(deps): regular dependency update (#8310) 2025-04-09 08:11:58 +02:00
Bart Ledoux
7d7340b4ba fix: remove the big plus when dragging 2025-04-08 16:11:58 +02:00
Bart Ledoux
eb1509959c chore: remove console.log drop 2025-04-08 15:50:59 +02:00
Nicolas K.
5285bea930 feat(Unit Tests) #8171 convert hamcrest to assertj (#8276)
* feat(Unit Tests) #8171 convert hamcrest to assertj

* fix(Unit Tests) #8171 failing unit test after assertj migration

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-04-08 15:48:54 +02:00
Bart Ledoux
cc5a1c9f68 fix: remove props warning in flow editor 2025-04-08 15:47:04 +02:00
MilosPaunovic
725e5e5d78 fix(ui): allow tab button to take effect while using editor 2025-04-08 15:09:30 +02:00
Bart Ledoux
56b903b8fd fix: repair docs home page 2025-04-08 15:05:08 +02:00
Miloš Paunović
21c0c86238 fix(ui): amend namespace files creation & editing problems (#8279) 2025-04-08 13:43:20 +02:00
Miloš Paunović
65ab695001 chore(ui): pass prop to maximize the height of namespace file editor (#8278) 2025-04-08 13:34:33 +02:00
Miloš Paunović
1310e59cf9 chore(ui): amend the sizing of editor panels (#8277) 2025-04-08 13:30:22 +02:00
YannC
c35352e2b4 feat: Deprecated BOOLEAN input for new BOOL input with no undefined state (#8257)
close #8225
2025-04-08 10:22:11 +02:00
Miloš Paunović
59589b1c2d refactor(ui): uniform the namespace components for oss and ee versions (#8256) 2025-04-08 09:29:19 +02:00
brian.mulier
4729430a00 feat(ui): ability to hide secret value when typing in secrets
closes kestra-io/kestra-ee#3358
2025-04-08 00:10:22 +02:00
brian.mulier
1aa37d5756 fix(core): duration defaults are rendered as duration string instead of timestamp
closes #3742
2025-04-07 22:06:24 +02:00
brian.mulier
1a121951d6 fix(jdbc): conflict on migration numbers 2025-04-07 21:59:14 +02:00
YannC
92ee3f749e fix: correct version migration for H2 sql file 2025-04-07 19:20:49 +02:00
dependabot[bot]
ae7bb88ff0 build(deps): bump com.google.guava:guava from 33.4.0-jre to 33.4.6-jre
Bumps [com.google.guava:guava](https://github.com/google/guava) from 33.4.0-jre to 33.4.6-jre.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 17:45:18 +02:00
Florian Hussonnois
8f29a72df7 refactor: add GenericFlow to support un-typed flow deserialization
Add new FlowId, FlowInterface and GenericFlow classes to support
deserialization of flow with un-typed plugins (i.e., tasks, triggers)
in order to inject defaults prior to strongly-typed deserialization.
2025-04-07 17:32:06 +02:00
Loïc Mathieu
fc8732f96e chore: use @Nullable from Jakarata annotations 2025-04-07 17:01:52 +02:00
Loïc Mathieu
14f4449d99 chore(deps): Upgrade Guava to 33.4.5-jre (#8005) 2025-04-07 17:01:52 +02:00
AJ Emerich
dd80a91ab3 fix(docs): remove note about Podman rootless (#8259)
closes https://github.com/kestra-io/docs/issues/2404
2025-04-07 16:54:06 +02:00
Florian Hussonnois
840f010921 fix(core): fix NPE when generating flow graph
Fix NPE when generating flow graph and a task cannot be deserialized

Fix: kestra-io/kestra-ee#3369
2025-04-07 16:33:08 +02:00
Loïc Mathieu
8462b178cb feat(jdbc-h2,jdbc-mysql,jdbc-postgres): add an index on queues.key 2025-04-07 15:55:54 +02:00
brian.mulier
901625786d fix(ui)!: prevent infinite loading loop in Namespace KV Store & Secrets pages if there is none 2025-04-07 15:07:50 +02:00
YannC
4def8c5764 chore(ci): Implement JReleaser for GitHub Release (#8231) 2025-04-07 13:34:33 +02:00
brian.mulier
65a204356c fix(ui): bump ui-libs to 0.0.168 2025-04-07 12:03:06 +02:00
dependabot[bot]
73e3fd08e9 build(deps): bump software.amazon.awssdk:bom from 2.31.11 to 2.31.16
Bumps software.amazon.awssdk:bom from 2.31.11 to 2.31.16.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-version: 2.31.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 11:29:42 +02:00
dependabot[bot]
0665b52014 build(deps): bump org.owasp.dependencycheck from 12.1.0 to 12.1.1
Bumps org.owasp.dependencycheck from 12.1.0 to 12.1.1.

---
updated-dependencies:
- dependency-name: org.owasp.dependencycheck
  dependency-version: 12.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 11:05:05 +02:00
dependabot[bot]
781f9dc8d8 build(deps): bump com.google.cloud:libraries-bom from 26.58.0 to 26.59.0
Bumps [com.google.cloud:libraries-bom](https://github.com/googleapis/java-cloud-bom) from 26.58.0 to 26.59.0.
- [Release notes](https://github.com/googleapis/java-cloud-bom/releases)
- [Changelog](https://github.com/googleapis/java-cloud-bom/blob/main/release-please-config.json)
- [Commits](https://github.com/googleapis/java-cloud-bom/compare/v26.58.0...v26.59.0)

---
updated-dependencies:
- dependency-name: com.google.cloud:libraries-bom
  dependency-version: 26.59.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 11:04:49 +02:00
dependabot[bot]
92e4570158 build(deps): bump org.jooq:jooq from 3.20.2 to 3.20.3
Bumps org.jooq:jooq from 3.20.2 to 3.20.3.

---
updated-dependencies:
- dependency-name: org.jooq:jooq
  dependency-version: 3.20.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 11:04:36 +02:00
brian.mulier
ce47b4ee5e fix(ui): bump ui-libs to 0.0.167 2025-04-07 09:54:35 +02:00
brian.mulier
69193c6096 Revert "fix(core): add additionalProperties=false to tasks to have a warning if there is unknown properties"
This reverts commit 6fee99a78a.
2025-04-07 09:54:30 +02:00
Bart Ledoux
9d437957fa chore: add a rule to prevent angle brackets cast in TS 2025-04-07 09:49:10 +02:00
Ludovic DEHON
dfea86fb07 chore(deps): update pebble to 3.2.4
affected by CVE-2025-1686
2025-04-06 18:23:55 +02:00
brian.mulier
6fee99a78a fix(core): add additionalProperties=false to tasks to have a warning if there is unknown properties 2025-04-05 02:14:20 +02:00
brian.mulier
2c766a5497 feat(webserver): move oneOf to anyOf in JsonSchemaGenerator to have better autocompletion 2025-04-05 01:52:41 +02:00
brian.mulier
959737f545 feat(ui): introduce patched version of monaco-yaml & yaml-language-server to have better autocompletion
waiting for https://github.com/redhat-developer/yaml-language-server/pull/1048
2025-04-05 01:05:27 +02:00
brian.mulier
2c1b6ffe3c fix(ui): exclude additional files from UI coverage report 2025-04-04 16:53:29 +02:00
brian.mulier
9b819f6925 fix(ui): avoid jsx confusion on cast that prevent Storybook from running 2025-04-04 16:24:02 +02:00
brian.mulier
a81c0a5737 fix(ui): move bunch of utils to typescript 2025-04-04 15:38:15 +02:00
brian.mulier
ebcb0bd2a2 feat(ui): add plugin icons to auto-completions + make autocompletion work upon writing full package 2025-04-04 15:28:53 +02:00
Loïc Mathieu
2a26c415bf feat(jdbc): avoid using the WorkerTaskResult queue when possible
Instead, directly process the result (add the taskrun) to avoid one rountrip inside the queue.
2025-04-04 14:15:13 +02:00
Loïc Mathieu
1e06b9f1c0 feat(jdbc): allow disabling queue cleaning. 2025-04-04 13:43:09 +02:00
Loïc Mathieu
0b64da5e84 fix(core): default namespace in namespace file 2025-04-04 11:51:00 +02:00
AJ Emerich
d95b65082f fix(docs): add title, description, and example to Dashboard chart data (#8220)
* fix(docs): add title, description, and example to Metrics chart data

* fix(docs): add title, description, example for Logs and Executions

* fix(docs): fix line break in Assert plugin docs
2025-04-04 08:18:14 +02:00
Mathieu Gabelle
1bba3e4035 refactor: migrate plugin condition to dynamic properties (#6907)
* refactor: migrate plugin condition to dynamic properties
2025-04-04 08:18:01 +02:00
Will Russell
efe0c6e1e4 fix(docs): update task type in example to updated name 2025-04-03 17:19:02 +01:00
Nicolas K.
fce7ec135e fire(core): flaky allow failure for each item test (#8228)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-04-03 18:00:15 +02:00
Nicolas K.
5a2456716f fix(jdbc): #8219 unquoted timestamp field breaking query (#8222)
* fix(jdbc): #8219 unquoted timestamp field breaking query

* fix(jdbc): #8219 fix hard coded quoted field

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-04-03 14:54:05 +02:00
Loïc Mathieu
f43f8c2dc0 fix(core): be tolerant of decryption issue
If we cannot decrupt outputs, let's ignore the outpot and log a warning.
This may only happen on configuratin mismatch between nodes.
2025-04-03 13:57:41 +02:00
YannC
94811d4e06 chore(ci): align plugins handle for docker publish on EE CI 2025-04-03 13:16:41 +02:00
YannC
b7166488be chore(ci): modify publish docker to align on EE 2025-04-03 11:56:11 +02:00
brian.mulier
78066fef62 fix(ui): remove all warnings from MonacoEditor.vue 2025-04-02 19:33:04 +02:00
brian.mulier
c70abcb85f fix(ui): auto-resize suggest window to fit tasks
closes #5823
2025-04-02 17:01:36 +02:00
YannC
774a4ef7a1 Feat(): ci changes (#8217)
* fix(): avoid running release workflow on releases branch

* feat(): avoid running CI on draft PR

close #4964

* fix(ci): only publish docker image in workflow release if develop branch or specific asked

close #8136
2025-04-02 15:51:28 +02:00
Florian Hussonnois
a48fd02ed7 fix(cli): fix NPE for commands not requiring plugins (#8212)
Fix: #8212
2025-04-02 14:51:41 +02:00
Loïc Mathieu
030d948521 chore(core): remove un-used attribute in FlowWithWorkerTrigger 2025-04-02 12:18:23 +02:00
Loïc Mathieu
c4aa6c1097 fix(jdbc): possible deadlock on service instance
If multiple Executors restart at the same time and there was a not of worker task to resubmit, there was a possible deadlock as the service instance table is selected for update so it can block other executors.
Using skipped lock avoid that and is still correct as other executors can skip the dead instance handling as it was already in process by the first executor.

findById was not changed in this commit as it's not part of the worker task resubmission process.
2025-04-02 10:53:54 +02:00
Loïc Mathieu
3d1a3d0e7a fix(ci): use the right GitHub token for test report 2025-04-02 10:53:28 +02:00
Loïc Mathieu
30ab030244 fix(gradle): Windows selfrun.bat
Fixes https://github.com/kestra-io/kestra-ee/issues/3324
2025-04-02 09:39:59 +02:00
brian.mulier
cc083385f0 fix(ui): better autocompletion relevance
closes #7709
2025-04-01 19:33:42 +02:00
Shruti Mantri
c14462f5fa feat: add afterExecution to basic.md (#8126)
* feat: add afterExecution to basic.md

* Update ui/src/assets/docs/basic.md

---------

Co-authored-by: AJ Emerich <aemerich@kestra.io>
2025-04-01 16:42:51 +02:00
Mathieu Gabelle
d6e470d788 fix!: update pullPolicy default value to IF_NOT_PRESENT (#8170) 2025-04-01 11:24:59 +02:00
Loïc Mathieu
58ae507e21 fix(core): mask secrets on log attributes
Fixes #3282
2025-04-01 10:09:11 +02:00
Loïc Mathieu
71110ccfc3 Revert "fix(core): HttpClient log the URL even if it's a secret"
This reverts commit 54aa935702.
2025-04-01 10:09:11 +02:00
YannC
fdcc07b546 fix(): allows namespace to be search by in filter 2025-04-01 10:07:52 +02:00
Mathieu Gabelle
221236e079 fix(scripts)!: update pull policy to IF_NOT_PRESENT (#8169)
BREAKING CHANGE: in accordance with new Docker Hub pull policy regulation, the default kestra pull policy will change from ALWAYS to IF_NOT_PRESENT
2025-04-01 08:12:39 +02:00
Ludovic DEHON
d14deaceb0 fix(core): add a meaningful log for flow that can inject defaults 2025-03-31 18:22:16 +02:00
YannC
bfdc48bbbe fix(cli): prevent FlowUpdatesCommand to crash due to plugin loader 2025-03-31 17:45:32 +02:00
brian.mulier
e6b2f1f79a fix(ui-ee): keep fetching if filtered kvs & secrets have no elements after fetch
might close kestra-io/kestra-ee#3311
2025-03-31 16:12:45 +02:00
Loïc Mathieu
0632052837 fix(core): use a stable flow logger name
If we keep the executionId in it, as it's now used to create the forward logger, a new logger will be created for each execution.
This may also fix a memory leak.
2025-03-31 14:56:13 +02:00
Florian Hussonnois
3df9d49aa0 ci: fix setversion-tag and devtools 2025-03-31 13:50:27 +02:00
Loïc Mathieu
318f2b7d5a chore(cli,jdbc-postgres): fix some compilation warnings 2025-03-31 13:17:35 +02:00
Roman Acevedo
800970a88f chore(deps): add bouncycastle:bcpkix-jdk18on to platform 2025-03-31 11:52:33 +02:00
dependabot[bot]
f717063a83 build(deps): bump org.sonarqube from 6.0.1.5171 to 6.1.0.5360
Bumps org.sonarqube from 6.0.1.5171 to 6.1.0.5360.

---
updated-dependencies:
- dependency-name: org.sonarqube
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 11:20:34 +02:00
Barthélémy Ledoux
9a7fb64943 fix: make flowWarnings show to unlock saving (#8157)
closes #8115
2025-03-31 10:59:46 +02:00
Barthélémy Ledoux
45bddb8d09 fix: task array needed better typings (#8158)
closes #8117
2025-03-31 10:59:32 +02:00
dependabot[bot]
881b009d9b build(deps): bump flyingSaucerVersion from 9.11.4 to 9.11.5
Bumps `flyingSaucerVersion` from 9.11.4 to 9.11.5.

Updates `org.xhtmlrenderer:flying-saucer-core` from 9.11.4 to 9.11.5
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.4...v9.11.5)

Updates `org.xhtmlrenderer:flying-saucer-pdf` from 9.11.4 to 9.11.5
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.4...v9.11.5)

---
updated-dependencies:
- dependency-name: org.xhtmlrenderer:flying-saucer-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.xhtmlrenderer:flying-saucer-pdf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 10:46:21 +02:00
dependabot[bot]
ab818713f6 build(deps): bump software.amazon.awssdk:bom from 2.31.6 to 2.31.11
Bumps software.amazon.awssdk:bom from 2.31.6 to 2.31.11.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 10:27:54 +02:00
Loïc Mathieu
d68ffa3109 chore: disable tests that are too flaky
An issue will be open to track them and re-enabled them later.
2025-03-31 10:27:46 +02:00
dependabot[bot]
addd76f9bb build(deps): bump com.azure:azure-sdk-bom from 1.2.32 to 1.2.33
Bumps [com.azure:azure-sdk-bom](https://github.com/azure/azure-sdk-for-java) from 1.2.32 to 1.2.33.
- [Release notes](https://github.com/azure/azure-sdk-for-java/releases)
- [Commits](https://github.com/azure/azure-sdk-for-java/compare/azure-sdk-bom_1.2.32...azure-sdk-bom_1.2.33)

---
updated-dependencies:
- dependency-name: com.azure:azure-sdk-bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 09:58:43 +02:00
dependabot[bot]
6be939c1bd build(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.36.3 to 0.37.0.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.36.3...v0.37.0)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 09:44:07 +02:00
dependabot[bot]
4ea876d3fe build(deps): bump com.google.cloud:libraries-bom from 26.57.0 to 26.58.0
Bumps [com.google.cloud:libraries-bom](https://github.com/googleapis/java-cloud-bom) from 26.57.0 to 26.58.0.
- [Release notes](https://github.com/googleapis/java-cloud-bom/releases)
- [Changelog](https://github.com/googleapis/java-cloud-bom/blob/main/release-please-config.json)
- [Commits](https://github.com/googleapis/java-cloud-bom/compare/v26.57.0...v26.58.0)

---
updated-dependencies:
- dependency-name: com.google.cloud:libraries-bom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 09:43:26 +02:00
Miloš Paunović
42d8005eff chore(ui): show blueprint id field in case of missing title (#8154) 2025-03-31 09:40:20 +02:00
Nicolas K.
58a360fae0 feat(core-ee): #7501 split file log exporter to multiple files (#8138)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-28 17:42:41 +01:00
Loïc Mathieu
49b647e1fc fix(core): add missing docker plugin subgroup icon 2025-03-28 16:15:41 +01:00
Florian Hussonnois
b314fc393b fix(cli): properly register plugins uninstall cmd 2025-03-28 15:40:09 +01:00
Florian Hussonnois
0a298cad17 fix(core): allow dash in plugin version qualifier 2025-03-28 15:18:37 +01:00
Shruti Mantri
61170e6067 feat: add example for HasRetryAttempt condition (#8133) 2025-03-28 14:14:42 +00:00
brian.mulier
cfbffad31a fix(ui): search bars are properly working in secrets & KV pages
closes #8110
closes kestra-io/kestra-ee#3290
2025-03-28 15:02:02 +01:00
Miloš Paunović
41e2dac4ca chore(ui): add padlock icon to secrets menu item (#8129) 2025-03-28 12:44:28 +01:00
Miloš Paunović
0fa8386cb3 chore(ui): amend file tree context menu link colors (#8123) 2025-03-28 12:10:08 +01:00
github-actions[bot]
0f45c009ab chore(translations): localize to languages other than English (#8120) 2025-03-28 11:27:25 +01:00
MilosPaunovic
b86177f329 chore(translations): uniform translation keys with entrerprise edition 2025-03-28 11:21:08 +01:00
brian.mulier
fe396c455b fix(ui): global secret page design
closes kestra-io/kestra-ee#3268
2025-03-28 11:18:34 +01:00
brian.mulier
0830e11645 fix(ui): repair tenant translation 2025-03-28 11:18:34 +01:00
brian.mulier
4d7f6b2bb1 fix(ui): add routeContext where it was missing 2025-03-28 11:18:34 +01:00
brian.mulier
955c6b728b fix(webserver): handle out-of-bounds (>) namespaces fetch 2025-03-28 11:18:34 +01:00
brian.mulier
d2d26351bd fix(core): namespace service now properly detects namespaces with flows inside 2025-03-28 11:18:34 +01:00
Loïc Mathieu
f14b638f73 fix(core): compilation issue 2025-03-28 09:26:01 +01:00
Loïc Mathieu
259b5b5282 Revert "fix(core): require condition in Flow trigger (#7494)"
This reverts commit c5767fd313.
2025-03-28 09:12:40 +01:00
Miloš Paunović
b1c50374b4 chore(ui): handle editor blueprint loading problem (#8113) 2025-03-28 08:57:24 +01:00
Roman Acevedo
de2d923bd4 fix: doc and deprecated field was not showing for dynamic non-string properties (#8006)
fix: doc and deprecated field was not showing for dynamic non-string properties (#8006)
2025-03-27 18:33:23 +01:00
Florian Hussonnois
89c76208a4 fix(core): avoid flow validation error on plugin alias duplicates 2025-03-27 17:59:04 +01:00
YannC
12eb8367ec feat(): add new crudeventtype "account_locked" (#8103) 2025-03-27 17:08:04 +01:00
Nicolas K.
7421f1e93d fix(kafka runner): #2709 filter child forEach tasks before merging th… (#8095)
* fix(kafka runner): #2709 filter child forEach tasks before merging the output, and add sleep before restarting flows to ensure failure is persisted

* feat(kafka runner): #2709 wait until executions are persisted as Failed in the database before restarting

* fix(runner): put back the sleep instead of the wait

* clean(runner): remove unused variables

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-27 16:56:37 +01:00
Loïc Mathieu
5642a53893 fix(core): properly fix the issue with MapUtils.flattenToNestedMap 2025-03-27 16:28:11 +01:00
Loïc Mathieu
d5a2f4430f fix(core): HttpClient log the URL even if it's a secret
Fixes https://github.com/kestra-io/kestra/issues/8092
2025-03-27 16:00:43 +01:00
rajatsingh23
0299e0d5ce chore(ui): Hide duration switch on empty flow dashboard (#8083)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-03-27 15:48:01 +01:00
Barthélémy Ledoux
c69ac99a7f refactor: remove dead code from monacoeditor (#8088)
* refactor(MonacoEditor): improve editor state management and type safety after refactor

* fix: make theme proper valid theme

* fix only types

* remove getEditor

* more fixes

* add vuex store types in options API

* update vuex types

* fix types

* remove unused mapping

* update vuex shims

* fix types
2025-03-27 14:08:59 +01:00
brian.mulier
fd1b4d5234 fix(ui): properly detect yaml to inject json schema into MonacoEditor
closes #8090
2025-03-27 13:39:00 +01:00
Miloš Paunović
4ef3600954 chore(ui): pass custom height property to execution output debug editors (#8100) 2025-03-27 13:36:29 +01:00
Miloš Paunović
366df0f37f chore(ui): include labels of saved search filter on page reload (#8099) 2025-03-27 13:17:11 +01:00
brian.mulier
5e87655a0e fix(webserver): first eval without masking secret function to error in case of missing secret
closes #8094
2025-03-27 13:09:31 +01:00
Miloš Paunović
0f01699d27 chore(ui): make app & dashboard editors re-sizable (#8096) 2025-03-27 12:01:40 +01:00
Loïc Mathieu
0794b2bf8e fix(core): flatten map should not throw an exception
As it is called inside the Executor, it must be fail-safe.
2025-03-27 10:57:32 +01:00
Loïc Mathieu
0becaa0b97 fix(core): charset should not be taken from
Fixes #8072
2025-03-27 10:02:23 +01:00
AJ Emerich
7d3bb34fd4 feat(docs): add kestra.environment and kestra.url expressions (#8085)
https://github.com/kestra-io/kestra-ee/issues/3095
2025-03-27 09:53:24 +01:00
Florian Hussonnois
b8c55baff1 fix(cli): make worker args available through static KestraContext
part-of: kestra-io/kestra-ee#3259
2025-03-26 15:53:51 +01:00
Loïc Mathieu
1f8e5ad18e feat(*): add new methods findAllAsync for the backup 2025-03-26 14:04:01 +01:00
Miloš Paunović
945f59afd0 chore(ui): improve saved search filtering functionality (#8073)
* chore(ui): passing prefix down  to saved search label component

* chore(ui): check if filters have operation field on encoding

* chore(ui): trigger search automatically on choosing the saved item
2025-03-26 11:16:31 +01:00
YannC
491fb54e2c fix(): add missing command to flow subcommand 2025-03-26 10:23:51 +01:00
github-actions[bot]
154f145d4a chore(translations): localize to languages other than English (#8071) 2025-03-26 10:16:39 +01:00
yuri
8a73edd772 feat(ui): improve styling of saved filter searches (#8040)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-03-26 09:57:02 +01:00
Miloš Paunović
660fcd7ec6 chore(deps): regular dependency update (#8070) 2025-03-26 08:46:50 +01:00
YannC
675aa666ab chore(ci): pass plugin version to docker workflow 2025-03-25 18:43:03 +01:00
Florian Hussonnois
451de81d03 fix(build): fix gradle property for release 2025-03-25 17:38:57 +01:00
YannC
323527d7e9 chore(ci): lower build-artifacts workflow so github release can use it 2025-03-25 17:28:45 +01:00
Florian Hussonnois
ea7c709f56 chore: upgrade to version 'v0.23.0-SNAPSHOT' 2025-03-25 16:34:02 +01:00
Barthélémy Ledoux
bc8bd7b00b feat: cleaner multipanel tab move (#8029)
* feat: better/simpler display for tab movement

* Revert "remove tests to make sure we merge"

This reverts commit a979232f6c.

* fix some tests

* better tests

* fix: make it work even after first move

* fix the blinking

* add a few tests

* one fix for split panel one for size

* fix test ?

* fix: scroll all the way

* make sure tab 4 is visible

* better borders

* fix dem darn tests
2025-03-25 15:46:05 +01:00
YannC
40f6334b0b fix(): datetime filtering issues (#8027)
close #7959
2025-03-25 14:48:27 +01:00
Nicolas K.
71151f5ac2 feat(core): #5467 add inheritance for KV in pebble and Get task (#8031)
* feat(core): #5467 add inheritance for KV in pebble and Get task

* fix(core): #5467 error when namespace don't contain dot

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-25 14:46:17 +01:00
brian.mulier
75e7635505 fix(ui): make sure global secret view iterates over all secrets 2025-03-25 13:43:05 +01:00
Florian Hussonnois
6c9dc8fba4 fix(core): fix NPE when closing standalone runner 2025-03-25 12:26:50 +01:00
brian.mulier
28d1f005a4 fix(ui): fail-safe secrets API calls on global secrets view 2025-03-25 12:09:07 +01:00
AJ Emerich
7fd7a6fcbc feat(docs): add example for best practice with multiline json http post request (#8023) 2025-03-25 11:42:27 +01:00
yuri
57707faf37 fix(ui): amend operator value of labels inside the filter (#8028) 2025-03-25 11:20:04 +01:00
brian.mulier
c64c2c7104 fix(ui): fail-safe secrets API calls 2025-03-25 11:08:22 +01:00
YannC
8f9b2fc0db fix(): use correct property for blueprint type
close #3227
2025-03-25 10:22:49 +01:00
Satvik Kushwaha
aab9e55794 chore(ui): limit flow run dialog maximum height (#7938)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-03-25 10:02:50 +01:00
Miloš Paunović
f9d48d6f74 fix(ui): allow multi label filtering (#8022) 2025-03-25 09:52:54 +01:00
Florian Hussonnois
267d848d3f fix(core): ensure defaults can be injected in flows (#3206)
Flow revisions create from older Kestra versions may not be linked to their original source.
In such cases, fall back to the generated source approach to enable plugin default injection.

close: #3206
2025-03-25 09:17:55 +01:00
brian.mulier
edbf14c1b8 fix(ui): handle properly layout of global Secrets when there is a secret manager 2025-03-25 02:45:21 +01:00
brian.mulier
d9ac267161 feat(ui): introduce global Secrets page
closes kestra-io/kestra-ee#1257
2025-03-25 01:39:18 +01:00
brian.mulier
74455ad993 fix(ui): prevent function parameters autocompletion from deleting parenthesis 2025-03-25 01:39:18 +01:00
YannC
e2dd02173f fix(): use correctly context-path when needed (#8018) 2025-03-24 20:30:55 +01:00
YannC
c7b3a42f34 fix(): make absolute date work with metrics (#8015)
close #7951
2025-03-24 18:46:45 +01:00
Rudhra Bharathy G
fe882bbee6 fix(): moved the logic to the backend (#5917)
close #5740
Co-authored-by: YannC <ycoornaert@kestra.io>
2025-03-24 17:59:54 +01:00
YannC
1efb21c087 fix(): make KestraFilter works with legacy default dashboard + avoid showing custom dashboard in namespace/flow pages (#8012)
close #7959
2025-03-24 16:33:48 +01:00
github-actions[bot]
beb6182104 chore(translations): localize to languages other than English (#8013)
Co-authored-by: GitHub Action <actions@github.com>
2025-03-24 16:24:15 +01:00
Miloš Paunović
7f0d3521db chore(ui): add anchors to plugin documentation (#8014) 2025-03-24 16:11:47 +01:00
benjoEK1337
7e4453632c fix(core): Handling for trailing slash in the KESTRA_URL configuration (#6373)
* fix(core): Handling for trailing slash in the KESTRA_URL configuration

* Update webserver/src/main/java/io/kestra/webserver/controllers/api/ExecutionController.java

---------

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Loïc Mathieu <loikeseke@gmail.com>
2025-03-24 16:10:43 +01:00
Loïc Mathieu
4a3d6b30d2 feat(core,jdbc): reset the trigger inside the JdbcExecutor
Fixes #7237
2025-03-24 15:54:53 +01:00
Florian Hussonnois
fe7c14c048 chore: refactor StorageInterfaceFactory to be a bean
changes:
* extract class for ServiceType

related-to: kestra-io/kestra-ee#3021
2025-03-24 15:45:24 +01:00
Barthélémy Ledoux
7b007aafc0 feat: parse docs is 2 steps to avoid user waiting with nothing (#7149) 2025-03-24 15:25:46 +01:00
Barthélémy Ledoux
f6aa2729b2 feat: multi panel editor without the refactor (#7971)
* refactor: move logic out of EditorView.vue and into store flow.js

* fix create mode

* feat: add multi panel flow editor

* missing flow id

* fix helpers tests ?

* restore helpers test

* fix one failing test

* fix: remove non-working stories

* remove size when one does split

* fix duplicated simulation

* fix tests

* try and fix the test

* remove tests to make sure we merge
2025-03-24 15:13:26 +01:00
Nicolas K.
0ca25445fd fix(platform): move slf4j api to enforce platform to fix it's version in test (#8007)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-24 14:25:16 +01:00
Piyush Bhaskar
4900963cb9 fix(ui): amend task source tabs colors (#8010) 2025-03-24 14:01:48 +01:00
Piyush Bhaskar
21d264f444 chore(ui): highlight first item in global search bar autocomplete (#8009) 2025-03-24 13:43:27 +01:00
Miloš Paunović
b6a3d0cd54 chore(ui): removing dynamic section of collapsible plugin properties (#8008) 2025-03-24 13:11:29 +01:00
Bart Ledoux
3244b1c293 fix: remove unwanted change in Curl 2025-03-24 11:52:49 +01:00
Florian Hussonnois
0987d0b349 feat(core): add new subkey arg to secret pebble function
Add new `subkey` named argument to the pebble function `secret`
to be able to select a specific field inside a secret containing
a JSON value

close: kestra-io/kestra-ee#3200
2025-03-24 11:43:14 +01:00
dependabot[bot]
5a2ac895ec build(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.36.2 to 0.36.3.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.36.2...v0.36.3)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 11:14:10 +01:00
Loïc Mathieu
7421693445 fix(core): race while initializing trigger + possible duplicate update 2025-03-24 11:10:17 +01:00
Loïc Mathieu
19894dbcd6 fix(core): race in the FlowListener
It sometimes throw ConcurrentModificationException while sending flow updates to the consumers.
2025-03-24 11:10:17 +01:00
dependabot[bot]
62e37f3b15 build(deps): bump software.amazon.awssdk:bom from 2.31.1 to 2.31.6
Bumps software.amazon.awssdk:bom from 2.31.1 to 2.31.6.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 10:48:44 +01:00
dependabot[bot]
37af61f41d build(deps): bump com.github.oshi:oshi-core from 6.7.1 to 6.8.0
Bumps [com.github.oshi:oshi-core](https://github.com/oshi/oshi) from 6.7.1 to 6.8.0.
- [Release notes](https://github.com/oshi/oshi/releases)
- [Changelog](https://github.com/oshi/oshi/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oshi/oshi/compare/oshi-parent-6.7.1...oshi-parent-6.8.0)

---
updated-dependencies:
- dependency-name: com.github.oshi:oshi-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 10:29:32 +01:00
dependabot[bot]
491f07296a build(deps): bump com.google.cloud:libraries-bom from 26.56.0 to 26.57.0
Bumps [com.google.cloud:libraries-bom](https://github.com/googleapis/java-cloud-bom) from 26.56.0 to 26.57.0.
- [Release notes](https://github.com/googleapis/java-cloud-bom/releases)
- [Changelog](https://github.com/googleapis/java-cloud-bom/blob/main/release-please-config.json)
- [Commits](https://github.com/googleapis/java-cloud-bom/compare/v26.56.0...v26.57.0)

---
updated-dependencies:
- dependency-name: com.google.cloud:libraries-bom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 10:29:14 +01:00
dependabot[bot]
6d59630a67 build(deps): bump com.microsoft.playwright:playwright
Bumps [com.microsoft.playwright:playwright](https://github.com/microsoft/playwright-java) from 1.50.0 to 1.51.0.
- [Release notes](https://github.com/microsoft/playwright-java/releases)
- [Commits](https://github.com/microsoft/playwright-java/compare/v1.50.0...v1.51.0)

---
updated-dependencies:
- dependency-name: com.microsoft.playwright:playwright
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-24 10:28:36 +01:00
YannC
a098650559 fix(): restarting trigger does not break the list anymore (#8004)
close #7712
2025-03-24 10:21:19 +01:00
Barthélémy Ledoux
505049a69e refactor: move flow editor logic into flow store (#7968)
* refactor: move logic out of EditorView.vue and into store flow.js

* fix create mode

* missing flow id

* fix helpers tests ?

* restore helpers test

* remove unfinished test files

* fix plugin docs

* remove issues on lowcode
2025-03-24 09:48:17 +01:00
yuri1969
a1abd28a3d fix(build): Gradle space-assignment deprecation 2025-03-24 09:26:44 +01:00
yuri1969
49a29c4bf1 fix(core): amend server start announcements
Servers announced their start even when their async startup process
was still in progress. This lead to confusing situations - a server
announced a successfull start but in fact it failed just few
moments later.

Note, the log message needs to be ported to EE server impls.
2025-03-24 09:25:00 +01:00
Miloš Paunović
49af8f336a fix(ui): include parameters into request for plugin schema fetching (#8002) 2025-03-24 09:12:52 +01:00
Nicolas K.
8642771a2b fix(core): working dir interface contract by putting back putFile(path, content) (#7980)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-21 16:58:51 +01:00
Nicolas K.
e44487c8d8 feat(core): #7932 add file exist comportment to NamespaceFiles (#7979)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-21 15:17:12 +01:00
Ludovic DEHON
f29aab0719 feat(core): speed up namespace file download and add a log & metrics
close #7871
close #7870
2025-03-21 13:44:16 +01:00
Loïc Mathieu
73c7a2d3d3 feat(core): allow null or empty proxy address to bypass proxy conf
Fixes #7961
2025-03-21 12:36:11 +01:00
brian.mulier
773a6e9093 fix(ui): change plugin doc properly upon switching plugin type
closes #7876
2025-03-21 11:51:44 +01:00
Ludovic DEHON
df1bbcfb7f fix(cicd): display ui unit test status 2025-03-21 09:53:49 +01:00
brian.mulier
f3419084fa fix(ui): filter tests were not up-to-date 2025-03-21 09:49:07 +01:00
brian.mulier
ab7788aeaf feat(ui): introduce global KV Store view
part of kestra-io/kestra-ee#1257
closes kestra-io/kestra-ee#1743
2025-03-21 09:49:07 +01:00
YannC
99e06632e0 fix(): prevent using LABELS in JDBC
link #6655
2025-03-20 21:54:41 +01:00
YannC
7b3d5a593e fix(): remove old '$eq' to avoid error in dashboard
link #7959
2025-03-20 21:09:09 +01:00
Bart Ledoux
cca7ed0bff fix: update ui-libs 2025-03-20 18:33:56 +01:00
Loïc Mathieu
481138e433 fix(core): add metric Publish task doc & icon
fixes #7154
2025-03-20 16:24:38 +01:00
Barthélémy Ledoux
267ffb69dc fix: only run posthog in prod mode (#7952) 2025-03-20 14:40:47 +01:00
Loïc Mathieu
43f1374aa3 chore: add GraalVM plugin 2025-03-20 13:10:39 +01:00
Loïc Mathieu
fe944ccc5b chore: add jattach into our Docker image 2025-03-20 11:57:55 +01:00
YannC
cec8702fc6 feat(): allow to specify a parent namespace in the flow updates command, and the possibility to allow child namespace in the flow bulk create command (#7956) 2025-03-20 11:24:23 +01:00
YannC
f898a679c4 fix(): Adapt the usage of the new query filter for custom dashboard (#7935)
close #7091
2025-03-19 17:13:56 +01:00
Nicolas K.
9a9d59f433 fix(core-ee): NPE when execution labels are null (#7950)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-19 17:09:17 +01:00
Loïc Mathieu
0579e23a20 fix(core): triggers don't have an execution ID already 2025-03-19 15:39:08 +01:00
YannC
343367d8c5 feat(): save last dashboard used in local storage (#7948)
close kestra-io/kestra-ee#2615
2025-03-19 14:45:45 +01:00
Miloš Paunović
d47e8083ac fix(ui): prevent filter text prefix to show up when searching locally (#7947) 2025-03-19 13:51:24 +01:00
Miloš Paunović
7c4d6b02a7 chore(ui): introduce a refresh functionality to execution logs page (#7946) 2025-03-19 12:07:34 +01:00
Miloš Paunović
95dd1b8a55 chore(deps): regular dependency update (#7944) 2025-03-19 10:41:29 +01:00
Loïc Mathieu
0ec2d88429 Revert "build(deps): bump protobufVersion from 3.25.5 to 4.30.1"
This reverts commit 6946c92683.
2025-03-19 10:27:44 +01:00
dependabot[bot]
c3b504a9ed build(deps): bump pdfjs-dist from 4.10.38 to 5.0.375 in /ui (#7942)
Bumps [pdfjs-dist](https://github.com/mozilla/pdf.js) from 4.10.38 to 5.0.375.
- [Release notes](https://github.com/mozilla/pdf.js/releases)
- [Commits](https://github.com/mozilla/pdf.js/compare/v4.10.38...v5.0.375)

---
updated-dependencies:
- dependency-name: pdfjs-dist
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-19 10:25:58 +01:00
Loïc Mathieu
8cba4dab62 fix(core): possible NPE if no manifest 2025-03-19 10:03:12 +01:00
Miloš Paunović
1b22d1e3d1 fix(ui): amend dependabot errors with parsing of package-lock.json file (#7941) 2025-03-19 09:33:20 +01:00
Loïc Mathieu
6194f244c8 feat(core): require existing namespace
Part-of: https://github.com/kestra-io/kestra-ee/issues/3071
2025-03-18 15:56:36 +01:00
Loïc Mathieu
11a1664865 feat(*): allow disabling flow logs and use a specific logger for executions, tasks and triggers
Fixes #7753
2025-03-18 15:53:30 +01:00
Miloš Paunović
db394f6371 chore(ui): remove the flow topology control button from image export (#7937) 2025-03-18 15:32:21 +01:00
Loïc Mathieu
a7433c6f62 feat(core): add correlationId to the Flow trigger
Fixes #7920
2025-03-18 14:35:59 +01:00
Loïc Mathieu
745c64c4b0 feat(model, core): document tasks props that are internal storage URI
Fixes https://github.com/kestra-io/kestra/issues/681
2025-03-18 14:29:57 +01:00
YannC
5d15e2081c fix(*): Improve log timestamp precision + allow to override timestamp… (#7847)
* fix(*): Improve log timestamp precision + allow to override timestamp in log consumer

close #5915
close #7243
close #5662

* chore(): review changes
2025-03-18 14:25:24 +01:00
Miloš Paunović
7d098eaa4e feat(ui): add beta badge global component (#7934) 2025-03-18 11:56:43 +01:00
Florian Hussonnois
0ee9abb372 fix: OpenTelemetry should be optional
OpenTelementry must be optional when OTEL is globally disabled
in micronaut.
2025-03-18 10:34:23 +01:00
github-actions[bot]
3f542ae737 chore(translations): localize to languages other than English (#7929) 2025-03-18 10:20:49 +01:00
rajatsingh23
811cc7722a feat(ui): add the option to copy single/all logs to clipboard (#7755)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-03-18 09:49:54 +01:00
Florian Hussonnois
f4f8ecb247 feat!: make kv pebble function raise error by default (#7855)
BREAKING CHANGE: use 'true' as default value for kv function arg errorOnMissing.

close: #7855
2025-03-18 09:24:16 +01:00
Florian Hussonnois
3566c4d365 fix(cli): return exit 0 in CLI plugins cmd
The CLI plugins install command must return exit code 0
even when no plugin are installed
2025-03-18 09:23:58 +01:00
YannC
a7421987b7 chore(): change docker image used for AbstractTaskRunnerTest 2025-03-18 09:19:17 +01:00
ben8t
c640b8208b [fix] fix sleep assert comparison (#7924) 2025-03-18 09:16:20 +01:00
ben8t
db71b56dcd Update documentation Switch core task (#6792) 2025-03-18 09:13:39 +01:00
Florian Hussonnois
8076fcc990 fix: disable micronaut otel by default 2025-03-18 08:47:19 +01:00
Miloš Paunović
bd520c2150 fix(ui): amend displaying large amount of logs (#7923)
* chore(ui): amend plugin documentation console errors

* fix(ui): amend displaying large amount of logs
2025-03-18 08:35:55 +01:00
Florian Hussonnois
2c731a0192 fix(core): avoid ClassCastException when parsing flow inputs (#7882)
Use toString() instead of casting objects directly to String
to avoid undesirable ClasCastException we expect a string type

close: #7882
2025-03-17 14:48:15 +01:00
github-actions[bot]
3b291b75cf chore(translations): localize to languages other than English (#7918) 2025-03-17 14:23:48 +01:00
Miloš Paunović
1563d1d2da feat(ui): implement a default tab setting for flows (#7917) 2025-03-17 13:44:09 +01:00
dependabot[bot]
5c73953c81 build(deps): bump org.aspectj:aspectjweaver from 1.9.22.1 to 1.9.23
Bumps [org.aspectj:aspectjweaver](https://github.com/eclipse/org.aspectj) from 1.9.22.1 to 1.9.23.
- [Release notes](https://github.com/eclipse/org.aspectj/releases)
- [Commits](https://github.com/eclipse/org.aspectj/commits)

---
updated-dependencies:
- dependency-name: org.aspectj:aspectjweaver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 13:16:50 +01:00
dependabot[bot]
f89aa8d278 build(deps): bump org.slf4j:slf4j-api from 2.0.16 to 2.0.17
Bumps org.slf4j:slf4j-api from 2.0.16 to 2.0.17.

---
updated-dependencies:
- dependency-name: org.slf4j:slf4j-api
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 13:16:41 +01:00
github-actions[bot]
7efa3975fc chore(translations): localize to languages other than English (#7915) 2025-03-17 12:54:11 +01:00
Miloš Paunović
a3362b0c85 chore(ui): properly sanitize execution errors markdown content before rendering (#7914) 2025-03-17 12:52:02 +01:00
dependabot[bot]
ab9ba91e5a build(deps): bump org.jooq:jooq from 3.19.18 to 3.20.2
Bumps org.jooq:jooq from 3.19.18 to 3.20.2.

---
updated-dependencies:
- dependency-name: org.jooq:jooq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 12:04:50 +01:00
Loïc Mathieu
355e24c9da chore(core): merge outputs only when necessary 2025-03-17 11:36:59 +01:00
github-actions[bot]
78dcca64ae chore(translations): localize to languages other than English (#7909) 2025-03-17 11:28:11 +01:00
Anna Geller
57c749d812 Revert "Adjusted the CI to skip frontend and backend tests for commits/PRs co…" (#7910)
This reverts commit 71a59e7b85.
2025-03-17 11:18:15 +01:00
Ash
2d7c233a5e chore(ui): improve charts horizontal scrollbar (#7508) 2025-03-17 10:48:16 +01:00
Piyush Bhaskar
cfac2c6fef chore(ui): change display on gantt page for created & queued executions (#7706) 2025-03-17 10:31:40 +01:00
Piyush Bhaskar
06352e46dc chore(ui): use the correct shadow on charts (#7752) 2025-03-17 10:22:55 +01:00
Piyush Bhaskar
08312aef97 chore(ui): show loading skeletons on dashboard (#7417) 2025-03-17 10:19:50 +01:00
github-actions[bot]
e05554e12d chore(translations): localize to languages other than English (#7908) 2025-03-17 10:10:57 +01:00
Miloš Paunović
cbb6ca77f7 feat(ui): add copy button to kv store listing rows (#7907) 2025-03-17 09:59:11 +01:00
dependabot[bot]
3dcd3c9785 build(deps): bump nl.basjes.gitignore:gitignore-reader
Bumps [nl.basjes.gitignore:gitignore-reader](https://github.com/nielsbasjes/codeowners) from 1.11.1 to 1.11.3.
- [Release notes](https://github.com/nielsbasjes/codeowners/releases)
- [Changelog](https://github.com/nielsbasjes/codeowners/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nielsbasjes/codeowners/compare/v1.11.1...v1.11.3)

---
updated-dependencies:
- dependency-name: nl.basjes.gitignore:gitignore-reader
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 09:52:28 +01:00
dependabot[bot]
7f6e15ec4a build(deps): bump aquasecurity/trivy-action from 0.29.0 to 0.30.0
Bumps [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action) from 0.29.0 to 0.30.0.
- [Release notes](https://github.com/aquasecurity/trivy-action/releases)
- [Commits](https://github.com/aquasecurity/trivy-action/compare/0.29.0...0.30.0)

---
updated-dependencies:
- dependency-name: aquasecurity/trivy-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 09:51:53 +01:00
dependabot[bot]
ab061e9a12 build(deps): bump dorny/test-reporter from 1 to 2
Bumps [dorny/test-reporter](https://github.com/dorny/test-reporter) from 1 to 2.
- [Release notes](https://github.com/dorny/test-reporter/releases)
- [Changelog](https://github.com/dorny/test-reporter/blob/main/CHANGELOG.md)
- [Commits](https://github.com/dorny/test-reporter/compare/v1...v2)

---
updated-dependencies:
- dependency-name: dorny/test-reporter
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 09:51:41 +01:00
dependabot[bot]
8eb91b75e9 build(deps): bump com.github.oshi:oshi-core from 6.7.0 to 6.7.1
Bumps [com.github.oshi:oshi-core](https://github.com/oshi/oshi) from 6.7.0 to 6.7.1.
- [Release notes](https://github.com/oshi/oshi/releases)
- [Changelog](https://github.com/oshi/oshi/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oshi/oshi/compare/oshi-parent-6.7.0...oshi-parent-6.7.1)

---
updated-dependencies:
- dependency-name: com.github.oshi:oshi-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 09:51:30 +01:00
dependabot[bot]
0134d5e5c2 build(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.36.1 to 0.36.2.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.36.1...v0.36.2)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 09:51:18 +01:00
dependabot[bot]
6946c92683 build(deps): bump protobufVersion from 3.25.5 to 4.30.1
Bumps `protobufVersion` from 3.25.5 to 4.30.1.

Updates `com.google.protobuf:protobuf-java` from 3.25.5 to 4.30.1
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl)
- [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.25.5...v4.30.1)

Updates `com.google.protobuf:protobuf-java-util` from 3.25.5 to 4.30.1

---
updated-dependencies:
- dependency-name: com.google.protobuf:protobuf-java
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: com.google.protobuf:protobuf-java-util
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 09:50:36 +01:00
dependabot[bot]
149dcac5f9 build(deps): bump software.amazon.awssdk:bom from 2.30.36 to 2.31.1
Bumps software.amazon.awssdk:bom from 2.30.36 to 2.31.1.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-17 09:50:27 +01:00
Miloš Paunović
0af5aea287 chore(ui): create flow button on welcome page to start product tour (#7906) 2025-03-17 08:40:57 +01:00
Barthélémy Ledoux
9413d4df06 fix(ui): use container queries for dashboard (#7889) 2025-03-17 08:24:39 +01:00
Miloš Paunović
87ee267f10 chore(ui): complete refactor of yaml utils (#7888) 2025-03-17 08:14:48 +01:00
Will Russell
02336ed397 fix(docs): typos 2025-03-14 19:04:38 +00:00
Will Russell
379199e186 fix(docs): fail examples 2025-03-14 18:47:57 +00:00
Will Russell
ebec8c2121 fix(docs): schedule example 2025-03-14 18:41:36 +00:00
Malay Dewangan
564c36ceab fix: remove labels from an execution (#7256)
* fix: remove labels from an execution

* feat(test): add test for removing labels from execution

* fix(test): update test for removing labels from execution

* feat: handle system labels and add unit test for system labels

---------

Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-03-14 15:19:29 +01:00
Miloš Paunović
3d248d0d74 refactor(ui): remove the obsolete console statement (#7887) 2025-03-14 15:00:35 +01:00
Loïc Mathieu
70e6d47c1a feat(webserver): add Kestra URL to the config endpoint 2025-03-14 14:57:52 +01:00
Loïc Mathieu
1ba54cd08e feat(core): add Kestra env name and URL to the expression context 2025-03-14 14:57:52 +01:00
Florian Hussonnois
eb6b40a04b feat(cli): add new --all option to plugin install cmd (#7375)
This commit adds the option all to the plugin install command
for installing all available public plugins.

Changes:
* add new service class PluginCatalogService

close: #7375
2025-03-14 14:44:30 +01:00
Anna Geller
d314c52924 docs: kv pebble (#7886) 2025-03-14 14:31:52 +01:00
Trinaya Kantevari
71a59e7b85 Adjusted the CI to skip frontend and backend tests for commits/PRs containing the 'docs-only' text. #6729 (#7756)
* Update pull-request.yml to skip tests for PRs with 'docs-only'.

Updated the if condition in the frontend and backend jobs to skip tests if 'docs-only' is present in the Pull Request title, body, or labels.

* Update workflow-test.yml to skip tests for commits with 'docs-only'.

Updated the if condition in the frontend and backend jobs to skip tests if 'docs-only' is present in the commit message.

* Apply suggestions from code review

---------

Co-authored-by: Anna Geller <anna.m.geller@gmail.com>
2025-03-14 14:29:26 +01:00
Will Russell
ff504afd8f fix(docs): add parallel example 2025-03-14 12:37:00 +00:00
YannC
64e5b80049 fix(ui): display back core property if not in a task
close #7879
2025-03-14 11:44:22 +01:00
Loïc Mathieu
c9baaf8565 fix(core): Avoid calling Worker post construct method twice 2025-03-14 09:58:30 +01:00
Miloš Paunović
02ad2af305 chore(ui): re-organize visuals for empty state component (#7875) 2025-03-14 08:46:57 +01:00
Florian Hussonnois
bed11f1541 chore(core): add PluginVersioning interface and version for TaskRunner
Changes:
- add new interface PluginVersioning
- update interfaces TaskInterface, TriggerInterface, TaskRunner

close: kestra-io/kestra-ee#3122
2025-03-14 08:26:52 +01:00
Miloš Paunović
6d14773ea7 chore(ui): prevent node state history to be shown if there is no date present (#7867) 2025-03-13 16:26:25 +01:00
Loïc Mathieu
74577cb059 chore(deps): upgrade @kestra-io/ui-libs to 0.0.157 2025-03-13 15:50:45 +01:00
Miloš Paunović
e63b019857 chore(ui): re-organize visuals for empty state component (#7866) 2025-03-13 15:18:29 +01:00
github-actions[bot]
8684bd9481 chore(translations): localize to languages other than English (#7863) 2025-03-13 14:36:31 +01:00
Miloš Paunović
586e089ada feat(ui): add afterExecution block to no code editor (#7848) 2025-03-13 13:53:52 +01:00
Loïc Mathieu
acebfef0d1 fix(deps): move OTLP metrics lib to CLI to avoid warning in tests 2025-03-13 13:05:20 +01:00
Loïc Mathieu
f7019af9d5 feat(core): add afterExecution to the topology 2025-03-13 13:02:34 +01:00
Loïc Mathieu
1419680006 fix(core): missing afterExecution in FlowForExecution 2025-03-13 13:02:34 +01:00
Shruti Mantri
64290f5d17 feat: add finally to the flow assets in basic.md (#7857) 2025-03-13 10:27:43 +01:00
Loïc Mathieu
e2da2dfeb0 fix(core): allowedNamespace is already called in the KvStoreService 2025-03-12 16:37:16 +01:00
Will Russell
977fe222a4 fix(docs): 2025 get started video 2025-03-12 13:11:18 +00:00
ben8t
0a24a5d13f Remove pebble function references that don't exist (#7698)
* [fix] remove pebble function references that don't exist

* [fix] pebble documentation

* [fix] remove non-existing functions
2025-03-12 12:23:22 +01:00
Loïc Mathieu
ecfe925ece feat(core): redact KESTRA_JAVA_OPTS from the env available to executions 2025-03-12 11:31:53 +01:00
dependabot[bot]
76f6c93e48 build(deps): bump @babel/runtime-corejs3 from 7.26.9 to 7.26.10 in /ui (#7840)
Bumps [@babel/runtime-corejs3](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime-corejs3) from 7.26.9 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-runtime-corejs3)

---
updated-dependencies:
- dependency-name: "@babel/runtime-corejs3"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 08:43:56 +01:00
dependabot[bot]
cfb76f4279 build(deps): bump @babel/helpers from 7.26.9 to 7.26.10 in /ui (#7841)
Bumps [@babel/helpers](https://github.com/babel/babel/tree/HEAD/packages/babel-helpers) from 7.26.9 to 7.26.10.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.26.10/packages/babel-helpers)

---
updated-dependencies:
- dependency-name: "@babel/helpers"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-12 08:43:18 +01:00
Miloš Paunović
50bbf03d53 chore(deps): regular dependency update (#7839) 2025-03-12 08:29:38 +01:00
Loïc Mathieu
2c9f09a82e feat(build): configure heap size to max 50% of available memory (#7800)
* feat(build): configure heap size to max 50% of available memory

* Apply suggestions from code review

Co-authored-by: brian-mulier-p <bmmulier@hotmail.fr>

---------

Co-authored-by: brian-mulier-p <bmmulier@hotmail.fr>
2025-03-11 16:38:51 +01:00
github-actions[bot]
c9579e5dcd chore(translations): localize to languages other than English (#7803)
Co-authored-by: GitHub Action <actions@github.com>
2025-03-11 16:34:42 +01:00
Miloš Paunović
1b13559a61 chore(ui): add the ability to change word wrap and to copy the preview output content (#7801) 2025-03-11 15:12:51 +01:00
Loïc Mathieu
c2e62d653d feat(core,jdbc): switch back to a cached thread pool for async JDBC queue
But with less threads as 2xnbCore was too much.
2025-03-11 14:25:32 +01:00
Bart Ledoux
14ff4438fe chore: update ui-libs 2025-03-11 14:06:59 +01:00
Loïc Mathieu
39b8fc1039 feat(core): afterExecution tasks
Fixes https://github.com/kestra-io/kestra-ee/issues/2792
2025-03-11 13:35:08 +01:00
Florian Hussonnois
1cb323b7aa fix(core): fix properly map MavenPluginRepositoryConfig 2025-03-11 13:17:23 +01:00
brian.mulier
4a12827684 fix(ui): remove errors from dashboard validation if it's fixed
closes #7748
2025-03-11 12:26:50 +01:00
brian.mulier
82a346b2ce fix(ui): make switch view buttons from dashboard editor the same as flow editor ones 2025-03-11 12:23:18 +01:00
dependabot[bot]
dea392a941 build(deps): bump io.micrometer:micrometer-core from 1.14.3 to 1.14.5
Bumps [io.micrometer:micrometer-core](https://github.com/micrometer-metrics/micrometer) from 1.14.3 to 1.14.5.
- [Release notes](https://github.com/micrometer-metrics/micrometer/releases)
- [Commits](https://github.com/micrometer-metrics/micrometer/compare/v1.14.3...v1.14.5)

---
updated-dependencies:
- dependency-name: io.micrometer:micrometer-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-11 11:22:43 +01:00
Loïc Mathieu
d0af5767d5 feat(core): add execution state in Pebbe context
Fixes #7155
2025-03-11 11:21:50 +01:00
brian.mulier
a064c7a956 feat(ui): introduce kv() and secret() pebble autocompletions
closes kestra-io/kestra-ee#77
2025-03-11 00:10:29 +01:00
brian.mulier
9b5b2b981f fix(webserver): add endpoint for inherited secrets 2025-03-10 23:42:33 +01:00
YannC
fac2ae813c fix(jdbc): return correct total when paginating custom dashboard chart (#7790)
close #7164
2025-03-10 18:05:44 +01:00
Nicolas K.
233a871c58 feat(core-ee): add json format to file log exporter (#7789)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-10 17:47:51 +01:00
Nicolas K.
05f24f3d65 fix(core): #7740 http configuration bearer token may change to basic because of allowFailed (#7788)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-10 16:33:15 +01:00
dependabot[bot]
66e5a7ca31 build(deps): bump software.amazon.awssdk:bom from 2.30.31 to 2.30.36
Bumps software.amazon.awssdk:bom from 2.30.31 to 2.30.36.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 15:48:03 +01:00
dependabot[bot]
fefaa7cdbb build(deps): bump org.testcontainers:testcontainers
Bumps [org.testcontainers:testcontainers](https://github.com/testcontainers/testcontainers-java) from 1.20.5 to 1.20.6.
- [Release notes](https://github.com/testcontainers/testcontainers-java/releases)
- [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.20.5...1.20.6)

---
updated-dependencies:
- dependency-name: org.testcontainers:testcontainers
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 15:47:46 +01:00
YannC
fd6b9dc065 fix(tests): increase seconds diff between dates (#7785) 2025-03-10 15:08:20 +01:00
dependabot[bot]
5935308e43 build(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.34.0 to 0.36.1.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.34.0...v0.36.1)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 15:02:29 +01:00
dependabot[bot]
83f06f3374 build(deps): bump org.jsoup:jsoup from 1.18.3 to 1.19.1
Bumps [org.jsoup:jsoup](https://github.com/jhy/jsoup) from 1.18.3 to 1.19.1.
- [Release notes](https://github.com/jhy/jsoup/releases)
- [Changelog](https://github.com/jhy/jsoup/blob/master/CHANGES.md)
- [Commits](https://github.com/jhy/jsoup/compare/jsoup-1.18.3...jsoup-1.19.1)

---
updated-dependencies:
- dependency-name: org.jsoup:jsoup
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 15:02:19 +01:00
dependabot[bot]
8d7bc6fdd4 build(deps): bump com.github.docker-java:docker-java from 3.4.1 to 3.4.2
Bumps [com.github.docker-java:docker-java](https://github.com/docker-java/docker-java) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/docker-java/docker-java/releases)
- [Changelog](https://github.com/docker-java/docker-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/docker-java/docker-java/compare/3.4.1...3.4.2)

---
updated-dependencies:
- dependency-name: com.github.docker-java:docker-java
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 15:01:44 +01:00
dependabot[bot]
03a44c1039 build(deps): bump org.opensearch.client:opensearch-java
Bumps [org.opensearch.client:opensearch-java](https://github.com/opensearch-project/opensearch-java) from 2.21.0 to 2.22.0.
- [Release notes](https://github.com/opensearch-project/opensearch-java/releases)
- [Changelog](https://github.com/opensearch-project/opensearch-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/opensearch-project/opensearch-java/compare/v2.21.0...v2.22.0)

---
updated-dependencies:
- dependency-name: org.opensearch.client:opensearch-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 15:00:59 +01:00
dependabot[bot]
5af0858445 build(deps): bump org.testcontainers:junit-jupiter from 1.20.5 to 1.20.6
Bumps [org.testcontainers:junit-jupiter](https://github.com/testcontainers/testcontainers-java) from 1.20.5 to 1.20.6.
- [Release notes](https://github.com/testcontainers/testcontainers-java/releases)
- [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.20.5...1.20.6)

---
updated-dependencies:
- dependency-name: org.testcontainers:junit-jupiter
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 15:00:31 +01:00
dependabot[bot]
0a304ff1d3 build(deps): bump com.gorylenko.gradle-git-properties
Bumps com.gorylenko.gradle-git-properties from 2.4.2 to 2.5.0.

---
updated-dependencies:
- dependency-name: com.gorylenko.gradle-git-properties
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 15:00:13 +01:00
dependabot[bot]
92418841fc build(deps): bump com.azure:azure-sdk-bom from 1.2.31 to 1.2.32
Bumps [com.azure:azure-sdk-bom](https://github.com/azure/azure-sdk-for-java) from 1.2.31 to 1.2.32.
- [Release notes](https://github.com/azure/azure-sdk-for-java/releases)
- [Commits](https://github.com/azure/azure-sdk-for-java/compare/azure-sdk-bom_1.2.31...azure-sdk-bom_1.2.32)

---
updated-dependencies:
- dependency-name: com.azure:azure-sdk-bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 14:59:56 +01:00
Florian Hussonnois
01036c829d fix(core): wait for service-manager-task thread to be stopped 2025-03-10 14:22:38 +01:00
Loïc Mathieu
5ffeee532c fix(jdbc): flaky tests JdbcServiceLivenessCoordinatorTest 2025-03-10 12:38:56 +01:00
Loïc Mathieu
c606760522 chore(core): disable OTLP metrics on tests 2025-03-10 12:38:56 +01:00
Loïc Mathieu
0870d8ebd8 fix(core): flaky test ExitTest.shouldExitAndKillTheExecution() 2025-03-10 12:38:56 +01:00
Florian Hussonnois
d2d0726f73 fix(cli): fix double shutdown warn messages
Changes:
- Avoid registering two shutdown-hooks that will both log the
shutdown message - leading to some confusion
- Some code cleanup/refactoring
2025-03-10 12:31:06 +01:00
Nicolas K.
868a232527 fix(core): failing schedule test (#7783)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-10 12:03:11 +01:00
Loïc Mathieu
3ef11044a2 feat(core): custom log filter
Since Logback 1.5.13, there is no more default implementation for the EvaluatorFilter so we need to supply our own.
See https://logback.qos.ch/manual/filters.html#evaluatorFilter
2025-03-10 10:56:13 +01:00
Miloš Paunović
2d1582f761 chore(ui): respect line numbers prop as part of editor options (#7781) 2025-03-10 10:34:15 +01:00
github-actions[bot]
94d36fdc01 chore(translations): localize to languages other than English (#7780) 2025-03-10 10:13:49 +01:00
dependabot[bot]
0388909828 build(deps): bump robinraju/release-downloader from 1.11 to 1.12
Bumps [robinraju/release-downloader](https://github.com/robinraju/release-downloader) from 1.11 to 1.12.
- [Release notes](https://github.com/robinraju/release-downloader/releases)
- [Commits](https://github.com/robinraju/release-downloader/compare/v1.11...v1.12)

---
updated-dependencies:
- dependency-name: robinraju/release-downloader
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-10 09:55:11 +01:00
Miloš Paunović
ff4f43c39b chore(ui): re-order namespace tabs (#7778) 2025-03-10 09:38:51 +01:00
Miloš Paunović
140d058beb chore(ui): remove single empty space between label key and value so it can be copied (#7774) 2025-03-10 08:08:22 +01:00
Loïc Mathieu
4276a0afd9 Revert "fix(core): ThresholdFilter is now stricly lower"
This reverts commit bd82f5e3b6.
2025-03-07 18:12:33 +01:00
Loïc Mathieu
1692cab533 feat(core): add outputs to the Flow trigger
Fixes #6848
2025-03-07 18:10:00 +01:00
Nicolas K.
3013e9dfd5 feat(core): #5467 add namespaces in the namespaceFiles parameter (#7749)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-07 17:18:45 +01:00
brian.mulier
440a942900 fix(ci): generate_translations.py is now deleting keys that are no longer in en translation to avoid ghost translations 2025-03-07 16:49:45 +01:00
Loïc Mathieu
7696d41d5f fix(jdbc): resubmit worker job to the good worker group
Fixes #7730
2025-03-07 16:44:28 +01:00
github-actions[bot]
45abaa146e chore(translations): localize to languages other than English (#7746)
Co-authored-by: GitHub Action <actions@github.com>
2025-03-07 14:57:33 +01:00
Loïc Mathieu
e9f2711cd3 feat(core): handle worker group fallback inside the scheduler 2025-03-07 14:48:02 +01:00
brian.mulier
166262209a fix(tests): reject promise with 404 instead of empty resolve if non-mocked store call in flowAutoCompletionProvider.spec.ts 2025-03-07 14:01:37 +01:00
Miloš Paunović
99bad6abb0 chore(ui): use uniformed pagination component for custom dashboard tables (#7744) 2025-03-07 13:39:40 +01:00
Barthélémy Ledoux
acc10ed638 fix(flow editor): enhance behavior when switching file tabs (#7722)
* fix(flow editor): when opening a new file and coming back to flow, validation + lowcode are broken

* fix: sync flowYaml only onEdit

* fix: files can now be saved again

* fix: make editor saving button ready for better ux

* allow for a bit of time for storybook to launch the inputs story

* add storybook for flow editor

* setup storybook
2025-03-07 11:29:54 +01:00
Loïc Mathieu
88341bb5c9 feat(webserver): mask the secret() function result from eval outputs
Fixes https://github.com/kestra-io/kestra-ee/issues/3073
2025-03-07 11:26:28 +01:00
brian-mulier-p
e8411b6b11 refacto(ui): move autocompletion to its own service (#7710)
Co-authored-by: Bart Ledoux <bledoux@kestra.io>
2025-03-07 10:46:44 +01:00
github-actions[bot]
6af105a8bf chore(translations): localize to languages other than English (#7739)
Co-authored-by: GitHub Action <actions@github.com>
2025-03-07 10:14:51 +01:00
Miloš Paunović
9a2e09cc8c chore(ui): uniforming empty state for components (#7737) 2025-03-07 09:11:16 +01:00
Nicolas K.
9b1a9d64bc feat(core): #7721 add namespace to pebble file functions (#7729)
* feat(core): #7721 add namespace to pebble file functions

* clean(core): #7721 extract tenantId only once

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-06 18:05:19 +01:00
Bart Ledoux
4678616520 fix: repair collapsed menu submenus 2025-03-06 17:12:24 +01:00
Bart Ledoux
07e4598fa4 fix(demo): on pages stop showing the docs without a button
closes #7726
2025-03-06 16:54:52 +01:00
YannC
01fe48b47a fix(ui): improved fetch of type for pluginDoc and avoid removing doc if map has "type" as property but without doc (like ENUM value) (#7727)
close #6101
close #7708
2025-03-06 16:47:04 +01:00
YannC
f7e61a46df feat(core): add new crudEventType value 2025-03-06 15:49:45 +01:00
Loïc Mathieu
dfe5552a1e feat(core): allow reading file from any namespaces
Fixes https://github.com/kestra-io/kestra-ee/issues/1934
2025-03-06 15:36:24 +01:00
YannC
593558dd22 fix(runner-memory): delete MemorySchedulerTriggerState back due to cherry-pick 2025-03-06 15:28:29 +01:00
Miloš Paunović
b22764290e chore(ui): properly sanitize markdown content before rendering (#7724) 2025-03-06 15:13:10 +01:00
YannC
78bfbf0d5e fix(): align to EE 2025-03-06 14:13:06 +01:00
ben8t
f505f29360 Add core plugin sanitychecks (#7592)
* [feature] add sanitychecks

* [feature] add dag sanitychecks

* [fix] use assert

* [fix] use assert

* [feature] add for each sanity
2025-03-06 13:43:54 +01:00
ben8t
1726347dbf change email oss auth default (#7717) 2025-03-06 10:47:24 +01:00
Miloš Paunović
bbf232ba52 fix(ui): prevent context docs open on editor custom blueprints click (#7716) 2025-03-06 09:53:54 +01:00
yuri1969
8f9fc5fe4b fix(core): stop Docker runner gracefully 2025-03-06 09:34:11 +01:00
Ludovic DEHON
9a56b763f4 chore(core): make registry unregister usable with immutable list 2025-03-06 08:48:36 +01:00
Miloš Paunović
40d37d9e42 chore(ui): auto expand first element in execution overview cascaders (#7715) 2025-03-06 08:48:22 +01:00
Florian Hussonnois
e200bbdb6b fix(cli): fix regression on CLI plugin doc cmd 2025-03-05 21:24:09 +01:00
brian.mulier
ef65623b13 fix(core): avoid duplicates in plugins subgroups + properly retrieve subgroup title 2025-03-05 18:36:45 +01:00
Nicolas K.
d8b2e92e8d feat(core-ee): #2838 add audit log shipper (#7701)
* feat(core-ee): #2838 add audit log shipper

* fix: scheduler flacky tests

* feat(core-ee): add pretty string audit log and clean PR

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-05 16:30:11 +01:00
Loïc Mathieu
2c63112a59 feat(core, jdbc): dynamic worker group key
Fixes https://github.com/kestra-io/kestra-ee/issues/3064
2025-03-05 15:37:01 +01:00
dependabot[bot]
20b87f1c9c build(deps): bump jacksonVersion from 2.18.2 to 2.18.3
Bumps `jacksonVersion` from 2.18.2 to 2.18.3.

Updates `com.fasterxml.jackson:jackson-bom` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-bom/compare/jackson-bom-2.18.2...jackson-bom-2.18.3)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.18.2...jackson-core-2.18.3)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.module:jackson-module-parameter-names` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-modules-java8/compare/jackson-modules-java8-2.18.2...jackson-modules-java8-2.18.3)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-yaml` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-dataformats-text/compare/jackson-dataformats-text-2.18.2...jackson-dataformats-text-2.18.3)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-smile` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-dataformats-binary/compare/jackson-dataformats-binary-2.18.2...jackson-dataformats-binary-2.18.3)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-cbor` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-dataformats-binary/compare/jackson-dataformats-binary-2.18.2...jackson-dataformats-binary-2.18.3)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-ion` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-dataformat-ion/commits)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-xml` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-dataformat-xml/compare/jackson-dataformat-xml-2.18.2...jackson-dataformat-xml-2.18.3)

Updates `com.fasterxml.jackson.datatype:jackson-datatype-guava` from 2.18.2 to 2.18.3
- [Commits](https://github.com/FasterXML/jackson-datatypes-collections/compare/jackson-datatypes-collections-2.18.2...jackson-datatypes-collections-2.18.3)

Updates `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.18.2 to 2.18.3

Updates `com.fasterxml.jackson.datatype:jackson-datatype-jdk8` from 2.18.2 to 2.18.3

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson:jackson-bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.module:jackson-module-parameter-names
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-smile
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-cbor
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-ion
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-xml
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-guava
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jdk8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 15:36:23 +01:00
dependabot[bot]
ca4e6a4b33 build(deps): bump org.opensearch.client:opensearch-java
Bumps [org.opensearch.client:opensearch-java](https://github.com/opensearch-project/opensearch-java) from 2.20.0 to 2.21.0.
- [Release notes](https://github.com/opensearch-project/opensearch-java/releases)
- [Changelog](https://github.com/opensearch-project/opensearch-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/opensearch-project/opensearch-java/compare/v2.20.0...v2.21.0)

---
updated-dependencies:
- dependency-name: org.opensearch.client:opensearch-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 13:11:00 +01:00
dependabot[bot]
82df58d26f build(deps): bump com.google.cloud:libraries-bom from 26.54.0 to 26.56.0
Bumps [com.google.cloud:libraries-bom](https://github.com/googleapis/java-cloud-bom) from 26.54.0 to 26.56.0.
- [Release notes](https://github.com/googleapis/java-cloud-bom/releases)
- [Changelog](https://github.com/googleapis/java-cloud-bom/blob/main/release-please-config.json)
- [Commits](https://github.com/googleapis/java-cloud-bom/compare/v26.54.0...v26.56.0)

---
updated-dependencies:
- dependency-name: com.google.cloud:libraries-bom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 12:28:30 +01:00
dependabot[bot]
b6f91128a1 build(deps): bump opensearchRestVersion from 2.18.0 to 2.19.1
Bumps `opensearchRestVersion` from 2.18.0 to 2.19.1.

Updates `org.opensearch.client:opensearch-rest-client` from 2.18.0 to 2.19.1
- [Release notes](https://github.com/opensearch-project/OpenSearch/releases)
- [Changelog](https://github.com/opensearch-project/OpenSearch/blob/main/CHANGELOG-3.0.md)
- [Commits](https://github.com/opensearch-project/OpenSearch/compare/2.18.0...2.19.1)

Updates `org.opensearch.client:opensearch-rest-high-level-client` from 2.18.0 to 2.19.1
- [Release notes](https://github.com/opensearch-project/OpenSearch/releases)
- [Changelog](https://github.com/opensearch-project/OpenSearch/blob/main/CHANGELOG-3.0.md)
- [Commits](https://github.com/opensearch-project/OpenSearch/compare/2.18.0...2.19.1)

---
updated-dependencies:
- dependency-name: org.opensearch.client:opensearch-rest-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.opensearch.client:opensearch-rest-high-level-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-05 12:15:10 +01:00
Miloš Paunović
a7abc17c0b chore(deps): regular dependency update (#7705) 2025-03-05 12:01:18 +01:00
Miloš Paunović
9607d0152e chore(ui): properly sanitize markdown content before rendering (#7697) 2025-03-05 08:17:02 +01:00
AJ Emerich
fc3c1a4c54 docs: fix typo in storage reverse task title (#7667) 2025-03-04 18:31:56 +01:00
Miloš Paunović
4cee4fca61 chore(ui): make sure chart stacks are following the same order every time (#7664) 2025-03-04 15:22:14 +01:00
Miloš Paunović
475573d13e feat(ui): add markdown formatting to flow run dialog (#7663) 2025-03-04 14:34:15 +01:00
Miloš Paunović
cfac9f339f chore(ui): properly sanitize markdown content before rendering (#7662) 2025-03-04 14:02:07 +01:00
Loïc Mathieu
cd97705d87 feat(core, jdbc): DashboardRepository.findAll() 2025-03-04 11:03:31 +01:00
Nicolas K.
56406c6b5c feat(#7636): add default options for HttpClient (#7650)
* feat(#7636): add default options for HttpClient

* fix(webserver): flacky execution controller tests

* fix(webserver): flacky execution controller tests

* fix(webserver): flacky execution controller tests

* fix(webserver): rework executor controller kill test

* fix(webserver): rework executor controller kill test

* fix(webserver): rework executor controller kill test

* fix(webserver): rework executor controller kill test

* fix(webserver): rework executor controller kill test

* fix(webserver): rework executor controller kill test

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-03-04 10:02:10 +01:00
YannC
38921a265a chore(deps): upgrade ui-libs version to v0.0.154 2025-03-03 22:11:53 +01:00
Shruti Mantri
be61869642 feat: add example for expression condition (#7660) 2025-03-03 18:22:49 +01:00
Shruti Mantri
1f09afe564 feat: add examples for flow conditions (#7659) 2025-03-03 17:52:56 +01:00
Shruti Mantri
35a0520dba feat: add examples for conditions - 3 (#7657)
Co-authored-by: AJ Emerich <aemerich@kestra.io>
2025-03-03 17:52:20 +01:00
YannC
cf6fad0896 fix(): avoid crash on injectDefault 2025-03-03 17:42:21 +01:00
Miloš Paunović
af0c1134e1 chore(ui): improve the topology tooltip label for adding task button (#7656) 2025-03-03 16:14:40 +01:00
Loïc Mathieu
12180457ea fix(core): MultipleCondition documentation 2025-03-03 15:14:55 +01:00
Loïc Mathieu
1eb9adf30a fix(core): validation error when timeWindow.type is null 2025-03-03 15:14:55 +01:00
dependabot[bot]
e7f2ec2aee build(deps): bump software.amazon.awssdk:bom from 2.30.16 to 2.30.31
Bumps software.amazon.awssdk:bom from 2.30.16 to 2.30.31.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 15:06:43 +01:00
dependabot[bot]
94421f141e build(deps): bump org.owasp.dependencycheck from 12.0.2 to 12.1.0
Bumps org.owasp.dependencycheck from 12.0.2 to 12.1.0.

---
updated-dependencies:
- dependency-name: org.owasp.dependencycheck
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 14:36:41 +01:00
dependabot[bot]
65b071adfd chore(deps): bump org.testcontainers:testcontainers
Bumps [org.testcontainers:testcontainers](https://github.com/testcontainers/testcontainers-java) from 1.20.4 to 1.20.5.
- [Release notes](https://github.com/testcontainers/testcontainers-java/releases)
- [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.20.4...1.20.5)

---
updated-dependencies:
- dependency-name: org.testcontainers:testcontainers
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 14:31:35 +01:00
Ludovic DEHON
d2bf56fecf fix(cicd): missing acls for test reports 2025-03-03 14:17:45 +01:00
dependabot[bot]
998a5cca32 chore(deps): bump flyingSaucerVersion from 9.11.3 to 9.11.4
Bumps `flyingSaucerVersion` from 9.11.3 to 9.11.4.

Updates `org.xhtmlrenderer:flying-saucer-core` from 9.11.3 to 9.11.4
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.3...v9.11.4)

Updates `org.xhtmlrenderer:flying-saucer-pdf` from 9.11.3 to 9.11.4
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.3...v9.11.4)

---
updated-dependencies:
- dependency-name: org.xhtmlrenderer:flying-saucer-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.xhtmlrenderer:flying-saucer-pdf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 14:15:30 +01:00
dependabot[bot]
4b48ad597d build(deps): bump nl.basjes.gitignore:gitignore-reader
Bumps [nl.basjes.gitignore:gitignore-reader](https://github.com/nielsbasjes/codeowners) from 1.10.0 to 1.11.1.
- [Release notes](https://github.com/nielsbasjes/codeowners/releases)
- [Changelog](https://github.com/nielsbasjes/codeowners/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nielsbasjes/codeowners/compare/v1.10.0...v1.11.1)

---
updated-dependencies:
- dependency-name: nl.basjes.gitignore:gitignore-reader
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 14:14:41 +01:00
dependabot[bot]
66fdb58f4b build(deps): bump com.github.oshi:oshi-core from 6.6.6 to 6.7.0
Bumps [com.github.oshi:oshi-core](https://github.com/oshi/oshi) from 6.6.6 to 6.7.0.
- [Release notes](https://github.com/oshi/oshi/releases)
- [Changelog](https://github.com/oshi/oshi/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oshi/oshi/compare/oshi-parent-6.6.6...oshi-parent-6.7.0)

---
updated-dependencies:
- dependency-name: com.github.oshi:oshi-core
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 14:14:27 +01:00
Loïc Mathieu
8c708e2d53 feat(core): improve merging outputs by merging them at the task level 2025-03-03 13:57:48 +01:00
Loïc Mathieu
677585213a feat(core): use HashMap.newHashMap(int) 2025-03-03 13:57:48 +01:00
Loïc Mathieu
ff3f90465d feat(core): replace new ArrayList by Collections.emptyList() 2025-03-03 13:57:48 +01:00
YannC
8f5189df49 fix(): recoverMissedSchedules behavior on long running executions (#7617)
* fix(): handle missed scheduled for long running execution

close #7549

* tests(core): add test for backfill last/none on long running execution

* fix(): review pr

* fix(): shorter test

* fix(): fix tests and add missing getStopAfter

* tests(): fix scheduler tests
2025-03-03 13:14:16 +01:00
Miloš Paunović
9446eefd94 fix(ui): make sure adding labels on flow run dialog is possible (#7652) 2025-03-03 11:29:35 +01:00
YannC
334410ab58 fix(): make subflow not found a warning instead of an error (#7649) 2025-03-03 10:38:28 +01:00
nKwiatkowski
7ccb97a963 Revert "feat(#7636): add default options for HttpClient"
This reverts commit 5b42d0adba.
2025-03-03 10:09:08 +01:00
nKwiatkowski
3957177455 Merge remote-tracking branch 'origin/develop' into develop 2025-03-03 10:05:13 +01:00
nKwiatkowski
5b42d0adba feat(#7636): add default options for HttpClient 2025-03-03 10:05:01 +01:00
Loïc Mathieu
8bd3c2fef8 fix(ci): fix vulnerability check workflow 2025-03-03 09:41:13 +01:00
Miloš Paunović
d8fc4a9ce2 fix(ui): allow sidebar theme toggle to update the editor theme (#7648) 2025-03-03 09:15:24 +01:00
Florian Hussonnois
bfd82e0b5c chore(core): eval value property once for flowable task Switch 2025-02-28 18:38:31 +01:00
Loïc Mathieu
fa07cbd3b9 feat(core): improve performance of ExecutorService.handleChildWorkerTaskResult
Searching for a retry in all parents is a costly operation, doing it only wgen we are retrying or failing avoid it most of the time.
2025-02-28 17:40:29 +01:00
github-actions[bot]
2c77a43935 chore(translations): localize to languages other than English (#7635)
Co-authored-by: GitHub Action <actions@github.com>
2025-02-28 16:09:24 +01:00
Piyush Bhaskar
60a84a49f8 chore(ui): improve empty state of the namespace files editor (#7495) 2025-02-28 15:54:39 +01:00
Piyush Bhaskar
d8295ef4ae feat(ui): allow reordering tabs in the editor (#7531) 2025-02-28 15:46:30 +01:00
Miloš Paunović
b02325a2e4 chore(ui): remove crud details from execution overview (#7634) 2025-02-28 15:39:43 +01:00
Florian Hussonnois
a098847c65 feat(core): enhance plugin management
Changes:
* add new interface PluginManager
* add new CLI for un-installing plugins
* add new option --locally to CLI plugin install
* refactor service for downloading plugins
* refactor PluginController
* move Version util class from EE to OSS
* migrate aether lib to maven-resolver (#915)

part-of: #915
2025-02-28 15:04:40 +01:00
brian.mulier
5f21eb5790 fix(ui): use watch with ref instead of accessing the value 2025-02-28 14:16:05 +01:00
MilosPaunovic
036a7cf4f7 fix(ui): improve check for text label of filters section 2025-02-28 14:00:32 +01:00
MilosPaunovic
446a034d6b fix(ui): additional check for text label of filters section 2025-02-28 12:48:38 +01:00
github-actions[bot]
3fff36881a chore(translations): localize to languages other than English (#7633)
Co-authored-by: GitHub Action <actions@github.com>
2025-02-28 12:23:36 +01:00
Anna Geller
174ac280d2 Update README.md 2025-02-28 11:12:41 +01:00
Miloš Paunović
c610ccdaee chore(ui): improve label for text search in filters section (#7631)
* chore(ui): improve label for text search in filters section

* chore(ci): prevent running translation spec on ci:cd workflow
2025-02-28 11:07:19 +01:00
Hashim Khalifa
d8ed5b8b88 feat:string filter (#7428)
* feat:string filter

* chore: include string filter in docs
2025-02-28 10:38:32 +01:00
brian.mulier
17e54134ce fix(core): no longer lowercasing PluginClassIdentifier to have proper validation upon Plugin deserialization
closes #7387
2025-02-28 10:01:57 +01:00
Anna Geller
cacbd069f9 Update README.md 2025-02-28 01:07:18 +01:00
Anna Geller
de5a0f4623 Update README.md 2025-02-28 01:05:24 +01:00
Piyush Bhaskar
0f6c8d3521 fix(ui): executions naviation based on start Date. (#7626) 2025-02-27 21:21:21 +01:00
Anna Geller
c8207b8706 fix: confusing trace log 2025-02-27 20:33:26 +01:00
brian.mulier
39cd6189ac chore(deps): bump ui-libs to 0.0.151 2025-02-27 18:47:43 +01:00
brian.mulier
9b4f3148fc fix(ui): replace alert blocks upon markdown rendering to display them properly
closes #7393
2025-02-27 16:46:23 +01:00
Shruti Mantri
ca6a7a9e16 Add full examples for dayweek, dayweekinmonth and publicholidays conditions (#7615)
* Add full examples for dayweek, dayweekinmonth and publicholidays conditions

* Update core/src/main/java/io/kestra/plugin/core/condition/DayWeekInMonth.java

---------

Co-authored-by: AJ Emerich <aemerich@kestra.io>
2025-02-27 16:39:41 +01:00
Bart Ledoux
3dc8e98ed3 fix: make sure nocode edits the right task from the topology
closes #7619
2025-02-27 15:58:17 +01:00
github-actions[bot]
ea79be9de8 chore(translations): localize to languages other than English (#7618)
Co-authored-by: GitHub Action <actions@github.com>
2025-02-27 15:17:13 +01:00
Anna Geller
3804bdc7f7 fix: improve translation prompt 2025-02-27 15:14:02 +01:00
Anna Geller
d04764814a fix: turn CI flag to a dropdown 2025-02-27 14:41:31 +01:00
Anna Geller
020d674d8c fix(translations): allow retranslating modified keys when needed 2025-02-27 14:39:17 +01:00
Miloš Paunović
ec7458dce5 feat(ui): make filter dropdown be positioned below the input caret (#7614) 2025-02-27 14:24:53 +01:00
Anna Geller
ae75ea06d2 fix: improve some wording 2025-02-27 14:19:30 +01:00
github-actions[bot]
53cd056871 chore(translations): localize to languages other than English (#7613)
Co-authored-by: GitHub Action <actions@github.com>
2025-02-27 14:14:52 +01:00
Piyush Bhaskar
9bab2d2cfa feat(ui): introduce the execution timeline section on overview tab (#7498)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-27 14:09:48 +01:00
Loïc Mathieu
4d87d95eac chore(deps): upgrade Micronaut core to 4.7.15 2025-02-27 14:09:22 +01:00
Anna Geller
81635ddc84 fix: clean up translations script 2025-02-27 13:11:46 +01:00
github-actions[bot]
781d1338e9 chore(translations): localize to languages other than English (#7610)
Co-authored-by: GitHub Action <actions@github.com>
2025-02-27 12:47:51 +01:00
Anna Geller
37ba85a130 Revert "chore(translations): localize to languages other than English (#7605)" (#7609)
This reverts commit 04b8a0a14c.
2025-02-27 12:41:42 +01:00
Anna Geller
7c7ac5a70d fix: only re-translate if the key is not already in the target dict (#7608)
* fix: only re-translate if the key is not already in the target dict or is empty

* Update generate_translations.py

* Update generate_translations.py
2025-02-27 12:40:46 +01:00
Shruti Mantri
f315485fc6 feat: add full examples for datetimebetween condition (#7598) 2025-02-27 11:30:59 +00:00
github-actions[bot]
04b8a0a14c chore(translations): localize to languages other than English (#7605)
Co-authored-by: GitHub Action <actions@github.com>
2025-02-27 11:53:09 +01:00
Anna Geller
8dc702ed16 fix(translations): fix translation key detection by comparing against last modifying commit (#7604) 2025-02-27 11:47:24 +01:00
Anna Geller
6dee52da16 fix: ci for translations (#7602)
* fix: ci for translations

* clean uo
2025-02-27 10:39:36 +01:00
Anna Geller
31dce9aadd Update generate-translations.yml 2025-02-27 10:23:30 +01:00
Anna Geller
cf1d98f56d chore(translations): standalone action for translations (#7597) 2025-02-27 10:22:01 +01:00
Harshit Dhaduk
3bbe65653b feat(ui): add ability to have persistent filter options (#7276)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-27 09:31:45 +01:00
Piyush Bhaskar
5108dd5e25 feat(ui): improve inspecting details of multiple executions (#7516) 2025-02-27 08:33:02 +01:00
Tanvir Ahmed
1ea331b8ab chore: introduce Devcontainer setup (#7507)
Co-authored-by: brian.mulier <bmmulier@hotmail.fr>
2025-02-26 19:26:55 +01:00
aeSouid
e9ceda4666 Fix issue text filter after label 2025-02-26 19:18:16 +01:00
brian.mulier
a996347de2 fix(ui): LabelInput.vue was causing UI freeze 2025-02-26 16:38:31 +01:00
Nicolas K.
d8e3a9ab8b Feat/npe on runcontext cleanup (#7585)
* fix(#7548): NPE on runContext cleanup if logger is null

* clean(#7548): unused import

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-02-26 14:06:41 +01:00
Miloš Paunović
e097bdbe53 chore(deps): regular dependency update (#7588) 2025-02-26 13:41:58 +01:00
Miloš Paunović
0090caad3f fix(ui): make sure adding labels on flow run dialog is possible (#7587) 2025-02-26 12:43:56 +01:00
Loïc Mathieu
7fbe433221 fix(core): properly render list properties 2025-02-26 12:03:55 +01:00
Miloš Paunović
b489848ab9 chore(ui): remove background and check mark from selected filters dropdown list (#7583) 2025-02-26 11:23:05 +01:00
Loïc Mathieu
fc7ef1ca38 fix(core): log can have no executionId
Fixes https://github.com/kestra-io/kestra-ee/issues/2980
2025-02-26 11:03:43 +01:00
Miloš Paunović
0dfe54baa8 fix(ui): amend inconsistencies inside the product tour (#7582) 2025-02-26 11:02:40 +01:00
Miloš Paunović
45c5592609 fix(ui): make flow deletion work as expected (#7579) 2025-02-26 09:04:18 +01:00
Miloš Paunović
3134d2abe2 chore(ui): respect default execution tab settings field when opening single execution (#7576) 2025-02-26 08:35:07 +01:00
aeSouid
2bb5ac61c2 Labels multiselect: (#7544)
combine the labels filter by operation to handle multiselect when building the query
2025-02-25 16:50:38 +01:00
Malaydewangan09
be04c168fd refactor: update http client and fix tests 2025-02-25 16:31:27 +01:00
Malaydewangan09
04c4916ac6 chore: add wiremock and update tests 2025-02-25 16:31:27 +01:00
Malaydewangan09
8d2af87db3 fix: refactor PluginSearchCommand 2025-02-25 16:31:27 +01:00
Malaydewangan09
e7950279bb feat: add plugin search command 2025-02-25 16:31:27 +01:00
Đỗ Trọng Hải
44936e9cdf fix(ui): improve coloring for task object tooltips in no code editor (#7515) 2025-02-25 15:38:57 +01:00
yuri
27755a3791 fix(ui): preselect filter comparator option (#7518) 2025-02-25 15:33:21 +01:00
brian.mulier
ff4f7abb0f fix(ui): styling enhancements for plugin doc
closes kestra-io/ui-libs#196
2025-02-25 15:21:24 +01:00
brian.mulier
48b117b351 fix(ui): plugins TOC is now handling every type of plugins 2025-02-25 15:21:24 +01:00
yuri
daca5675d0 fix(ui): amend label filter encoding after values change (#7536) 2025-02-25 14:05:12 +01:00
Miloš Paunović
b3278bf208 feat(ui): introduce topology export to image files (#7541) 2025-02-25 13:42:13 +01:00
Loïc Mathieu
8a26fdd83e chore(core): move run context property validation to the run context
This would avoid loading the Validator from the application context each time we render a property
2025-02-25 11:09:46 +01:00
Loïc Mathieu
38b8190be9 fix(core): Subflow using the old task name never ends
Fixes #7506
2025-02-25 11:06:31 +01:00
Miloš Paunović
52cb63c436 chore(ui): prevent system labels to be shown in set labels dialog (#7539)
* chore(ui): prevent system labels to be shown in set labels dialog

* chore(ui): improve the removal of labels
2025-02-25 10:42:07 +01:00
dependabot[bot]
f3cff1b8cd build(deps): bump io.micronaut.platform:micronaut-platform
Bumps [io.micronaut.platform:micronaut-platform](https://github.com/micronaut-projects/micronaut-platform) from 4.7.5 to 4.7.6.
- [Release notes](https://github.com/micronaut-projects/micronaut-platform/releases)
- [Commits](https://github.com/micronaut-projects/micronaut-platform/compare/v4.7.5...v4.7.6)

---
updated-dependencies:
- dependency-name: io.micronaut.platform:micronaut-platform
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-25 10:14:04 +01:00
Loïc Mathieu
a2c89e508c fix(core): handle space in HTTP request URI
Fixes #6936
2025-02-25 09:03:58 +01:00
aeSouid
c8aae742a2 fix(ui): amend filtering of logs (#7535) 2025-02-25 08:33:11 +01:00
aeSouid
eab7b746e5 Fix the search by labels input as single value 2025-02-24 19:31:14 +01:00
nKwiatkowski
1d5981665f fix(core): #172 add reactor into classloader blacklist 2025-02-24 18:41:15 +01:00
Ludovic DEHON
4500c976d6 fix(core): content type encoding should not be mandatory 2025-02-24 18:33:25 +01:00
Loïc Mathieu
cf10269f25 fix(jdbc): be resilient to DataException
We usually fail fast, but when a DataException is thrown it means the JDBC driver throws an exception with error code 22: data exception.
As the exception is from the data not the database or the network, there is no point of failfast, we throw a QueueException that may or may not be handled gracefully by the call site.
2025-02-24 16:56:10 +01:00
MilosPaunovic
cf635058cd chore(ui): use system namespace label from configs 2025-02-24 14:45:28 +01:00
aeSouid
bd6937a9f0 Fix the multi select status for the IAM/invitaiton page (#7528) 2025-02-24 13:36:34 +01:00
Miloš Paunović
59cc6f32d0 refactor(ui): remove obsolete chartjs-chart-treemap library (#7529) 2025-02-24 13:33:48 +01:00
Miloš Paunović
b8423ef70e chore(ui): purge empty labels on execution (#7527) 2025-02-24 12:24:50 +01:00
Miloš Paunović
0ec1b3a983 chore(ui): prevent sending random strings as child filter values (#7526)
* chore(ui): properly handle child filter

* chore(ui): prevent sending random strings as child filter values
2025-02-24 11:19:16 +01:00
Anna Geller
8cebd39f0d docs: debug expression (#7514)
* docs: debug expression

* fix: translation script

* fix: translations commit depth

* fix: comment
2025-02-24 10:22:21 +01:00
Ludovic DEHON
9fce6cfe65 fix(core): missing content type on http client 2025-02-21 23:18:27 +01:00
brian.mulier
c8c0c4e63f fix(core): camel to snake-case for app-blocks in RegisteredPlugin 2025-02-21 19:44:06 +01:00
Loïc Mathieu
25723b1acb fix(core): typo in PluginScanner 2025-02-21 19:40:16 +01:00
rajatsingh23
065d299422 chore(ui): restore automatic scroll to bottom on logs (#7365) 2025-02-21 15:08:13 +01:00
brian.mulier
9ec4d9282b fix(core): rename dashboards subgroups 2025-02-21 14:48:03 +01:00
brian.mulier
16284e5b95 fix(core): move package-info.java to proper dashboard packages 2025-02-21 14:35:36 +01:00
Ludovic DEHON
a115eb5373 fix(core): try to log message for unhandled realtime trigger exception 2025-02-21 12:50:21 +01:00
brian.mulier
ac2643c108 fix(core): add package-info.java to script + handle subgroups properly 2025-02-21 12:23:24 +01:00
Adam Hirshson
4710baec7d chore(ui): improve the scope of translations (#7505)
Co-authored-by: Yailan Bordas <bordasyailan@gmail.com>
Co-authored-by: Yailan Bordas <109761932+YAI-cs@users.noreply.github.com>
Co-authored-by: Christian Arauz <carau022@fiu.edu>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-21 09:20:52 +01:00
Miloš Paunović
1efe531228 chore(ui): add translation key/value pairs (#7509) 2025-02-21 09:19:09 +01:00
brian.mulier
df92491e55 fix(core): add package-info.java to dashboard package 2025-02-20 19:05:58 +01:00
aeSouid
e7c65e020a chore(ui): improve scope type filters (#7504) 2025-02-20 14:14:08 +01:00
Miloš Paunović
90212ee7dc fix(ui): properly filter out log levels (#7503) 2025-02-20 12:18:58 +01:00
Miloš Paunović
ac1984b349 fix(ui): make flow metrics behave as expected (#7502) 2025-02-20 11:59:27 +01:00
YannC
c5767fd313 fix(core): require condition in Flow trigger (#7494)
close #971
2025-02-20 10:19:06 +01:00
Ludovic DEHON
8ee79264ed fix(tasks): remove useless format metrics on return (#7486) 2025-02-19 22:56:29 +01:00
Mathieu Gabelle
c6d21776ec fix: render before command with options in CommandsWrapper (#7496) 2025-02-19 17:02:31 +01:00
Aabhas Sao
45a9ea0cc5 chore(ui): simplify query search with spaces inside (#7404)
Signed-off-by: Aabhas Sao <aabhassao0@gmail.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-19 16:26:47 +01:00
YannC
1f60a86739 fix(core): if subflow is disabled, raise an error (#7490) 2025-02-19 14:17:28 +01:00
Piyush Bhaskar
d0e8b691e3 chore(ui): amend margins of EE locked pages (#7446) 2025-02-19 14:11:45 +01:00
Piyush Bhaskar
0687a97eb8 feat(ui): add keyboard shortcuts for changing editor font size (#7450)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-19 13:54:20 +01:00
Miloš Paunović
dcf89b5db8 chore(translations): add missing key/value pairs (#7492) 2025-02-19 13:53:46 +01:00
Piyush Bhaskar
b1e29fbe31 chore(ui): improve styling of editor file tree (#7420) 2025-02-19 13:40:38 +01:00
Miloš Paunović
4b2113fb9b chore(ui): remove obsolete props (#7487) 2025-02-19 13:37:19 +01:00
Piyush Bhaskar
dc1728e420 fix(ui): fix the light theme contrast for editor. (#7438)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-19 13:31:47 +01:00
Miloš Paunović
8c83290d7a chore(deps): regular dependency update (#7485) 2025-02-19 12:54:49 +01:00
Miloš Paunović
212b3a82a9 fix(ui): improve handling of main filter labels on page load (#7456) 2025-02-19 12:08:53 +01:00
Miloš Paunović
1612c65ea3 fix(ui): properly cast value to boolean (#7455) 2025-02-19 11:29:07 +01:00
Miloš Paunović
6257b1508c chore(ui): disable click on search button if filtering is automatic (#7454) 2025-02-19 11:08:57 +01:00
yuri
f1670b8ac8 fix(webserver): allow special chars in label key (#7419) 2025-02-19 09:06:48 +01:00
brian.mulier
ce15ca1cac fix(ci): QEMU issue 2025-02-18 23:36:53 +01:00
Ludovic DEHON
a53395ab3f fix(core): http proxy was not passed to configuration
close #7449
2025-02-18 22:46:15 +01:00
Mathieu Gabelle
e0eaf675b2 refactor: return only command when no interpreter and no beforeCommands (#7452) 2025-02-18 18:59:04 +01:00
Ludovic DEHON
666f8a7ad9 fix(cicd): update concurrency key 2025-02-18 18:21:25 +01:00
brian.mulier
cebe8f3545 fix(tests): increase timeout on JdbcServiceLivenessCoordinatorTest.taskResubmitSkipExecution 2025-02-18 15:48:36 +01:00
brian.mulier
16e3830c9c fix(core): render delete property at the beginning in Docker task runner 2025-02-18 15:48:36 +01:00
brian.mulier
15b85ac952 fix(core): remove props with default from required in json schema to avoid validation errors
closes #7406
2025-02-18 15:48:36 +01:00
Miloš Paunović
db016a085f chore(ui): add arrows to namespace listing (#7448) 2025-02-18 13:54:07 +01:00
YannC
d5f6da10dd fix(): invert condition 2025-02-18 12:38:54 +01:00
brian.mulier
3723275817 fix(core): move back to the old worker thread pool because it was restricting it to 1 thread 2025-02-18 12:24:21 +01:00
YannC
ef29883138 fix(core): provide tenantId when looking for subflow (#7442) 2025-02-18 11:38:25 +01:00
Mathieu Gabelle
5ced9b6c4f refactor: remove rendering from Docker (#7439)
rendering is done in the CommandsWrapper so no need to render again in the task runner
2025-02-18 11:15:14 +01:00
Miloš Paunović
11f3629f38 chore(ui): add missing translations (#7444) 2025-02-18 11:11:50 +01:00
Miloš Paunović
d8c5a1e14c chore(ui): amend namespace flow creation label (#7443) 2025-02-18 11:09:55 +01:00
Miloš Paunović
cee2734817 fix(ui): improve modifying inputs from no code editor (#7440) 2025-02-18 10:36:15 +01:00
brian.mulier
13cb0fb96d fix(tests): logs are asynchronously inserted so we wait for them to be fully in 2025-02-18 10:19:58 +01:00
YannC
a020e3f3ae ci(test): force test if ref is a tag 2025-02-18 09:46:28 +01:00
brian.mulier
12fef24279 chore(deps): bump ui-libs to 0.0.141 2025-02-18 01:38:22 +01:00
rajatsingh23
4a55485cd6 fix(ui): better duration consistency on Gantt chart 2025-02-18 00:38:54 +01:00
brian.mulier
aed5734e17 chore(deps): bump ui-libs to 0.0.140 2025-02-18 00:25:39 +01:00
brian.mulier
d55ce16f57 fix(tests): wider maxDuration for retry-failed-flow-duration.yml 2025-02-18 00:05:14 +01:00
aeSouid
4abf3e9e6b Filter feat: (#7432)
Fix handle namespace column in filtering on scope
2025-02-17 14:43:03 +01:00
Bart Ledoux
fbd8934346 fix: restore red dot when there is news 2025-02-17 14:17:13 +01:00
Bart Ledoux
df6d339310 refactor: avoid en.json warning when building 2025-02-17 14:16:47 +01:00
YannC
a89ef71580 ci(publish-docker): attempts with command on qemu docker image 2025-02-17 11:15:14 +01:00
YannC
89c2d3951c ci(publish-docker): attempts with ubuntu 0.20 (#7431) 2025-02-17 10:48:10 +01:00
Mathieu Gabelle
e061a3617c refactor: introduce render in commands wrapper for property string (#7430) 2025-02-17 10:44:54 +01:00
Mathieu Gabelle
410cf0e389 fix: enable rendering of commands properties inside CommandsWrapper (#7381)
* fix: move commands to Property

migrate to Property in TaskCommands and CommandsWrapper
implement beforeCommand and interpreter
2025-02-17 09:49:49 +01:00
YannC
f783ab72b5 fix(test): attempt at making the test not flakky (#7400) 2025-02-17 09:20:26 +01:00
Anna Geller
72e78c8c31 Update ExecutionOutputs.java (#7394) 2025-02-17 09:20:10 +01:00
YannC
a716094a9d ci(): now run the file changes detection also in the workflow test 2025-02-17 09:15:26 +01:00
YannC
c75def0eac ci():allow release to be run 2025-02-17 09:10:08 +01:00
Piyush Bhaskar
c27d5ce480 chore(ui): improved Logs empty page (#7415) 2025-02-16 22:44:00 +01:00
aeSouid
49960d67ab chore(ui): improve filter parameters decoding for absolute date (#7409) 2025-02-14 14:51:13 +01:00
Loïc Mathieu
d9d2f86971 fix(core): ForEachItem inside an If task
Fixes #6801
2025-02-14 14:46:09 +01:00
Laibrez
95f5862201 chore(ui): improve execution outputs section (#7377)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-02-14 14:45:20 +01:00
AJ Emerich
e6419cf7a2 fix(ui): correct english translations (#7401)
Closes https://github.com/kestra-io/kestra-ee/issues/2913
2025-02-14 14:19:38 +01:00
Miloš Paunović
c1faeab068 chore(ui): make import flows button be a secondary one, styling-wise (#7405) 2025-02-14 12:59:44 +01:00
Aabhas Sao
dd3ff3e771 chore(ui): vertically center all elements in table rows (#7372)
Signed-off-by: Aabhas Sao <aabhassao0@gmail.com>
2025-02-14 11:52:37 +01:00
Miloš Paunović
e635338b47 chore(ui): improve colors of filter dropdown selector (#7403) 2025-02-14 11:47:10 +01:00
Loïc Mathieu
ddfed2e65c fix(core): taskrun list can be null 2025-02-14 11:45:33 +01:00
aeSouid
52fe6afae0 Filter feat: (#7389)
namespace mulitple choice in and not in
2025-02-14 11:37:57 +01:00
Miloš Paunović
a9ff2af159 fix(ui): properly handle the operation labels in filter component (#7399) 2025-02-14 10:50:16 +01:00
Miloš Paunović
bf19a8f5ad chore(ui): improve the labels behavior (#7397) 2025-02-14 10:30:46 +01:00
Loïc Mathieu
41712b8d80 feat(jdbc): consume multiple times the execution and worker task result queues
So that the executor use multiple threads to process messages.
2025-02-14 09:19:51 +01:00
Loïc Mathieu
f8a6e3fb04 feat(core, jdbc): use an elastic thread pool
To avoid using too many threads when it's not needed.
2025-02-14 09:19:39 +01:00
Ludovic DEHON
ad651cdc53 fix(ui): fix slack button on error toast 2025-02-13 19:27:20 +01:00
Miloš Paunović
f57a463983 chore(ui): improve breadcrumbs on namespace view (#7386) 2025-02-13 15:46:04 +01:00
Miloš Paunović
b3e66d8844 chore(ui): include autocompletion shortcut in the preview list (#7384) 2025-02-13 15:03:42 +01:00
Miloš Paunović
dc64d81dd0 chore(ui): add link to filtered triggers page from backfill dialog (#7380) 2025-02-13 12:17:53 +01:00
YannC
be30034143 ci(): moved build artifacts directly in docker workflow 2025-02-13 11:20:16 +01:00
YannC
f8d8e0998c ci(): fix outputs 2025-02-13 10:47:58 +01:00
Bart Ledoux
b8d0ae3ecf fix: changing language should work with providers too 2025-02-13 10:32:20 +01:00
Loïc Mathieu
def8fa3ff1 fix(cli): disable by default OTEL metrics 2025-02-13 10:21:18 +01:00
YannC
cfc0c9f9f2 ci(docker): revert fixed qemu version 2025-02-13 10:06:14 +01:00
YannC
49fe36250a ci(docker): fixed version of qemu 2025-02-13 10:00:32 +01:00
YannC
0c19f4c518 ci(): map outputs in build artifacts 2025-02-13 09:40:55 +01:00
YannC
1e6d553ce6 ci(): correct output in workflow build artifacts 2025-02-13 09:08:00 +01:00
YannC
1ebbdbbae6 fix(scheduler): delete trigger when flow is not found (#7366)
close #7312
2025-02-13 08:52:19 +01:00
Ludovic DEHON
5b29a0d070 fix(cicd): add mariadb plugins on docker image 2025-02-12 23:48:50 +01:00
Ludovic DEHON
239fb6a685 fix(core): handle http request with no content type 2025-02-12 19:48:50 +01:00
YannC
9924ba5ae2 fix(ui): refresh dashboard list (#7370)
close #2791
2025-02-12 17:44:24 +01:00
Loïc Mathieu
13ac335c93 feat(jdbc): clean more eagerly some queues based on configuration 2025-02-12 16:35:46 +01:00
Loïc Mathieu
9d717caf95 feat(jdbc): queues.updated should be set when the record is updated 2025-02-12 16:35:46 +01:00
Loïc Mathieu
1d65fd96b4 fix(jdbc): delete the executor state at the correct stage
Without this change, the executor state is deleted when the execution is terminated.
Then the last execution message is emitted, which goes again into the queue wich recreates the executor state.
2025-02-12 16:11:32 +01:00
Loïc Mathieu
b45a44bd35 fix(core): render list
Fixes #7253
2025-02-12 16:09:16 +01:00
YannC
bd9ba882fb test(webserver): flaky ExecutionControllerTest for kill (#7368) 2025-02-12 15:59:39 +01:00
Miloš Paunović
4b682931e0 chore(ui): add validation messages for custom dashboard crud actions (#7367) 2025-02-12 14:38:10 +01:00
YannC
d657f48278 ci: cleanup 2025-02-12 14:28:49 +01:00
Eduardo Goncalvez
714938bec6 chore(ui): add shadows to main charts (#7314)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-02-12 11:38:59 +01:00
Barthélémy Ledoux
73a9eb485f fix: make menu hierarchy get closer to the original designs (#7102)
* fix: make menu hierarchy get closer to the original designs

* smaller spacing in lower hierachy

* chore: add sidebar story
2025-02-12 10:52:14 +01:00
Miloš Paunović
4d9f2a130f fix(ui): make sure bulk selection is taking into account only selected items (#7362) 2025-02-12 10:47:41 +01:00
Barthélémy Ledoux
a040ec44b9 fix: trim bookmarks better (#7359) 2025-02-12 10:19:22 +01:00
Barthélémy Ledoux
b1c27b1869 fix: add proper ellipsis to sidemenu (#7361) 2025-02-12 10:19:06 +01:00
Loïc Mathieu
ed14493632 feat(core): add system.correlationId label to triggered executions 2025-02-12 10:12:56 +01:00
Miloš Paunović
3803f4ea4c chore(deps): regular dependency update (#7358) 2025-02-12 09:59:20 +01:00
Miloš Paunović
4992cf34fa chore(translations): amend theme key (#7356) 2025-02-12 09:23:03 +01:00
YannC
420afd7758 ci():fix frontend being skipped (#7355) 2025-02-12 09:21:59 +01:00
Shamar
c3852a2933 chore(ui): improve the doughnut chart legend (#7321)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-12 08:59:43 +01:00
YannC
41417adf8b ci(): fixed vulnerabilities-check.yml wrong character 2025-02-12 08:57:16 +01:00
Pravesh-Sudha
cd89cd8fb6 chore(ui): introduce filters bar to flow triggers page (#7292)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-02-12 08:45:47 +01:00
YannC
9b5e16a02d ci(): call reusable workflow correctly 2025-02-12 08:42:09 +01:00
Ludovic DEHON
f4b78755ad docs(core): better documentation on docker tasks 2025-02-11 22:12:43 +01:00
Ludovic DEHON
7bf42cb1cb fix(cicd): npm install in the wrong folder for vulnerabilities checks 2025-02-11 22:12:38 +01:00
Loïc Mathieu
7dbf86d54e fix(core): possible NPE when an execution has no labels 2025-02-11 18:01:27 +01:00
Loïc Mathieu
e7f551edc2 feat(jdbc): purge worker job queue early 2025-02-11 16:30:40 +01:00
Loïc Mathieu
31d2212419 feat(jdbc): puerge worker task result queue early 2025-02-11 16:30:40 +01:00
Loïc Mathieu
dd8ae5e642 feat(jdbc): purge execution queue early 2025-02-11 16:30:40 +01:00
Nicolas K.
0aadbab9c4 fix(core): add request.yaml file back (#7308)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-02-11 16:15:25 +01:00
YannC
49759da3b4 ci(): Remove if from test workflow 2025-02-11 15:48:20 +01:00
YannC
489e01cf38 ci(): Use correct workflow 2025-02-11 15:46:39 +01:00
YannC
1821ec27c9 ci(): Correct outputs 2025-02-11 15:44:01 +01:00
YannC
a6918b1f34 ci(): Remove unnecessary secrets 2025-02-11 15:37:49 +01:00
YannC
17693c7380 ci(): Missing GOOGLE_SERVICE_ACCOUNT secrets 2025-02-11 15:27:33 +01:00
YannC
806135e3e9 ci(): Remove GITHUB_TOKEN from secrets definition 2025-02-11 15:25:27 +01:00
YannC
7381b32e16 ci(): rewrite release part 2025-02-11 15:22:33 +01:00
YannC
7b175dac04 ci(): trigger main ci on dispatch 2025-02-11 14:19:48 +01:00
YannC
2c3de87dcc ci(): trigger main ci also on develop branch 2025-02-11 14:19:19 +01:00
YannC
7b9efa08a6 fix(h2): remove indenting in sql file (#7306) 2025-02-11 13:52:38 +01:00
Piyush Bhaskar
1a96fe4b4b chore(ui): improve styling of main filter tags (#7305)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-02-11 13:51:24 +01:00
YannC
938de9b222 fix(core): do not validate subflow if namespace or id is pebble (#7294)
close #7271
2025-02-11 13:44:30 +01:00
Florian Hussonnois
9505c48e55 chore: remove some compilation warnings 2025-02-11 13:04:38 +01:00
YannC
fe197ebd21 ci(): run translations only if necessary 2025-02-11 12:52:40 +01:00
YannC
c5b6d6b2a7 ci(): moved multiple actions to reusable workflows (#7299) 2025-02-11 11:47:56 +01:00
dependabot[bot]
90da5f7cf7 build(deps): bump org.opensearch.client:opensearch-java
Bumps [org.opensearch.client:opensearch-java](https://github.com/opensearch-project/opensearch-java) from 2.19.0 to 2.20.0.
- [Release notes](https://github.com/opensearch-project/opensearch-java/releases)
- [Changelog](https://github.com/opensearch-project/opensearch-java/blob/v2.20.0/CHANGELOG.md)
- [Commits](https://github.com/opensearch-project/opensearch-java/compare/v2.19.0...v2.20.0)

---
updated-dependencies:
- dependency-name: org.opensearch.client:opensearch-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 11:45:27 +01:00
dependabot[bot]
4c5638d957 build(deps): bump io.micronaut.platform:micronaut-platform
Bumps [io.micronaut.platform:micronaut-platform](https://github.com/micronaut-projects/micronaut-platform) from 4.7.4 to 4.7.5.
- [Release notes](https://github.com/micronaut-projects/micronaut-platform/releases)
- [Commits](https://github.com/micronaut-projects/micronaut-platform/compare/v4.7.4...v4.7.5)

---
updated-dependencies:
- dependency-name: io.micronaut.platform:micronaut-platform
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 11:45:09 +01:00
dependabot[bot]
8260dc6033 build(deps): bump io.pebbletemplates:pebble from 3.2.2 to 3.2.3
Bumps [io.pebbletemplates:pebble](https://github.com/PebbleTemplates/pebble) from 3.2.2 to 3.2.3.
- [Release notes](https://github.com/PebbleTemplates/pebble/releases)
- [Commits](https://github.com/PebbleTemplates/pebble/compare/3.2.2...3.2.3)

---
updated-dependencies:
- dependency-name: io.pebbletemplates:pebble
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 11:44:52 +01:00
dependabot[bot]
48320a89d8 build(deps): bump com.microsoft.playwright:playwright
Bumps [com.microsoft.playwright:playwright](https://github.com/microsoft/playwright-java) from 1.49.0 to 1.50.0.
- [Release notes](https://github.com/microsoft/playwright-java/releases)
- [Commits](https://github.com/microsoft/playwright-java/compare/v1.49.0...v1.50.0)

---
updated-dependencies:
- dependency-name: com.microsoft.playwright:playwright
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 11:44:16 +01:00
dependabot[bot]
55bdfac7f9 build(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.33.11 to 0.34.0.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.33.11...v0.34.0)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-11 11:43:25 +01:00
Loïc Mathieu
f599f25755 chore(core): refactor file related Pebble function to share code 2025-02-11 11:39:20 +01:00
Loïc Mathieu
8de839f326 chore(core): rename fileEmpty Pebble function to isFileEmpty 2025-02-11 11:39:20 +01:00
Ludovic DEHON
25370d10bd fix(core): http client was not using deprecated setter 2025-02-11 11:21:26 +01:00
Nicolas K.
b59d36a90e fix(core): flacky trigger with backfile test (#7295)
* fix(core): flacky trigger with backfile test

* fix(core): flacky schedule test

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-02-11 11:07:38 +01:00
Nicolas K.
a5483a0d4c fix(makefile): build plugin now build main branch too (#7297)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-02-11 11:02:28 +01:00
ben8t
9863e88230 Add core plugin sanity checks (#6904)
* [feature] add core plugin sanity checks

* feat: namespace files task test

* fix: formatting

* fix: sanity checks to use assert

* fix: core sanity flows

* tests: add runner class to run sanity checks flows

* [refactor] remove request sanity check as not a core task (already in fs plugin)

* [refactor] rename file and namespace for sanity checks

* [refactor] update path

---------

Co-authored-by: Will Russell <wrussell@kestra.io>
Co-authored-by: Will Russell <will@wrussell.co.uk>
Co-authored-by: Mathieu Gabelle <mgabelle@kestra.io>
2025-02-11 10:51:59 +01:00
ByronBlaze
88a5cd69e3 feat(core): Added FileEmpty & FileExists Pebble Functions 2025-02-11 10:49:31 +01:00
yuri
ec73d58649 fix(ui): match chart colors (#7290)
Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
2025-02-11 09:38:33 +01:00
Bart Ledoux
0becf74339 fix: collapsed menu colors in light mode 2025-02-11 09:33:54 +01:00
Miloš Paunović
bfcfb2ac16 chore(ui): make action columns always visible on executions and flows (#7291) 2025-02-11 08:17:29 +01:00
Anna Geller
27f9a505af fix: force run docs (#7289) 2025-02-10 20:31:24 +01:00
Nicolas K.
99db3f35b7 fix(core): #7227 cron schedule with timezone and backfile not triggering (#7285)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-02-10 17:56:05 +01:00
YannC
c53239470d fix(ci): inputs instead of secrets 2025-02-10 16:27:55 +01:00
YannC
c3e830c2c7 fix(ci): Workflow test ouptputs + changes for codecov 2025-02-10 16:25:00 +01:00
Ludovic DEHON
9790f02376 fix(cicd): add npm install on vulnerabilities check 2025-02-10 15:56:53 +01:00
Miloš Paunović
899a1f6f17 chore(ui): improve flow description coloring (#7282) 2025-02-10 15:51:59 +01:00
YannC
9455643660 fix(ci): pass correctly secret + cleanup 2025-02-10 15:17:31 +01:00
dependabot[bot]
8a3f413236 build(deps): bump software.amazon.awssdk:bom from 2.30.11 to 2.30.16
Bumps software.amazon.awssdk:bom from 2.30.11 to 2.30.16.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 15:01:51 +01:00
YannC
4986d68f57 fix(ci): removed useless name in action files 2025-02-10 14:37:17 +01:00
YannC
09ff9d4054 fix(ci): missing checkout in release step 2025-02-10 13:13:48 +01:00
aeSouid
e910685d57 Fix search bar: (#7279)
-fix date picker layout
-change the not_in operation traduction

Fix search bar:
-fix search bar when closing date picker
2025-02-10 13:12:06 +01:00
dependabot[bot]
5aa73ec48a build(deps): bump com.google.cloud:libraries-bom from 26.53.0 to 26.54.0
Bumps [com.google.cloud:libraries-bom](https://github.com/googleapis/java-cloud-bom) from 26.53.0 to 26.54.0.
- [Release notes](https://github.com/googleapis/java-cloud-bom/releases)
- [Changelog](https://github.com/googleapis/java-cloud-bom/blob/main/release-please-config.json)
- [Commits](https://github.com/googleapis/java-cloud-bom/compare/v26.53.0...v26.54.0)

---
updated-dependencies:
- dependency-name: com.google.cloud:libraries-bom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-10 12:49:01 +01:00
YannC
5dcd27c064 fix(ci): disabled previous generate translations CI 2025-02-10 12:36:00 +01:00
YannC
9ba27b9bd5 fix(ci): workflow test correct previous job status usage 2025-02-10 12:35:06 +01:00
YannC
549da52afa ci(): simplification (#7202)
* ci():
- split in multiples actions
- simplify translation script
- simplify front build
- run test for back/front only when needed

* fix(): token prop

* ui(translation): new word

* fix(): correct usage of paths-filter action

* fix(): first iteration of new main workflow

* chore(translations): auto generate values for languages other than english

---------

Co-authored-by: GitHub Action <actions@github.com>
2025-02-10 12:24:25 +01:00
Miloš Paunović
d486d78200 chore(ui): disable saving flow actions if there are errors (#7278) 2025-02-10 11:59:51 +01:00
aeSouid
a7a134a050 Fix search flow by query: (#7277)
add new condition of the field is query
2025-02-10 11:54:39 +01:00
GitHub Action
e0f4ab735d chore(translations): auto generate values for languages other than english 2025-02-10 10:49:34 +00:00
Barthélémy Ledoux
b052925b04 feat: give blueprint pages a distinct name (#7254)
* feat(translations): add new blueprint labels for flows, apps, and dashboard

* feat(translations): update left menu titles for blueprints

* chore(translations): auto generate values for languages other than english

* chore(translations): auto generate values for languages other than english

---------

Co-authored-by: GitHub Action <actions@github.com>
2025-02-10 11:48:24 +01:00
Piyush Bhaskar
c3443ab99a feat(ui): center view when switching between topology modes (#7257) 2025-02-10 11:11:39 +01:00
Bart Ledoux
ec967a57fb fix: use the udpated labelsFromQuery in labels 2025-02-10 10:56:35 +01:00
Piyush Bhaskar
9ba13ae994 chore(ui): tweak the video container ratio in the docs sidebar (#7260) 2025-02-10 10:35:54 +01:00
Loïc Mathieu
be1871430e feat(core, jdbc): directly process WorkerTaskResult from flowable tasks
And other places in the ExecutorService when we create them when processing the execution queue.

Fixes #5521
2025-02-10 10:03:00 +01:00
Dheeraj_R_Gowda
39257bf3bb chore(ui): align chart duration label with switch toggle (#7258) 2025-02-10 09:35:10 +01:00
Aabhas Sao
346100c86c chore(ui): align chart duration label with switch toggle (#7259) 2025-02-10 09:24:36 +01:00
Ludovic DEHON
0c3ed3b751 feat(cicd): restore codeql weekly 2025-02-08 00:48:11 +01:00
Ludovic DEHON
1bbe0e659e feat(cicd): don't mark failed for front end test 2025-02-07 20:28:31 +01:00
Ludovic DEHON
123f748030 feat(cicd): add test analysis on frontend 2025-02-07 18:30:27 +01:00
Ludovic DEHON
d0b53d217d feat(cicd): add unit test for js (#7246) 2025-02-07 18:23:08 +01:00
Bart Ledoux
6f7bb80c6d fix: make dashboard tables the right color 2025-02-07 16:39:29 +01:00
Loïc Mathieu
1eacb447d5 feat(core): simplify Pebble error messages 2025-02-07 14:59:10 +01:00
Ludovic DEHON
3f429ef0a8 feat(cicd): add codecov flags 2025-02-07 14:27:59 +01:00
Florian Hussonnois
dc8576afed fix(ci): fix and remove unecessary setps in set version workflows 2025-02-07 11:51:07 +01:00
Bart Ledoux
c31609a12e chore: update theme colors 2025-02-07 11:44:25 +01:00
Loïc Mathieu
84c07ef011 fix(webserver,core): move the LogStreamService in core so EE can use it for apps 2025-02-07 11:40:21 +01:00
MilosPaunovic
e335b76b3c chore(ui): check for missing property on update metadata 2025-02-07 11:27:14 +01:00
Bart Ledoux
95b94f3961 fix: labels should not be purple if inactive 2025-02-07 10:46:33 +01:00
Bart Ledoux
e0ee26a9c0 fix: add comment on i18n code 2025-02-07 10:07:15 +01:00
Florian Hussonnois
480fc75897 feat(ci): add workflows for release process
* move scripts to folder dev-tools
* add new workflow gradle-release.yml
* add new workflow setversion-tag.yml
* rename existing workflow
2025-02-07 09:57:06 +01:00
Nicolas K.
c8d7e5f357 feat(core): add sanity check to request task (#7230)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-02-07 09:34:09 +01:00
咬轮猫
792f7b6911 fix(ui): amend the language switching issue (#7235) 2025-02-07 09:15:52 +01:00
Loïc Mathieu
2a95aee968 feat(webserver): use a shared queue consumer from the log follow endpoint 2025-02-07 09:15:42 +01:00
amartknez
129ba6abe4 chore(ui): initial work on filter persistency (#7234)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-02-07 09:09:06 +01:00
Ludovic DEHON
ab2a0108a9 feat(cicd): add codecov bundle analysis 2025-02-07 09:08:37 +01:00
Ludovic DEHON
03dccd1444 feat(cicd): codecov + tests report 2025-02-07 08:45:26 +01:00
Loïc Mathieu
4c401ce0c0 feat(webserver): improvement to ExecutionStreaminService 2025-02-06 17:30:14 +01:00
malay.worldref@gmail.com
13be8b8125 feat(webserver): optimize queue usage for follow endpoints 2025-02-06 17:30:14 +01:00
GitHub Action
440faa7cd1 chore(translations): auto generate values for languages other than english 2025-02-06 16:10:14 +00:00
aeSouid
5a8a4e99d7 Change the filter params (#7051)
* Feat Filter:
Change the filters to the new search format
2025-02-06 17:09:32 +01:00
aeSouid
296e1a67a5 Feat Search: (#6910)
New search with operation for all /search endpoints :
- define list  of operation and fields.
- Add custom parser for filter[field][operation]=value format
- create new Annotation @QueryFilterFormat to bind to specfic pojo
- Implement new abstract repo search method
2025-02-06 17:08:15 +01:00
Loïc Mathieu
ecd36ec2a4 fix(core): possible NPE on LabelService.containsAll 2025-02-06 16:26:11 +01:00
rajatsingh23
ca9b90a0ec chore(ui): show executions per namespace only if there are 2 or more items for chart (#7216)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-02-06 15:22:23 +01:00
Piyush Bhaskar
37e337a657 chore(ui): only show warning on bulk execution deletion if nonTerminated is true (#7211)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-02-06 15:12:16 +01:00
Miloš Paunović
157f78fae0 chore(ui): generate random flow ID using combination of animal names and numbers (#7223)
* chore(ui): creating a flow from the namespace view should use it's ID as the designated value

* chore(ui): generate random flow ID using combination of animal names and numbers
2025-02-06 14:55:50 +01:00
Pravesh-Sudha
7158a0c98f chore(ui): amended global pagination coloring (#7201)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-02-06 13:11:00 +01:00
Miloš Paunović
753308a341 fix(ui): prevent doubling the executions chart on flow overview (#7219) 2025-02-06 11:58:05 +01:00
Loïc Mathieu
21aebe4e77 feat(core): allow loading secrets from a different namspace
Fixes #5970
2025-02-06 10:42:17 +01:00
Miloš Paunović
959e80efa8 chore(ui): re-order the list of optional columns (#7213) 2025-02-06 09:32:56 +01:00
Miloš Paunović
bba612ef9b feat(ui): add script to help with creation of release notes (#7212) 2025-02-06 09:18:08 +01:00
nKwiatkowski
a0483dc201 fix(core): request option doesn't initialize properly 2025-02-05 19:03:06 +01:00
Miloš Paunović
2f3d7f573b chore(ui): replace the visual for no tabs opened on namespace editor (#7204) 2025-02-05 18:37:13 +01:00
Nicolas K.
2e09777790 fix(core): #7181 log level rendered as string (#7198)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-02-05 15:35:29 +01:00
Miloš Paunović
0b1eda0f03 chore(ui): consolidate markdown files (#7197) 2025-02-05 12:51:31 +01:00
Miloš Paunović
1ee6402fa2 chore(translations): remove extra keys from translation files (#7193) 2025-02-05 12:23:34 +01:00
Miloš Paunović
71933352b6 chore(ui): remove the option to change editor theme separately (#7192)
* chore(ui): remove obsolete log statements from console

* chore(ui): remove the option to change editor theme separately
2025-02-05 12:18:29 +01:00
GitHub Action
cb7ed73bea chore(translations): auto generate values for languages other than english 2025-02-05 09:56:50 +00:00
Miloš Paunović
5f13d5b2aa chore(ui): rename advanced properties to other in no code (#7190) 2025-02-05 10:56:11 +01:00
GitHub Action
e4973c3319 chore(translations): auto generate values for languages other than english 2025-02-05 09:53:47 +00:00
Miloš Paunović
abc3372161 chore(ui): rename advanced properties to other in no code (#7189) 2025-02-05 10:53:14 +01:00
Bart Ledoux
9619dca764 fix(theme): make plugin rendering reactive to theme switch 2025-02-05 10:53:02 +01:00
Barthélémy Ledoux
e80b2011de feat: theme switch to "theme switch" the charts (#7151)
* chore: store the theme in the store

* use the new theme in charts

* use the theme value in more places

* create a useTheme composable

* create the useScheme composable

* restore nodata
2025-02-05 10:43:04 +01:00
GitHub Action
86f3acace3 chore(translations): auto generate values for languages other than english 2025-02-05 09:33:27 +00:00
Piyush Bhaskar
b6c9f50503 feat(ui): add option to choose visible columns in flow and execution listings (#6932)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-05 10:32:37 +01:00
Piyush Bhaskar
2e9938806a feat(ui): Docs markdown alert styled based on alert level in product. (#6818)
* feat(ui): Align the CSS or style configuration so that all documentation components (Docs, plugin docs, blueprints) use the same markdown style.

* Remove alert styling from DocsLayout since it has been handled within Alert.vue using ---ks variables.

* revert Input_Count.

---------

Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-05 10:13:30 +01:00
Piyush Bhaskar
13bc0de9dc chore(ui): improve the states options list inside filter values (#7176)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-05 09:03:25 +01:00
Piyush Bhaskar
da7509ce30 chore(ui): update the visual of no data component (#7179)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-02-05 08:45:52 +01:00
Shruti Mantri
15aeee3d8b chore(ui): improve the example for not condition (#6820) 2025-02-05 08:35:21 +01:00
dependabot[bot]
42920508b7 build(deps-dev): bump @shikijs/markdown-it from 2.3.0 to 2.3.1 in /ui (#7184)
Bumps [@shikijs/markdown-it](https://github.com/shikijs/shiki/tree/HEAD/packages/markdown-it) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/shikijs/shiki/releases)
- [Commits](https://github.com/shikijs/shiki/commits/v2.3.1/packages/markdown-it)

---
updated-dependencies:
- dependency-name: "@shikijs/markdown-it"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 08:32:26 +01:00
dependabot[bot]
f45c703fd9 build(deps): bump shiki from 2.3.0 to 2.3.1 in /ui (#7183)
Bumps [shiki](https://github.com/shikijs/shiki/tree/HEAD/packages/shiki) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/shikijs/shiki/releases)
- [Commits](https://github.com/shikijs/shiki/commits/v2.3.1/packages/shiki)

---
updated-dependencies:
- dependency-name: shiki
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 08:31:04 +01:00
dependabot[bot]
872c70fe37 build(deps): bump posthog-js from 1.215.2 to 1.215.3 in /ui (#7182)
Bumps [posthog-js](https://github.com/PostHog/posthog-js) from 1.215.2 to 1.215.3.
- [Release notes](https://github.com/PostHog/posthog-js/releases)
- [Changelog](https://github.com/PostHog/posthog-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/PostHog/posthog-js/compare/v1.215.2...v1.215.3)

---
updated-dependencies:
- dependency-name: posthog-js
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-02-05 08:30:53 +01:00
brian.mulier
bbb03b288b fix(ui): global plugin doc with new redesign + auto-expand properties initially 2025-02-04 21:58:08 +01:00
Florian Hussonnois
8d8b7e7a67 fix(core): make flow/namespace variables available for input expr
related-to: kestra-io/kestra-ee#2826
2025-02-04 16:55:49 +01:00
GitHub Action
a9042fb27b chore(translations): auto generate values for languages other than english 2025-02-04 15:00:55 +00:00
YannC
5ff5667231 feat(ui): now display an error when SSE failed (#7177)
* feat(ui): now display an error when SSE failed

close #1303

* chore(translations): auto generate values for languages other than english

---------

Co-authored-by: GitHub Action <actions@github.com>
2025-02-04 16:00:27 +01:00
Florian Hussonnois
42ad09d79f chore: add utility script to check for plugin artifacts 2025-02-04 15:58:12 +01:00
Loïc Mathieu
30db740de8 fix(core): retry flaky test AbstractRunnerTest.restartForEachItem
It is flaky on CI but never fail locally even with 100 repetitions
2025-02-04 14:22:20 +01:00
Loïc Mathieu
20d55122e7 fix(core): retry test HttpClientTest.getText
It is flaky in CI but never fail locally even with 100 repetitions
2025-02-04 14:22:20 +01:00
Miloš Paunović
3294c358fa fix(ui): align dashboard button label to icon (#7175) 2025-02-04 14:14:58 +01:00
Karthik73965
42899d30d1 chore(ui): add skeleton loaders to dashboard cards (#6602)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-04 13:56:22 +01:00
GitHub Action
6ba71712a8 chore(translations): auto generate values for languages other than english 2025-02-04 12:04:11 +00:00
Miloš Paunović
36b8ef866d fix(ui): amend translation string for no results (#7172) 2025-02-04 13:03:45 +01:00
GitHub Action
fff8d630c5 chore(translations): auto generate values for languages other than english 2025-02-04 11:41:26 +00:00
Aabhas Sao
bc630684b1 chore(ui): enable command palette for monaco editor (#6944)
Signed-off-by: Aabhas Sao <aabhassao0@gmail.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-04 12:40:59 +01:00
Loïc Mathieu
f8b64cfbdf fix(core): retry flaky test AbstractRunnereTest.concurrencyQueuePause
It is flaky on CI but cannot be fail locally even with 100 repetitions.
2025-02-04 12:34:43 +01:00
Miloš Paunović
4ee8b33aeb chore(deps): regular dependency update (#7171) 2025-02-04 12:27:22 +01:00
Piyush Bhaskar
68074723c4 chore(ui): amend color of the input length counter (#6990) 2025-02-04 12:09:32 +01:00
GitHub Action
52159ee647 chore(translations): auto generate values for languages other than english 2025-02-04 11:02:44 +00:00
Piyush Bhaskar
d697e5dc67 feat(ui): add keyboard shortcuts dialog to editor (#6628)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-04 12:01:04 +01:00
brian.mulier
21733d8497 fix(ui): null-safe search filters 2025-02-04 11:40:44 +01:00
rajatsingh23
0501d29255 chore(ui): show each plugin deprecation warning in new line (#6839)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-02-04 11:22:19 +01:00
Loïc Mathieu
560703fde4 fix(core): retry flaky test AbstractRunnerTest.restartFailedThenFailureWithGlobalErrors
This test is flaky on CI but never locally even with 100 repetitions.
2025-02-04 10:38:42 +01:00
Loïc Mathieu
671eb2b57e feat(jdbc-*): delete subflow_executions table
Fixes #6831
2025-02-04 10:34:39 +01:00
Miloš Paunović
5cc30558c2 fix(ui): amend pagination on namespace flows listing (#7163) 2025-02-04 10:18:04 +01:00
Loïc Mathieu
5a46204394 chore(core): small perf improvements to MapUtils 2025-02-04 10:06:58 +01:00
Ludovic DEHON
c918276103 fix(core): process runner are not serialized correctly on worker
close #7053
2025-02-03 21:27:04 +01:00
YannC
04dd038b0f feat(core): new Publish task for metrics (#7122)
* feat(core): new Publish task for metrics

* fix(): review fixes
2025-02-03 16:37:16 +01:00
Bart Ledoux
1bbe48fe5b fix: bring back hover in main menu 2025-02-03 15:40:12 +01:00
Bart Ledoux
9499ee2c27 fix: setup docId for blueprints 2025-02-03 15:15:34 +01:00
Piyush Bhaskar
05bbaa4f00 fix(ui): Custom Dashboard name overflows. (#7124)
* fix(ui): Custom Dashboard name overflows.

* fix(ui): avoid dashboard button being too long

---------

Co-authored-by: YannC <ycoornaert@kestra.io>
2025-02-03 14:37:02 +01:00
brian.mulier
fa5ef3b4c6 fix(ui): switching from custom Flow blueprints tab to dashboard was not working 2025-02-03 14:00:13 +01:00
Miloš Paunović
e927a1f784 fix(ui): get the string fields in no code to use editor and have auto completion back (#7150) 2025-02-03 12:19:31 +01:00
dependabot[bot]
36306495e4 build(deps): bump org.owasp.dependencycheck from 12.0.1 to 12.0.2
Bumps org.owasp.dependencycheck from 12.0.1 to 12.0.2.

---
updated-dependencies:
- dependency-name: org.owasp.dependencycheck
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 12:18:02 +01:00
MilosPaunovic
594d005168 chore(ui): properly pass a prop related to saved searches 2025-02-03 11:52:40 +01:00
Miloš Paunović
c992496fb0 feat(ui): multiple improvements of no code editor (#7146)
* refactor(ui): prevent multiple warning in console by adding inheritAttrs properly

* chore(ui): make plugin selector field not clearable

* feat(ui): allow re-ordering of array items

* fix(ui): remove concurrency when limit set to 0
2025-02-03 11:35:03 +01:00
Bart Ledoux
e15eb55877 fix: sidemenu bring back the gray hover 2025-02-03 11:33:20 +01:00
Bart Ledoux
85ebf49b68 fix: enterprise edition tag in light mode 2025-02-03 11:30:48 +01:00
dependabot[bot]
3a0beabe4f build(deps): bump com.gradleup.shadow from 8.3.5 to 8.3.6
Bumps [com.gradleup.shadow](https://github.com/GradleUp/shadow) from 8.3.5 to 8.3.6.
- [Release notes](https://github.com/GradleUp/shadow/releases)
- [Commits](https://github.com/GradleUp/shadow/compare/8.3.5...8.3.6)

---
updated-dependencies:
- dependency-name: com.gradleup.shadow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 11:28:29 +01:00
dependabot[bot]
d769b7aad7 build(deps): bump flyingSaucerVersion from 9.11.2 to 9.11.3
Bumps `flyingSaucerVersion` from 9.11.2 to 9.11.3.

Updates `org.xhtmlrenderer:flying-saucer-core` from 9.11.2 to 9.11.3
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.2...v9.11.3)

Updates `org.xhtmlrenderer:flying-saucer-pdf` from 9.11.2 to 9.11.3
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.2...v9.11.3)

---
updated-dependencies:
- dependency-name: org.xhtmlrenderer:flying-saucer-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.xhtmlrenderer:flying-saucer-pdf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 11:28:22 +01:00
dependabot[bot]
f1f0d31864 build(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.33.9 to 0.33.11.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.33.9...v0.33.11)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 11:26:57 +01:00
dependabot[bot]
bd0e4a5f48 build(deps): bump com.azure:azure-sdk-bom from 1.2.30 to 1.2.31
Bumps [com.azure:azure-sdk-bom](https://github.com/azure/azure-sdk-for-java) from 1.2.30 to 1.2.31.
- [Release notes](https://github.com/azure/azure-sdk-for-java/releases)
- [Commits](https://github.com/azure/azure-sdk-for-java/compare/azure-sdk-bom_1.2.30...azure-sdk-bom_1.2.31)

---
updated-dependencies:
- dependency-name: com.azure:azure-sdk-bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 11:11:33 +01:00
dependabot[bot]
d50f631fb6 build(deps): bump software.amazon.awssdk:bom from 2.30.6 to 2.30.11
Bumps software.amazon.awssdk:bom from 2.30.6 to 2.30.11.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-03 11:09:32 +01:00
yuri
26c15a444d fix(ui): amend log lines in Firefox (#7133) 2025-02-03 10:18:19 +01:00
Bart Ledoux
97d12f9bc3 chore: add a test for firefox weird wrap 2025-02-03 10:15:53 +01:00
yuri1969
ae05de4a1c fix(cli): print help on missing parameters
Missing required positional parameters caused just a stacktrace print.

Now such cases print the error message acompanied by command's help.

Examples:

* `./kestra flow namespace update`
* `./kestra flow dot`
2025-02-03 10:06:48 +01:00
yuri1969
625135959c chore(core): fix various compilation warnings
Fixed clear Java compilation warnings.
2025-02-03 09:36:50 +01:00
Loïc Mathieu
e6827f2736 fix(core): remove the dynamic property patterns 2025-02-03 09:31:32 +01:00
Anna Geller
91bf50e837 Update dashboard_home.md 2025-02-02 14:11:14 +01:00
Piyush Bhaskar
64c8e0295c feat(ui): Add a link to the filtered Executions table. (#7129) 2025-02-01 23:01:02 +01:00
brian-mulier-p
1565f3361a fix(ui): restore namespace filter manual typing & various improvements (#7127) 2025-02-01 10:08:14 +01:00
Florian Hussonnois
e2b67f253a ci: fix release workflows 2025-01-31 19:34:18 +01:00
brian.mulier
db0422b142 chore(deps): bump ui-libs to v0.0.125 2025-01-31 18:13:48 +01:00
Nicolas K.
b1b80acbca feat(build): add script to makefile (#7125)
---------
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
Co-authored-by: Ludovic DEHON <tchiot.ludo@gmail.com>
2025-01-31 16:34:11 +01:00
Barthélémy Ledoux
4f9b7f7417 fix: make table links primary instead of purple (#7106) 2025-01-31 16:23:05 +01:00
Barthélémy Ledoux
83c7b2e663 fix: use the proper variable for select header in table (#7107) 2025-01-31 16:22:43 +01:00
GitHub Action
dee76c038a chore(translations): auto generate values for languages other than english 2025-01-31 12:51:00 +00:00
Miloš Paunović
310210286d feat(ui): add finally block to no code editor (#7123) 2025-01-31 13:49:56 +01:00
Florian Hussonnois
555b769aa2 fix(ci): update scripts/workflows for plugins 2025-01-31 12:05:05 +01:00
YannC
e527f0133a fix(ui): Remove useless double click row action
close #7000
2025-01-31 11:57:18 +01:00
Bart Ledoux
631a016e06 fix: avoid clearing selected value on every error
closes #7115
2025-01-31 11:48:49 +01:00
Bart Ledoux
3a8b24edae fix: remove Labels tag type warning 2025-01-31 11:19:15 +01:00
Bart Ledoux
65dd4f9fd6 fix: remove FE warnings on flow edition 2025-01-31 11:17:34 +01:00
Bart Ledoux
a4dcb8dcd6 fix: protect axios JSON parsing 2025-01-31 11:08:33 +01:00
Miloš Paunović
00aa28fc41 feat(ui): allow task re-ordering from no code editor (#7120) 2025-01-31 10:55:05 +01:00
Bart Ledoux
3c7e26c88b build: prevent corepack crash 2025-01-31 10:02:27 +01:00
Loïc Mathieu
4e753c7b98 fix(core): retry flaky test TimeoutTest.timeout()
As its failure cannot be reproduced locally even with 100 repetitions, there is no other choice than retrying it.
2025-01-31 09:47:00 +01:00
Bart Ledoux
1fc0b21071 fix: make sure normal single line table dont' push the build #7018 2025-01-30 22:23:25 +01:00
Bart Ledoux
f17b5802b5 fix: plugin header icon for ticket #4252 2025-01-30 22:22:04 +01:00
Barthélémy Ledoux
5389ec78a1 fix: use the new charts in the flows page (#6970) 2025-01-30 21:24:23 +01:00
Loïc Mathieu
6190d91134 fix(core): subflow labels must not be overriden by parent flow ones 2025-01-30 17:18:28 +01:00
Loïc Mathieu
96f4466f1d fix(cli): retry flaky test FlowCreateOrUpdateCommandTest.runWithDelete.
Adding a retry because it cannot be reproduce to fail locally even with 100 repetitions.
2025-01-30 17:14:01 +01:00
Ludovic DEHON
6ee0e86ca3 fix(core): http request with head and 404 and sending the wrong exception
close #4658
2025-01-30 17:04:51 +01:00
Loïc Mathieu
db4f186bdc fix(core): retry flaky test AbstractRunnerTest.multipleConditionTriggerFailed()
As the failure cannot be reproduce locally even with 100 repetitions of the test.
2025-01-30 16:43:50 +01:00
Loïc Mathieu
9b2c4c9a13 fix(core): subflow validation didn't work anymore 2025-01-30 16:17:30 +01:00
Bart Ledoux
7a37a950bf chore: update palette 2025-01-30 15:58:01 +01:00
Barthélémy Ledoux
a7df59c8bf feat: show a lock on EE only pages (#7093) 2025-01-30 15:54:23 +01:00
Miloš Paunović
5b6fbe9609 feat(ui): improve the task array component (#7095)
* feat(ui): improve the task array component

* chore(ui): replace existing task on editing during creation instead of re-adding them
2025-01-30 14:25:30 +01:00
Florian Hussonnois
d80de4410d fix(ui): fix missing param kind for blueprint in flow editor (#7087)
fix: #7087
2025-01-30 14:16:19 +01:00
Bart Ledoux
0e09f6821c fix: transfer utm parameters correctly 2025-01-30 12:48:53 +01:00
Bart Ledoux
157566300d fix: unlock audit logs in execution 2025-01-30 12:43:54 +01:00
AJ Emerich
e1a4f2e2fc fix(docs): remove custom dashboard website component
https://github.com/kestra-io/kestra/issues/7085
2025-01-30 12:13:55 +01:00
Miloš Paunović
cd822bd349 chore(ui): properly check the existence of fields inside schema
* chore(ui): remove unnecessary binding of listeners

* chore(ui): check the existence of fields
2025-01-30 11:41:15 +01:00
Ludovic DEHON
84447fd428 feat(ui): display attempts status on taskrun on left
close #7030
2025-01-30 11:39:22 +01:00
Miloš Paunović
78060ec2f8 chore(ui): move apps link in left menu just below the flows (#7063) 2025-01-30 11:34:10 +01:00
Miloš Paunović
646c8fa773 fix(ui): amend no code editor breadcrumbs issue (#7054)
* chore(ui): task array component to have margins between lines

* fix(ui): amend no code editor breadcrumbs issue
2025-01-30 11:33:57 +01:00
Bart Ledoux
7a299e51f8 fix: remove some warnings 2025-01-30 11:10:44 +01:00
Bart Ledoux
accbafe132 fix: remove the topbar from namepasce/flows 2025-01-30 11:10:32 +01:00
Bart Ledoux
4915465573 fix(demo): make button clickable with utm link 2025-01-30 11:09:39 +01:00
Bart Ledoux
4234c76b03 build: try and fix FE CI 2025-01-30 10:56:32 +01:00
Loïc Mathieu
03caf38251 fix(cli): repeate flaky tests FileChangedEventListenerTest
This is inherently racy as it's async and watch the filesystem which cannot be done reliabily.
2025-01-30 10:55:17 +01:00
Loïc Mathieu
1931300e98 chore(deps): downgrade Protobuf to 3.25.5
3.25.6 is not compatible with 3.25.5 and Orc still uses 3.25.5
2025-01-30 10:40:43 +01:00
Miloš Paunović
450310b6a5 feat(ui): multiple improvements of no code editor (#7076)
* fix(ui): allow creation of multiple tasks from the no code editor

* chore(ui): make input text be of textarea type for resizability

* chore(ui): allow to add task from topology either before or after the target one
2025-01-30 10:31:09 +01:00
Loïc Mathieu
2777b34385 fix(script): AbstractExecScript.injectDefaults should throw IllegalVariableEvaluationException 2025-01-30 09:57:51 +01:00
Florian Hussonnois
d4d8e326e4 ci: fix workflow docker for all plugins 2025-01-29 17:45:50 +01:00
Florian Hussonnois
fde739a3be ci: fix workflow docker 2025-01-29 17:35:24 +01:00
Florian Hussonnois
f96cbf1ad3 ci: update workflow docker 2025-01-29 17:28:31 +01:00
Florian Hussonnois
84a30d4002 ci: update workflow docker 2025-01-29 17:25:42 +01:00
Loïc Mathieu
6afdbb01fa fix(core): restartForEachItem() is flaky
With this test change, running 100 tests with MySQL pass!
2025-01-29 17:10:50 +01:00
Barthélémy Ledoux
b91336f446 fix: color of tags in executions list (#7035) 2025-01-29 16:57:47 +01:00
Bart Ledoux
f1b2940652 fix: remove default variables for box-shadow 2025-01-29 16:56:22 +01:00
Barthélémy Ledoux
75b8b4a483 fix: use proper css variables for table colors (#7049)
* fix: use proper css variables for table colors

* update ui-libs
2025-01-29 16:54:29 +01:00
Barthélémy Ledoux
c9cb2593bc chore: update "cluster" into "instance" in side menu (#6996)
* chore: update "cluster" into "instance" in side menu

* chore(translations): auto generate values for languages other than english

---------

Co-authored-by: GitHub Action <actions@github.com>
2025-01-29 16:51:52 +01:00
Barthélémy Ledoux
e23f34e53f fix(styles): remove background color from edit buttons (#7037) 2025-01-29 16:51:28 +01:00
Barthélémy Ledoux
2461e8cda9 feat: add a shadow to cards (#7038) 2025-01-29 16:50:08 +01:00
Bart Ledoux
b8fac95e1e fix: namespaces should have the card background
closes #6828
2025-01-29 16:48:48 +01:00
YannC
d17fe2548a fix(ui): dynamic format date
close #7015
2025-01-29 15:55:57 +01:00
YannC
b86b4bb160 feat(webserver): if no date provided for dashboard, then use default timewindow 2025-01-29 15:55:57 +01:00
Loïc Mathieu
64108ae24d chore(deps): downgrade protobug
Orc uses an older version.
And probably also other libs that we're using are still in 3.x
2025-01-29 15:51:48 +01:00
brian.mulier
8d00c8a557 feat(ui): don't show deprecated tasks in the plugins list
closes #4526
2025-01-29 15:42:22 +01:00
Loïc Mathieu
07dfaada9c fix(cli): flow watcher should compute plugin defaults
fixes #6908
2025-01-29 15:42:12 +01:00
Florian Hussonnois
0b82b25a48 chore(ci): update release workflows 2025-01-29 15:10:45 +01:00
Florian Hussonnois
5c8c2a5c42 chore(version): update snapshot version 'v0.22.0-SNAPSHOT'. 2025-01-29 14:27:00 +01:00
Florian Hussonnois
f4fdfc2509 chore(version): update to version 'v0.21.0-rc0-SNAPSHOT'. 2025-01-29 14:26:54 +01:00
Bart Ledoux
6dfa08af80 fix: label colors in executions list 2025-01-29 14:09:23 +01:00
Florian Hussonnois
dd8a45f429 chore: remove plugin-langchain 2025-01-29 13:59:57 +01:00
YannC
95ea6536c0 fix(ui): better inputs validation for backfill
close #7008
2025-01-29 13:51:57 +01:00
YannC
f1e2eea13d fix(): Handle correctly group by date field type (#7033)
close #6977
2025-01-29 13:07:12 +01:00
YannC
0661899e46 feat(ui): added Dashboards icons
close #7032
2025-01-29 11:51:02 +01:00
Bart Ledoux
a8ef04b03c fix: realign vue tour ui element for onboarding
closes #7010
2025-01-29 11:29:35 +01:00
Loïc Mathieu
3e8d32cfca fix(script): targetOS must be rendered 2025-01-29 11:03:32 +01:00
Loïc Mathieu
c5e7b42819 fix(script): injectDefault need the runContext
Otherwise you cannot render dynamic properties inside it
2025-01-29 11:03:32 +01:00
Loïc Mathieu
afabdf883e feat(core): remove deprecated properties and reduce duplication 2025-01-29 11:03:32 +01:00
brian.mulier
b846f11b3d fix(core): properties as map is now working properly with expression within base maps 2025-01-29 11:03:32 +01:00
Bart Ledoux
061e4f5ec2 fix: wrong title for apps page 2025-01-29 11:01:31 +01:00
Bart Ledoux
a10f65c1d5 fix: various fixes for the empty pages 2025-01-29 11:00:44 +01:00
Miloš Paunović
815467ec61 feat(ui): multiple improvements of no code editor (#7028)
* chore(ui): properly handle metadata inputs adding and removal

* feat(ui): make sure plugin documentation is properly updated on task selection
2025-01-29 10:56:08 +01:00
brian.mulier
1a23df3a75 fix(cli): doc generation failure handling to avoid infinite wait 2025-01-29 10:37:24 +01:00
Nicolas K.
8f02c39cd1 fix(core): catch linkageError when a class in already in classpath (#7029)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-01-29 10:36:35 +01:00
Bart Ledoux
966b8fb3a3 feat: add gradient animation on enterprise edition 2025-01-29 10:31:11 +01:00
Bart Ledoux
4375dc3871 feat: add enterprise edition empty to flow edition audit logs 2025-01-29 10:24:36 +01:00
Bart Ledoux
80d1f2d6ca fix: align the flare regardless of language 2025-01-29 10:24:36 +01:00
Florian Hussonnois
1de2a3bdbc fix(core): add de app block to plugin controller (kestra-io/kestra-ee#2773) 2025-01-29 10:17:18 +01:00
Ludovic DEHON
3194a89264 feat(ui): add quick theme switcher 2025-01-29 00:00:30 +01:00
Bart Ledoux
48427f1855 fix: set docId for namespace demo 2025-01-28 21:46:44 +01:00
brian.mulier
a9f36dd47d chore(deps): bump ui-libs to 0.0.119 2025-01-28 21:42:29 +01:00
Bart Ledoux
b8bc50f96f fix flare effect 2025-01-28 21:07:50 +01:00
Rajat Singh
e4016ebb76 fix(ui): easier gantt painting handling
closes #6913
2025-01-28 21:05:37 +01:00
Bart Ledoux
3a01a44b2a fix: debouncing of input validation 2025-01-28 20:59:03 +01:00
Bart Ledoux
34247a9717 fix: ee empty pages background and add flare
closes #2775
2025-01-28 20:52:50 +01:00
GitHub Action
9c56ffa912 chore(translations): auto generate values for languages other than english 2025-01-28 17:46:50 +00:00
Barthélémy Ledoux
64a497490c feat: add demo page for EE only features (#7003)
* update errors file

* feat: add IAM page

* add layout page and empty template

* feat: tenants demo page

* refactor: store context state in vuex

* feat: make docs open automagically

* feat: add missing admin empty pages

* chore: update "cluster" into "instance" in side menu

* feat: add namespace empty pages + some placeholder text

* add custom blueprints empty page

* chore(translations): auto generate values for languages other than english

* fix a bunch of warnings

* fix blueprints title

* feat: add missing link to kestra apps

* chore(translations): auto generate values for languages other than english

* feat: marketing text

* chore(translations): auto generate values for languages other than english

---------

Co-authored-by: GitHub Action <actions@github.com>
Co-authored-by: Anna Geller <anna.m.geller@gmail.com>
2025-01-28 18:39:33 +01:00
AJ Emerich
3a8007fba9 docs(custom-dashboard): update example to use metrics and logs (#7007) 2025-01-28 18:20:17 +01:00
brian.mulier
10d6ff8020 chore(deps): bump ui-libs 2025-01-28 17:16:53 +01:00
Loïc Mathieu
82150e6064 fix(core): Dashboard end date should apply to the execution start date
Otherwise you would not be able to have running executions.
It is aligned with what we do for the other dashboard / filter
2025-01-28 17:03:23 +01:00
YannC
035f6b3b69 fix(ui): remove console.log() 2025-01-28 16:38:55 +01:00
brian.mulier
7ec9f6c81d fix(ui): better handling of plugin type to display in doc from editor 2025-01-28 16:22:35 +01:00
YannC
49d64b7f84 fix(ui): better css with in editor doc for dashboard
close #6999
2025-01-28 16:04:38 +01:00
brian.mulier
dc13e9117d fix(ui): handle light theme properly in plugin doc
closes #6973
2025-01-28 15:39:52 +01:00
Florian Hussonnois
9d974ad845 fix(ui): fix blueprints 2025-01-28 15:27:12 +01:00
Loïc Mathieu
151d4d9da7 fix(core): use the MDC from the loggin context 2025-01-28 14:51:37 +01:00
Loïc Mathieu
3640b08634 fix(core): use DCL when creating the logger
Use Double Checked Locking (DCL) to construct the logger to avoid potential half backed logger creation.
2025-01-28 14:51:37 +01:00
Loïc Mathieu
c9095bd871 fix(core): reset the MDC when we clean the run context 2025-01-28 14:51:37 +01:00
YannC
fd4a51259c fix(ui): avoid monaco to show every words used as autocompletion when there is no suggestion 2025-01-28 14:20:04 +01:00
Miloš Paunović
3c478c73eb feat(ui): multiple improvements of no code editor (#6991)
* chore(ui): limit the width of no code editor to a third of the full width

* feat(ui): show only required task properties on top level, else under collapse
2025-01-28 14:19:30 +01:00
YannC
41e4abba77 fix(ui): rename cluster to instance
close #6992
2025-01-28 14:07:34 +01:00
Loïc Mathieu
32112d2ff2 feat(deps): add support for OpenTelemetry metrics 2025-01-28 13:31:46 +01:00
AJ Emerich
db84595bbd (docs): add custom dashboard in app documentation
close #6982
2025-01-28 11:01:09 +01:00
YannC
325c680947 fix(ui): missing image 2025-01-28 10:55:45 +01:00
brian.mulier
cf316eb837 fix(ui): better filtering for yamlUtils.extractFieldFromMaps 2025-01-28 10:36:06 +01:00
brian.mulier
0438fbff64 fix(ui): add log exporters to plugins
closes kestra-io/kestra-ee#2754
2025-01-28 10:36:06 +01:00
brian.mulier
16be38aaf8 fix(core): add log exporters to plugins
part of kestra-io/kestra-ee#2754
2025-01-28 10:36:06 +01:00
brian.mulier
94e42a9dcd fix(core): generate properly taskrunners and log exporters implementations in json schema after adding generic types
closes kestra-io/kestra-ee#2755
2025-01-28 10:36:06 +01:00
GitHub Action
32da58eeef chore(translations): auto generate values for languages other than english 2025-01-28 08:38:08 +00:00
YannC
5f8a453056 feat(ui): Better empty chart view + default view to documentation
relates to #6982
2025-01-28 09:37:37 +01:00
rajatsingh23
60f96dacff chore(ui): amend plus button action on flow editor topology (#6983)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-01-28 08:38:03 +01:00
GitHub Action
2bca260a38 chore(translations): auto generate values for languages other than english 2025-01-27 23:08:18 +00:00
YannC
82de9cbb96 feat(ui): Design change on dashboard creation (#6984)
* feat(ui): Design change on dashboard creation

close #6943

* chore(translations): auto generate values for languages other than english

---------

Co-authored-by: GitHub Action <actions@github.com>
2025-01-28 00:07:47 +01:00
brian.mulier
69b5093d66 feat(ui): don't load all revisions, optimize unnecessary calls and add back query params upon changing revisions
closes #6806
2025-01-27 19:28:29 +01:00
YannC
a6ffcf5be6 feat(core): Rename WaitFor task to LoopUntil (#6978) 2025-01-27 19:22:18 +01:00
Ludovic DEHON
a54a3f1f54 chore(deps): update all js deps 2025-01-27 19:16:44 +01:00
Ludovic DEHON
5268c793e1 fix(ui): use color for log on custom charts 2025-01-27 19:12:37 +01:00
GitHub Action
4aa0a57e0b chore(translations): auto generate values for languages other than english 2025-01-27 18:02:51 +00:00
Miloš Paunović
cdc1cceb34 feat(ui): multiple improvements of no code editor (#6981)
* feat(ui): introduced re-worked metadata inputs

* chore(ui): reset panel on each breadcrumb click

* chore(ui): improve styling of metadata inputs section

* chore(ui): improve the metadata inputs section
2025-01-27 19:02:11 +01:00
Ludovic DEHON
125a277aa5 fix(ui): better layout filters comparator 2025-01-27 18:49:28 +01:00
Ludovic DEHON
bcaa613f76 fix(ui): don't display max displayable since not relevant
close kestra-io/kestra-ee#1889
2025-01-27 18:14:28 +01:00
Ludovic DEHON
f1c5555f6e fix(ui): taskrun filters and new charts
close kestra-io/kestra-ee#2760
2025-01-27 18:08:28 +01:00
Ludovic DEHON
a69f8b94ff chore(ui): refactor the namespace flows 2025-01-27 17:43:12 +01:00
Florian Hussonnois
64dcc96497 build: add script and github workflow to tag all plugins 2025-01-27 17:00:03 +01:00
Bart Ledoux
1c08176c99 fix: use new color scheme for execution stats on flows list
related to #6175

better refactor to come later during cooldown
2025-01-27 16:21:10 +01:00
Loïc Mathieu
bd82f5e3b6 fix(core): ThresholdFilter is now stricly lower 2025-01-27 15:53:15 +01:00
Anna Geller
8ecba1b341 fix: Dashboards in plural (#6971)
* Update en.json

* chore(translations): auto generate values for languages other than english

---------

Co-authored-by: GitHub Action <actions@github.com>
2025-01-27 15:31:24 +01:00
dependabot[bot]
e94f795d17 chore(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.33.7 to 0.33.9.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.33.7...v0.33.9)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 15:19:02 +01:00
YannC
e0e7bd1323 fix(ui): remove dot from template 2025-01-27 15:17:58 +01:00
dependabot[bot]
4bf46464d5 chore(deps): bump org.jooq:jooq from 3.19.16 to 3.19.18
Bumps org.jooq:jooq from 3.19.16 to 3.19.18.

---
updated-dependencies:
- dependency-name: org.jooq:jooq
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:55:25 +01:00
dependabot[bot]
3f94022ee9 chore(deps): bump software.amazon.awssdk:bom from 2.29.37 to 2.30.6
Bumps software.amazon.awssdk:bom from 2.29.37 to 2.30.6.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:53:08 +01:00
dependabot[bot]
8b2f2ce7af chore(deps): bump com.github.ben-manes.versions from 0.51.0 to 0.52.0
Bumps com.github.ben-manes.versions from 0.51.0 to 0.52.0.

---
updated-dependencies:
- dependency-name: com.github.ben-manes.versions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:37:22 +01:00
dependabot[bot]
6bd0960356 chore(deps): bump com.google.guava:guava from 33.3.1-jre to 33.4.0-jre
Bumps [com.google.guava:guava](https://github.com/google/guava) from 33.3.1-jre to 33.4.0-jre.
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

---
updated-dependencies:
- dependency-name: com.google.guava:guava
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:36:46 +01:00
YannC
67920c6e5c feat(ui): make DashboardEdit.vue overrided components (#6954) 2025-01-27 14:36:22 +01:00
dependabot[bot]
3ce8903e10 chore(deps): bump nl.basjes.gitignore:gitignore-reader
Bumps [nl.basjes.gitignore:gitignore-reader](https://github.com/nielsbasjes/codeowners) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/nielsbasjes/codeowners/releases)
- [Changelog](https://github.com/nielsbasjes/codeowners/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nielsbasjes/codeowners/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: nl.basjes.gitignore:gitignore-reader
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:36:15 +01:00
dependabot[bot]
55b21d2697 chore(deps): bump org.assertj:assertj-core from 3.27.0 to 3.27.3
Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.27.0 to 3.27.3.
- [Release notes](https://github.com/assertj/assertj/releases)
- [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.27.0...assertj-build-3.27.3)

---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:35:38 +01:00
dependabot[bot]
efa533daa1 chore(deps): bump io.micronaut.platform:micronaut-platform
Bumps [io.micronaut.platform:micronaut-platform](https://github.com/micronaut-projects/micronaut-platform) from 4.7.3 to 4.7.4.
- [Release notes](https://github.com/micronaut-projects/micronaut-platform/releases)
- [Commits](https://github.com/micronaut-projects/micronaut-platform/compare/v4.7.3...v4.7.4)

---
updated-dependencies:
- dependency-name: io.micronaut.platform:micronaut-platform
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:35:13 +01:00
dependabot[bot]
ee687ffde3 chore(deps): bump com.github.oshi:oshi-core from 6.6.5 to 6.6.6
Bumps [com.github.oshi:oshi-core](https://github.com/oshi/oshi) from 6.6.5 to 6.6.6.
- [Release notes](https://github.com/oshi/oshi/releases)
- [Changelog](https://github.com/oshi/oshi/blob/master/CHANGELOG.md)
- [Commits](https://github.com/oshi/oshi/compare/oshi-parent-6.6.5...oshi-parent-6.6.6)

---
updated-dependencies:
- dependency-name: com.github.oshi:oshi-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:34:34 +01:00
dependabot[bot]
efee504468 chore(deps): bump protobufVersion from 3.25.5 to 4.29.3
Bumps `protobufVersion` from 3.25.5 to 4.29.3.

Updates `com.google.protobuf:protobuf-java` from 3.25.5 to 4.29.3
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/main/protobuf_release.bzl)
- [Commits](https://github.com/protocolbuffers/protobuf/commits)

Updates `com.google.protobuf:protobuf-java-util` from 3.25.5 to 4.29.3

---
updated-dependencies:
- dependency-name: com.google.protobuf:protobuf-java
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: com.google.protobuf:protobuf-java-util
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:34:08 +01:00
dependabot[bot]
8e07b5b354 chore(deps): bump org.postgresql:postgresql from 42.7.4 to 42.7.5
Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.7.4 to 42.7.5.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.7.4...REL42.7.5)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:33:48 +01:00
dependabot[bot]
bf88ddb21b chore(deps): bump org.owasp.dependencycheck from 11.1.1 to 12.0.1
Bumps org.owasp.dependencycheck from 11.1.1 to 12.0.1.

---
updated-dependencies:
- dependency-name: org.owasp.dependencycheck
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:33:25 +01:00
dependabot[bot]
f494edb889 chore(deps): bump com.google.cloud:libraries-bom from 26.52.0 to 26.53.0
Bumps [com.google.cloud:libraries-bom](https://github.com/googleapis/java-cloud-bom) from 26.52.0 to 26.53.0.
- [Release notes](https://github.com/googleapis/java-cloud-bom/releases)
- [Changelog](https://github.com/googleapis/java-cloud-bom/blob/main/release-please-config.json)
- [Commits](https://github.com/googleapis/java-cloud-bom/compare/v26.52.0...v26.53.0)

---
updated-dependencies:
- dependency-name: com.google.cloud:libraries-bom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:33:01 +01:00
dependabot[bot]
14f35021c2 chore(deps): bump com.github.ben-manes.caffeine:caffeine
Bumps [com.github.ben-manes.caffeine:caffeine](https://github.com/ben-manes/caffeine) from 3.1.8 to 3.2.0.
- [Release notes](https://github.com/ben-manes/caffeine/releases)
- [Commits](https://github.com/ben-manes/caffeine/compare/v3.1.8...v3.2.0)

---
updated-dependencies:
- dependency-name: com.github.ben-manes.caffeine:caffeine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 14:32:22 +01:00
YannC
a1a1fbc31a fix(ui): missing translations 2025-01-27 14:27:21 +01:00
Loïc Mathieu
2359c4f744 fix(core, jdbc): Count task 2025-01-27 13:21:58 +01:00
Miloš Paunović
1bcc22a861 feat(ui): multiple improvements of no code editor (#6951)
* chore(ui): persist change of editor type on each toggle

* chore(ui): remove topology-only view from editor
2025-01-27 12:07:55 +01:00
Ludovic DEHON
adb8d9a9d3 fix(ui): let filter dropdown fit width of the content 2025-01-27 12:01:40 +01:00
Ludovic DEHON
0a93b10a72 feat(ui): pretty layout for status on filters
relate to #5127
2025-01-27 12:01:40 +01:00
yuri
8361a206fa chore(cli): improve CLI help messages (#6920)
* chore(cli): improve CLI help messages

* Improved styling to make the help easily readable.
* Fixed various copy&paste issues.
* Improved wording a bit.

* Fix copy&paste
2025-01-27 11:55:54 +01:00
Loïc Mathieu
7cf4955814 feat(core, jdbc): change the state of a subflow restart parent execution 2025-01-27 11:29:17 +01:00
Loïc Mathieu
4e3ed33a48 feat(ui, webserver): rename "Change status" to "Change state" and enhance the infos 2025-01-27 11:29:17 +01:00
Loïc Mathieu
4f2d35fc4a feat(core): add system.restarted: true label when changing the status of a task 2025-01-27 11:29:17 +01:00
Florian Hussonnois
c52fdd064c fix(webserver): ensure queues are not closed in nioEventLoop 2025-01-27 11:21:53 +01:00
Ludovic DEHON
f8ff2e0204 fix(core): fix unit test on DocumentationGeneratorTest 2025-01-27 10:47:59 +01:00
Anna Geller
34751cfdd4 docs: add nested loop example (#6948) 2025-01-26 21:56:44 +01:00
Ludovic DEHON
4f96f81241 fix(ui): namepsace > blueprint display 404 page
close kestra-io/kestra#6917
2025-01-25 23:33:34 +01:00
Anna Geller
fedb388e53 fix: Return task docs 2025-01-25 12:31:25 +01:00
Bart Ledoux
c805dc490f fix: see all is-text button color
closes #6898
2025-01-25 11:47:46 +01:00
Bart Ledoux
2e23269a90 fix: update ui-libs for docs 2025-01-25 11:35:35 +01:00
GitHub Action
cb7ee6a0b2 chore(translations): auto generate values for languages other than english 2025-01-25 07:20:32 +00:00
Piyush Bhaskar
69dda0ea65 chore(ui): improvements of welcome page (#6938) 2025-01-25 08:19:47 +01:00
Ludovic DEHON
715226dee4 chore(deps): update all js deps 2025-01-24 23:38:13 +01:00
Ludovic DEHON
36675d90f4 feat(ui): new 404 page layout 2025-01-24 23:29:23 +01:00
YannC
5151f23cf5 feat(ui): improve custom dashboard access (#6940)
relates to kestra-io/kestra-ee#2372
2025-01-24 22:34:13 +01:00
Ludovic DEHON
17e0340ab4 fix(ui): invalid hover on left menu for white theme 2025-01-24 21:53:54 +01:00
Florian Hussonnois
3073d9e925 fix(script): update release-plugins 2025-01-24 21:46:53 +01:00
Florian Hussonnois
4d7d8e008a chore(script): update release-plugins to support pushReleaseVersionBranch 2025-01-24 21:44:12 +01:00
Florian Hussonnois
83e99edcff chore(build): fix release-plugins script 2025-01-24 21:04:49 +01:00
Florian Hussonnois
01e565f3cd chore(build): fix .plugins file 2025-01-24 21:04:49 +01:00
Miloš Paunović
87eb855ace chore(ui): start product tour by clicking on first card on welcome page (#6935) 2025-01-24 18:42:29 +01:00
Miloš Paunović
effb5a279b chore(ui): start product tour by clicking on first car on welcome page (#6934) 2025-01-24 18:13:34 +01:00
Miloš Paunović
460e037674 fix(ui): save content to proper file using the namespace file editor (#6931) 2025-01-24 17:27:36 +01:00
brian.mulier
275951011f fix(core): Flow equalsWithoutRevision don't use serialization to compare flows so that map orders don't matter
closes #6928
2025-01-24 17:00:47 +01:00
Florian Hussonnois
d79e40dd98 build: add new project properties for release 2025-01-24 16:55:28 +01:00
Miloš Paunović
aa22f5041c feat(ui): multiple improvements of no code editor (#6923)
* chore(ui): make sure to check if property exists

* chore(ui): prevent auto-focus of editor fields

* chore(ui): re-order the list of visible fields in the no code editor

* chore(ui): make concurrency field work in the main form

* chore(ui): initial work on passing component panel to store
2025-01-24 16:48:45 +01:00
brian.mulier
09ef115074 fix(ui): cleanup imports and get rid of some warnings 2025-01-24 12:38:25 +01:00
brian.mulier
ae408209fe fix(ui): more explicit else-if branches for switch view 2025-01-24 12:36:32 +01:00
brian.mulier
fccaef4622 fix(ui): remove some warnings about missing props for blueprints 2025-01-24 12:33:19 +01:00
Ludovic DEHON
6bc66d66ea fix(ui): left menu is blinking on blueprint page 2025-01-24 08:05:29 +01:00
Ludovic DEHON
ae2d55570f fix(ui): rollouver on side menu was blinking 2025-01-24 08:01:11 +01:00
Ludovic DEHON
c795f3756c fix(ui): add confirmation message for crud on custom dashboard
close kestra-io/kestra-ee#2468
2025-01-24 07:50:38 +01:00
Ludovic DEHON
a97448f19d fix(ui): proper log display without multiple line 2025-01-23 22:46:52 +01:00
Ludovic DEHON
fc84ee3e59 fix(ui): make disabled select less visible 2025-01-23 22:46:52 +01:00
Miloš Paunović
9501880044 feat(ui): improvements of no code editor (#6916)
* feat(ui): improve the one of task section

* chore(ui): change expected prop type to match what is sent

* chore(ui): allow number input fields to span full width

* chore(ui): remove disabled parameter from buttons which don't need it
2025-01-23 19:43:27 +01:00
Florian Hussonnois
9781ff1563 fix(ui): add missing use button into blueprin details 2025-01-23 19:08:22 +01:00
Ludovic DEHON
61e0668ad8 chore(cli): invalid description on worker thread 2025-01-23 18:37:08 +01:00
Ludovic DEHON
f08bd94d57 feat(ui): new gantt layout to display taskrun state & duration with also attempts one
close #6103
2025-01-23 18:37:08 +01:00
Florian Hussonnois
699e232dd6 fix(ui): fix use button for dashboard blueprint 2025-01-23 17:30:09 +01:00
Ludovic DEHON
c994762762 fix(ui): prevent responsive on monaco editor for diff
close #4777
2025-01-23 16:14:45 +01:00
YannC
0eb13ba433 fix(webserver): continue to warn, but do not return trigger with missing flow (#6905)
close #5998
2025-01-23 15:53:47 +01:00
Mathieu Gabelle
22157fd717 refactor: migrate plugin.core.log to dynamic properties (#6732) 2025-01-23 15:52:01 +01:00
yuri
0a047a7b75 fix(ui): amend flow concurrency overview
closes #6811
2025-01-23 15:48:48 +01:00
Florian Hussonnois
8e5ffe8355 fix(ui): fix blueprints use button 2025-01-23 15:39:55 +01:00
Miloš Paunović
204563530e feat(ui): improve the one of task section (#6903) 2025-01-23 15:07:05 +01:00
Miloš Paunović
132d70dadd feat(ui): add the ability to remove tasks and other items (#6902) 2025-01-23 13:54:10 +01:00
Florian Hussonnois
2e18c295ed fix(ui): fix multiple issues on blueprints 2025-01-23 13:36:34 +01:00
Miloš Paunović
4bb2fd50eb feat(ui): make the one of component work properly (#6900) 2025-01-23 13:14:48 +01:00
GitHub Action
c6d69762c4 chore(translations): auto generate values for languages other than english 2025-01-23 11:52:03 +01:00
Florian Hussonnois
ad719a97f9 feat: add support for multiple blueprint kinds
related-to: kestra-io/kestra-ee#2479
2025-01-23 11:52:03 +01:00
Miloš Paunović
6b4e1cac94 fix(ui): properly handle file explorer visibility in namespace files section (#6895) 2025-01-23 11:06:01 +01:00
brian.mulier
0ddf9d6001 chore(deps): bump @kestra-io/ui-libs to 0.0.114 2025-01-23 10:06:50 +01:00
Shruti Mantri
e9e853cdfc fix: add title to TemplatedTask (#6891)
* fix: add title to TemplatedTask

* Update TemplatedTask.java

* Update core/src/main/java/io/kestra/plugin/core/templating/TemplatedTask.java

---------

Co-authored-by: Will Russell <will@wrussell.co.uk>
Co-authored-by: Anna Geller <anna.m.geller@gmail.com>
2025-01-23 10:03:18 +01:00
Miloš Paunović
bca1797321 chore(ui): make sure input pair component updates only what's needed (#6892) 2025-01-23 09:36:49 +01:00
brian.mulier
1b0ce4d6a3 feat(ui): new plugin doc redesign 2025-01-23 00:04:57 +01:00
Mathieu Gabelle
10bc70c858 chore(deps): upgrade bouncycastle to 1.80 (#6881) 2025-01-22 17:24:13 +01:00
YannC
2192ef3365 fix(): JsonSchema dashboard doc 2025-01-22 16:26:52 +01:00
Loïc Mathieu
116f59dc89 chore(deps): upgrade Micrometer to 0.14.3 2025-01-22 16:03:28 +01:00
Miloš Paunović
24f8afae82 feat(ui): re-work the task array field for the no code editor (#6885)
* chore(ui): make the task save button span fully

* chore(ui): make the task save button have the proper top margin

* feat(ui): re-work the task array field for the no code editor
2025-01-22 14:54:11 +01:00
Miloš Paunović
ad304e9d90 chore(ui): handle task dict type fields (#6884)
* chore(ui): rename the single namespace editor tab to files

* chore(ui): handle task dict type fields
2025-01-22 13:42:46 +01:00
Miloš Paunović
027cde4a21 fix(ui): amend namespace editor problem (#6883)
* chore(ui): make input number be full width

* chore(ui): wrap task object inside a form element

* fix(ui): amend namespace editor problem
2025-01-22 12:03:34 +01:00
Ludovic DEHON
1926ad5e0c fix(core): fromIon is reading only the first rows by default, adding a parameter to read all rows 2025-01-22 10:09:20 +01:00
Loïc Mathieu
e87b97a2e1 feat(*): OpenTelemetry traces
Fixes #6149
2025-01-22 09:51:12 +01:00
Miloš Paunović
33308c49c8 chore(deps): regular dependency update (#6877) 2025-01-22 09:03:35 +01:00
GitHub Action
a011705728 chore(translations): auto generate values for languages other than english 2025-01-22 07:28:30 +00:00
Miloš Paunović
b823d9c28b feat(ui): improvements of no code editor (#6876) 2025-01-22 08:25:58 +01:00
Bart Ledoux
40c43256a6 fix: logs page redirect 2025-01-21 16:22:36 +01:00
Bart Ledoux
306d4ecd78 feat: simplify logs chunks by packaging markdown 2025-01-21 16:22:36 +01:00
YannC
db496a8faf fix(Count): fix Count task 2025-01-21 15:27:13 +01:00
Bart Ledoux
b542dda8e8 feat: export oss chunks of vite config 2025-01-21 14:27:30 +01:00
YannC
c337d55273 feat(core): Schema title annotation for Custom Dashboard Filter 2025-01-21 14:22:35 +01:00
Barthélémy Ledoux
f8b2056b3f fix: update the vite config to use the rollup dependencies properly (#6853)
* fix: update the vite config to use the rollup dependencies properly

* add comments
2025-01-21 14:33:52 +02:00
Ludovic DEHON
4d4963abd6 feat(tasks): introduce an Assert tasks 2025-01-21 10:25:36 +01:00
Ludovic DEHON
4d074cb052 feat(core): add a randomPort pebble function 2025-01-21 10:25:28 +01:00
Loïc Mathieu
01a77aff04 fix(core): randomInt receive a Long not an Integer 2025-01-21 10:00:16 +01:00
Shruti Mantri
f5bc5869e4 fix: correct the condition name (#6843) 2025-01-20 17:35:26 +00:00
Loïc Mathieu
1a130daa21 fix(core): Avoid double STRING schema type for types that resolves to a String
Fixes #6821
2025-01-20 17:11:33 +01:00
Piyush Bhaskar
b48c6c3dd4 chore(ui): amend flow export method (#6835) 2025-01-20 14:59:06 +01:00
Bart Ledoux
7e926fc8ec fix(sidebar): implement the _hover class in addition to hover pseudo class 2025-01-20 14:50:41 +01:00
Mathieu Gabelle
914bd94498 refactor: migrate plugin.core.namespace to dynamic properties (#6832) 2025-01-20 14:02:25 +01:00
Loïc Mathieu
02831295bf fix(core): deprecated allowFailed should not have any default
Fixes #6791
2025-01-20 13:56:11 +01:00
Shruti Mantri
4dee038374 fix: correct the description for DayWeek condition (#6834) 2025-01-20 12:43:27 +00:00
Mathieu Gabelle
25ca9f74e5 refactor: migrate plugin.core.log to dynamic properties (#6823) 2025-01-20 13:30:04 +01:00
Aabhas Sao
4b2c10d6e2 feat(core): validate in editor if subflow with namespace present (#6717)
* feat(core): validate in editor if subflow with namespace present

* fix(): added test + return all violations instead of only one

---------

Signed-off-by: Aabhas Sao <aabhassao0@gmail.com>
Co-authored-by: YannC <ycoornaert@kestra.io>
2025-01-20 11:39:34 +01:00
Bart Ledoux
05e5af73ab fix: color of active item in sidebar 2025-01-20 11:22:12 +01:00
Mathieu Gabelle
a6d746ae5a refactor: migrate package plugin.core.execution to dynamic properties (#6708)
migrate Count
migrate Fail
migrate PurgeExecutions
migrate Resume
2025-01-20 11:05:11 +01:00
Miloš Paunović
96780a9760 chore(ui): show status label on dialog 2025-01-20 10:49:25 +01:00
Barthélémy Ledoux
c5eef81a6e feat: various design fixes asked by nico (#6798) 2025-01-20 09:34:39 +01:00
dependabot[bot]
e36ee1d6ba chore(deps): bump katex from 0.16.20 to 0.16.21 in /ui (#6816)
Bumps [katex](https://github.com/KaTeX/KaTeX) from 0.16.20 to 0.16.21.
- [Release notes](https://github.com/KaTeX/KaTeX/releases)
- [Changelog](https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md)
- [Commits](https://github.com/KaTeX/KaTeX/compare/v0.16.20...v0.16.21)

---
updated-dependencies:
- dependency-name: katex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-18 08:36:56 +01:00
Anna Geller
aa869eba1d closes https://github.com/kestra-io/kestra/issues/6814 2025-01-17 21:06:51 +01:00
aeSouid
1ddb544c36 Plugin: Define the langchain4j ollama, openai & gemini plugins in the .plugin file list (#6813) 2025-01-17 18:30:14 +01:00
Florian Hussonnois
207e8c3a70 fix(core): fix some labels are lost when having same prefix key
This commit fix an issue where only a single system label was injected in the run context

fix: kestra-io/kestra-ee#2697
2025-01-17 17:12:03 +01:00
GitHub Action
e037e548b2 chore(translations): auto generate values for languages other than english 2025-01-17 14:12:29 +00:00
Miloš Paunović
d77cfe8ced fix(ui): improve the editing of labels and variables (#6810) 2025-01-17 15:11:53 +01:00
Miloš Paunović
9cd1e0c7b1 fix(ui): amend the ability to create tasks (#6808) 2025-01-17 13:28:39 +01:00
Miloš Paunović
969faba1f0 feat(ui): improvements of no code editor (#6804)
* chore(ui): enhance toggle button for switching between `YAML` and `No Code` editors

* chore(ui): remove the export flow button from main section

* chore(ui): remove the unused context menu options

* chore(ui): add margin after the last entry for variables and inputs

* chore(ui): only show save button on task creation if one is selected

* chore(ui): replace plugin default component from input to editor type

* chore(ui): replace retry and outputs component from input to editor type

* chore(ui): move all general properties to the top level
2025-01-17 13:17:37 +01:00
Bart Ledoux
7f048afca5 add full logline stories 2025-01-17 10:57:34 +01:00
Bart Ledoux
51088c819a fix logline css variables 2025-01-17 10:57:34 +01:00
Miloš Paunović
a9c43608ff fix(ui): properly encode text filter parameter to url string (#6803) 2025-01-17 08:54:07 +01:00
Bart Ledoux
960a1bba49 fix: reduce log borders on gantt chart logs 2025-01-16 15:57:36 +01:00
Ludovic DEHON
246602f9fd fix(core): ForEach failed with errors, finally and concurrency = 0 2025-01-16 15:48:02 +01:00
Bart Ledoux
979c131b99 fix: el-empty needed a backdrop 2025-01-16 15:23:49 +01:00
Miloš Paunović
52aa0d6487 chore(test): add required attributes for e2e test (#6797) 2025-01-16 15:22:05 +01:00
Bart Ledoux
f5dc67f0ef fix: update custom upload button 2025-01-16 15:10:11 +01:00
Ludovic DEHON
9a19c01087 fix(jdbc): summary count should be a prefix on the namespace 2025-01-16 15:09:49 +01:00
Ludovic DEHON
d3efcdd032 chore(deps): update testcontainers to 1.20.4 2025-01-16 14:39:49 +01:00
Ludovic DEHON
554ea5850e fix(ui): flows overview are not scoped to current flow
close #6778
2025-01-16 14:39:49 +01:00
rajatsingh23
b573f1679d chore(ui): change filter value by clicking on already selected one (#6705) 2025-01-16 12:40:03 +01:00
CoderKill
018afab378 fix(webserver): add check in file creation path for _flows* (#6228) 2025-01-16 12:06:45 +01:00
Saumya Gaur
a4cf1cd74f chore(ui): mark places where we need to replace old charts with the new ones (#6623) 2025-01-16 11:49:07 +01:00
GitHub Action
3435e345ed chore(translations): auto generate values for languages other than english 2025-01-16 10:19:01 +00:00
Piyush Bhaskar
595b94e2aa feat(ui): allow exporting the flow to yaml file (#6610)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2025-01-16 11:18:40 +01:00
Loïc Mathieu
b2c411956e fix(core): Property with default
Fixes #6744
2025-01-16 11:16:06 +01:00
Bart Ledoux
4c6f8bd906 fix: topology css issues 2025-01-16 11:13:45 +01:00
GitHub Action
46c3e3ff74 chore(translations): auto generate values for languages other than english 2025-01-16 10:03:06 +00:00
Hashim Khalifa
fb66d42376 chore(ui): add empty view on flow concurrency page (#6640)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-01-16 11:02:21 +01:00
Barthélémy Ledoux
4227e1d682 refactor: avoid usage of runtime template to smaller bundle (#6779) 2025-01-16 10:50:18 +01:00
Barthélémy Ledoux
106816bf37 feat: add a story for executions list (#6784) 2025-01-16 10:49:57 +01:00
Barthélémy Ledoux
f8279c6b01 fix: add ellipsis for Namespace charts (#6730) 2025-01-16 10:43:21 +01:00
MilosPaunovic
fdbe16387d chore(ui): amend dialog close button styling 2025-01-16 10:42:19 +01:00
Piyush Bhaskar
aa450d6e4b chore(ui): mark taskruns with multiple attemps in gantt view (#6721) 2025-01-16 10:40:50 +01:00
rajatsingh23
8b714f707b chore(ui): amend width of execute flow inputs section (#6720)
Co-authored-by: Piyush Bhaskar <102078527+Piyush-r-bhaskar@users.noreply.github.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2025-01-16 10:00:24 +01:00
Miloš Paunović
8a3bb078b8 chore(deps): regular dependency update (#6790) 2025-01-16 09:08:49 +01:00
GitHub Action
3c6aa69808 chore(translations): auto generate values for languages other than english 2025-01-16 07:53:45 +00:00
Miloš Paunović
e5fc7d32b4 chore(translations): amend translation key/value pairs (#6788) 2025-01-16 08:53:20 +01:00
Ludovic DEHON
9f12f9a63b fix(core): flow should not continue tasks when having a finally 2025-01-15 21:51:47 +01:00
Ludovic DEHON
f1c147cc4b fix(core): parallel task should not resolved error and finally in parallel 2025-01-15 21:51:38 +01:00
Ludovic DEHON
45bd08c26e chore(deps): update common dependency 2025-01-15 18:37:17 +01:00
MilosPaunovic
33c5cb507a chore(ui): amend passing of disabled property to no code editor 2025-01-15 18:37:11 +01:00
Florian Hussonnois
7b0f2e9160 fix(jdbc): update test config for flaky test on liveness (#6656) 2025-01-15 18:29:53 +01:00
Miloš Paunović
821fd1219c feat(ui): introduce the revamped no code editor (#6787) 2025-01-15 18:28:20 +01:00
Florian Hussonnois
81a4e86452 fix(core): remove 64 characters limitation for displayName (#6470) 2025-01-15 18:28:01 +01:00
Florian Hussonnois
94545fe2f6 fix(jdbc): ensure JdbcIndexer is only closed once 2025-01-15 18:06:05 +01:00
Mathieu Gabelle
662ac61e34 refactor: migrate package plugin.core.templating to dynamic properties (#6775) 2025-01-15 15:18:31 +01:00
Mathieu Gabelle
c4ec56f1e7 refactor: migrate package plugin.core.storage to dynamic properties (#6770) 2025-01-15 10:34:16 +01:00
Mathieu Gabelle
ca8837f310 refactor: migrate package plugin.core.state to dynamic properties (#6755) 2025-01-15 09:44:17 +01:00
Barthélémy Ledoux
b3b3a5b85a fix: allow custom translations to be passed (#6752)
* feat: allow extra translation sources in i18n

* refactor(i18n): properly laod i18n translations (no more merge)

* update comments

* fix eslint
2025-01-15 09:32:09 +01:00
Loïc Mathieu
717d5560ad feat(webserver, ui): avoid cancelled SSE connection from following exec
Send a fake "start" event from the Execution following endpoint so that the UI didn't cancell it.

I'm not sure when the UI would cancel the SSE connection but it can ocurs if any of the view that opens an SSE connection are left but no event are received yet.
Sending a fake event immediatly lower the risk of occuring.
2025-01-15 09:25:15 +01:00
Ludovic DEHON
708c1127c9 chore(core): reduce log level of property validation 2025-01-15 08:43:34 +01:00
Ludovic DEHON
52aba32c14 fix(ui): missing icons for finally
relate to #5643
2025-01-14 17:00:31 +01:00
Bart Ledoux
fbfab90739 fix(#6745) vue flow needs a height on the container 🥸 2025-01-14 16:05:32 +01:00
Ludovic DEHON
e98543822c fix(core): graph on dag are not attaching finally at the end of the dag task 2025-01-14 14:00:53 +01:00
Mathieu Gabelle
daddcd4d50 refactor: migrate package plugin.core.debug to dynamic properties (#6697)
migrate Return task
migrate Echo task
migrate associated test using these tasks
2025-01-14 13:32:37 +01:00
Loïc Mathieu
f217d33768 fix(core): always close the queue after receive
May improve test flakyness
2025-01-14 11:54:04 +01:00
Loïc Mathieu
0c0ff37c69 fix(core, ui): send a "start" event to be sure the UI receive the SSE
The UI only store a reference to the logs SSE when receive the first event.
In case a flow didn't emit any log, or the logs tab is closed before any logs is emitted, the UI will not have any reference to the SSE so the SSE connection would stay alive forever.
Each SSE connection starts a thread via the logs queue, creating a thread leak.

Sending a first "start" event makes sure the UI has a reference to the SSE.
2025-01-14 09:39:58 +01:00
Ludovic DEHON
c73305921e fix(jdbc): batch query expand query and lead to overflow of metrics 2025-01-13 21:54:10 +01:00
Mathieu Gabelle
4de65e7a3d refactor: migrate plugin.core.output to dynamic properties
migrate OutputValues task
2025-01-13 18:07:57 +01:00
AJ Emerich
ac8a05cb35 chore(docs): split pause title and description (#6733)
close kestra-io/docs#2072
2025-01-13 17:13:05 +01:00
Ludovic DEHON
0d1710d0e6 feat(core): introduce an finally block on flow & flowable (#6686)
close #6649
2025-01-13 17:11:57 +01:00
Bart Ledoux
55b672033d fix: storybook - only i18nize once in preview 2025-01-13 14:32:07 +01:00
Mathieu Gabelle
f2e4a35313 refactor: address sonar issues 2025-01-13 13:08:27 +01:00
Mathieu Gabelle
d052a87c0b refactor: migrate package plugin.core.kv to dynamic properties
migrate Delete, Get, Set, GetKeys from KV to dynamic properties
2025-01-13 13:08:27 +01:00
Mathieu Gabelle
589638cc3d refactor: add @deprecated javadoc message : sonar 2025-01-13 12:56:06 +01:00
Mathieu Gabelle
a934414db4 refactor: migrate package plugin.core.http to dynamic properties
migrate Download task
migrate Request task
migrate Trigger task
migrate HttpConfiguration class
2025-01-13 12:56:06 +01:00
Bart Ledoux
e4698b0f10 fix: async docs were failing beause of issue in ui-libs MDC 2025-01-13 12:09:27 +01:00
Bart Ledoux
6691575fa0 fix: improve storybook styles 2025-01-13 12:06:29 +01:00
Bart Ledoux
2a56ba88c4 chore: remove an unwanted comment 2025-01-13 11:39:25 +01:00
AJ Emerich
828d9a789f add taskrun.iteration (#6723)
Add mention of taskrun.iteration like in ForEachItem
2025-01-13 11:15:44 +01:00
Bart Ledoux
987f4914a6 keep active state on hover 2025-01-13 10:00:22 +01:00
Bart Ledoux
6a5ec8dcfc style(ui): update SideBar link styles to match design 2025-01-10 17:39:00 +01:00
Barthélémy Ledoux
8d57f8f0b2 refactor: add async loading for better performance (#6643)
Co-authored-by: YannC <37600690+Skraye@users.noreply.github.com>
2025-01-10 17:26:29 +01:00
AJ Emerich
f8a7299daf Add description to Write.java (#6710)
* Add description to Write.java

* fix java compile error

Add comma
2025-01-10 17:23:44 +01:00
Nicolas K.
c32d158ab6 feat(core-ee): change log shipper properties names and use KV instead of state store (#6709)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-01-10 17:05:24 +01:00
Florian Hussonnois
159927d39e fix(ui): fix reset of flow import input 2025-01-10 16:46:51 +01:00
Florian Hussonnois
17120cff8e refactor(webserver): move method to read source file/archive to HasSource interface 2025-01-10 16:46:51 +01:00
Florian Hussonnois
16a7e06c56 chore(ui): add utility method extratFileNameFromContentDisposition
Changes:
* add a new utility method to extracts a filename from an HTTP 'Content-Disposition` header.

part-of: kestra-io/kestra-ee#2412
2025-01-10 16:46:51 +01:00
Florian Hussonnois
d96742d7dd refactor(core): add new interface HasSource
Changes:
* add new interface HasSource
* move method for zipping flows to HasSource

part-of: kestra-io/kestra-ee#2412
2025-01-10 16:46:51 +01:00
Loïc Mathieu
1c705e2d7b fix(core): If with only disabled tasks
Fixes #6658
2025-01-10 15:26:49 +01:00
Bart Ledoux
bab508a51e update color palette 2025-01-10 15:21:06 +01:00
Loïc Mathieu
b9a74b8759 fix(jdbc): resubmitting a worker job running should create a new attempt 2025-01-10 09:54:11 +01:00
YannC
3c19c910aa fix(*): create real chart preview endpoint 2025-01-10 08:39:28 +01:00
Nicolas K.
4ab8748f4c feat(core-ee); change log record model and don't use opentelemetry an… (#6700)
* feat(core-ee); change log record model and don't use opentelemetry anymore

* fix(core): unit test

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-01-09 18:08:01 +01:00
Barthélémy Ledoux
cbff628f23 Implement stylelint and refactor CSS variables for consistency (#6645) 2025-01-09 17:28:19 +01:00
Nicolas K.
6e7df7f25c fix(core): NPE in ExecutableUtils (#6699)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-01-09 17:09:47 +01:00
Nicolas K.
2f4bb05561 feat(core-ee): remove pagination from fetchAsync and use logRecord attributes (#6698)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-01-09 16:44:03 +01:00
brian.mulier
063ac10099 chore(deps): bump micronaut-platform to 4.7.3 2025-01-09 13:25:48 +01:00
Ludovic DEHON
841f32a9f6 fix(core): plugin default was not validating correctly boolean methods 2025-01-09 12:56:55 +01:00
AJ Emerich
7afba75ed8 update Exit.java task description (#6695) 2025-01-09 12:18:46 +01:00
YannC
501a5d3ff4 fix(core): handle runIf inside workingDirectory (#6690)
close #6689
2025-01-09 11:40:49 +01:00
YannC
1b615c97b1 fix(core): Continue WaitFor loop if tasks are not failed (#6572)
close #6031
2025-01-09 11:40:34 +01:00
Bart Ledoux
9b59c75d2a refactor: remove bootstrap color from sidebar 2025-01-09 11:11:06 +01:00
Bart Ledoux
035a27c915 refactor: remove spacer form sidebar 2025-01-09 11:02:15 +01:00
Bart Ledoux
86cb11fb81 fix: logline when there is a {{ 2025-01-09 10:58:39 +01:00
Bart Ledoux
20276a9e7a refactor: removed unused css in sidebar 2025-01-09 10:39:51 +01:00
Loïc Mathieu
a994120d36 feat(core): add outputs and ID to log shippers 2025-01-09 09:39:52 +01:00
Bart Ledoux
e09e21633a fix(ui): update CSS variable for log icon color in LogLine component 2025-01-08 23:19:28 +01:00
Bart Ledoux
a8be084e79 feat(ui): add status remapping to status component to match the real name of the CSS vars 2025-01-08 23:05:05 +01:00
Malay Dewangan
1476064b0a feat: add support for deleting empty namespace parent folders (#5699)
* feat(namespace): add support for deleting empty parent folders

* fix: add builder default for deleteparentfolder key

* Update DeleteFiles.java

* chore(test): missing tests

* chore(test): missing tests

---------

Co-authored-by: YannC <ycoornaert@kestra.io>
2025-01-08 17:20:09 +01:00
GitHub Action
4e543a29ca chore(translations): auto generate values for languages other than english 2025-01-08 16:42:05 +01:00
Loïc Mathieu
b3ed3d8dfb feat(core, ui, webserver): add replay system labels
- Add system.replay to executions that are a replay
- Add system.replayed to executions that have been replayed

Fixes #6682
2025-01-08 16:42:05 +01:00
Nicolas K.
132d4541c2 feat(core): add log record serialization (#6683)
* feat(core): add log record serialization

* feat(core): add serialization to log record

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-01-08 15:43:45 +01:00
brian.mulier
6f43ab1443 chore(deps): bump ui-libs 2025-01-08 15:05:41 +01:00
Bart Ledoux
155f9b9d76 fix: fix no execution layout 2025-01-08 15:01:32 +01:00
Loïc Mathieu
c5e23d43df feat(core): validate tasks and triggers with dynamic properties 2025-01-08 14:24:11 +01:00
nKwiatkowski
81f08f00c6 feat(core): add partial fix to micronaut hibernate validator and ValueExtractor 2025-01-08 14:24:11 +01:00
YannC
35ffe7e635 fix(webserver): reset correctly nextExecutionDate when enabling schedule
close #6681
2025-01-08 13:54:14 +01:00
GitHub Action
a1238a9473 chore(translations): auto generate values for languages other than english 2025-01-08 12:10:20 +00:00
YannC
6c205ee1b6 feat(*): fixes and improvements for custom dashboard (#6684)
* feat(*): fixes and improvements for custom dashboard

* chore(translations): auto generate values for languages other than english

---------

Co-authored-by: GitHub Action <actions@github.com>
2025-01-08 13:09:36 +01:00
Ludovic DEHON
47d2b09382 chore(test): minor pebble error 2025-01-08 09:41:57 +01:00
Ludovic DEHON
f2a3ad557a fix(core): worker log are displaying the wrong state on terminated tasks 2025-01-08 08:55:09 +01:00
Ludovic DEHON
317284dfee test(core): add configurable timeout on ExecuteFlow 2025-01-07 19:56:59 +01:00
Ludovic DEHON
c265b49a8e feat(core): add taskRunner output on ScriptOutput to get detailled information on underlying taskrunner 2025-01-07 17:57:18 +01:00
Aabhas Sao
111493c5c8 fix(core): correctly displayed errors icons (#6654)
close #5643
2025-01-07 15:41:35 +01:00
Ludovic DEHON
4fa6adc9c9 chore(core): move builder default on TableColumnDescriptor 2025-01-07 15:32:07 +01:00
Ludovic DEHON
bccd95345f test(core): request test use an internal https server to be stable
self-signed.badssl.com is not working anymore
2025-01-07 14:39:30 +01:00
GitHub Action
4dbf938de3 chore(translations): auto generate values for languages other than english 2025-01-07 11:47:35 +01:00
Loïc Mathieu
576e023d90 feat(ui): add an alert block for restarted execution 2025-01-07 11:47:35 +01:00
Loïc Mathieu
1e36d1eb2a feat(core): restarting Subflow
Fixes https://github.com/kestra-io/kestra-ee/issues/1399
2025-01-07 11:45:10 +01:00
Nicolas K.
a5469c3b4e feat(core): add run context to log shipper (#6651)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-01-07 11:31:02 +01:00
Bart Ledoux
869c6877b7 fix: set the flowEditor docId on new 2025-01-06 22:19:06 +01:00
Ludovic DEHON
d67d44b93a fix(core): http proxy was not used 2025-01-06 21:55:21 +01:00
Nicolas K.
75f55c23ee feat(core-ee): add log shipper first implementation (#6596)
* feat(core-ee): add log shipper first implementation

* fix(core): change state condition on asynchronous test

* fix(core): exit test shouldExitAndKillTheExecution has 3 execution killed

* fix(core): flaky runner test

* clean(core-ee): add documentation and use a list of log shippers in log synch

* fix(core-ee): do log synch tests for each bdd

* clean(test): move the runner test abstraction to core to use it for jdbc and kafka

* fix(test): fix broken tests, and correct an ELS log search bug

* fix(test): flacky tests on kafka runner

* feat(core): add log repository method to have a flux of log entry

* fix(mySql): change log repository fetch asynch

* feat(core): change logShipper to return void

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2025-01-06 17:47:11 +01:00
Loïc Mathieu
9901470b74 feat(*): maintenance mode
Closes #2992
2025-01-06 17:45:10 +01:00
Bart Ledoux
73c100ce1b fix: add proper typing for vuex 2025-01-06 14:37:35 +01:00
YannC
54b7a29a55 feat(): jdbc custom dashboard implementation (#6607)
* WIP: commit to be edited

* feat(*): finished implementation for custom dashboard in JDBC

* chore: disable metricRepository all() test because of leap year

* chore(): PR review
2025-01-06 14:02:53 +01:00
Ludovic DEHON
622f158bd0 feat(webserver): add a configuration to change app html title
close kestra-io/kestra-ee#621
2025-01-06 11:33:15 +01:00
YannC
2740137a80 fix(): ensure object sent is formData (#6639) 2025-01-06 11:20:59 +01:00
yuri1969
2307b2452b chore(build): increase Gradle memory limits
By default the daemon is limited to 512MiB heap. Increasing that to 2GiB
shaved around 10sec off the full build.
2025-01-06 09:12:35 +01:00
Loïc Mathieu
92ff557514 chore(core): tiny perf improvement in MapUtils.merge()
MapUtils.merge() un-necessary clone the map when there is only one map that is not-null and not-empty which is not needed as the map is not modified but returned immediatly.
2025-01-03 19:33:06 +01:00
Loïc Mathieu
aa9af94c14 feat(core): add taskrun.iteration inside Pebble variables
Add iteration index for ForEach and other looping tasks
2025-01-03 18:55:29 +01:00
Bart Ledoux
0cdc6f062d fix: finish the overload of buttons 2025-01-03 17:53:13 +01:00
Ludovic DEHON
e8ee97e26d feat(script): add privileged flags to docker 2025-01-03 16:51:37 +01:00
Bart Ledoux
e1c202a3cb fix: more fixes on css variables 2025-01-03 16:14:03 +01:00
Loïc Mathieu
eaa72dde4e fix(core): multiple conditon tests are flaky
They often use 1s as the deadline /window which can be an issue if the second number increments during testing.

Fixes #6632
2025-01-03 15:16:54 +01:00
Loïc Mathieu
f12a0a0547 fix(core): path traversal guard 2025-01-03 12:24:40 +01:00
Bart Ledoux
e1987ed2e3 fix: element alert background 2025-01-03 12:01:29 +01:00
Bart Ledoux
50a9f6132d fix: select multiple choices icon color an shape 2025-01-03 11:49:59 +01:00
Bart Ledoux
5bec2fc069 fix: alert colors and place of figma theme 2025-01-03 11:35:43 +01:00
Bart Ledoux
68646b07a8 fix: fixes on select boxes 2025-01-03 11:15:34 +01:00
Loïc Mathieu
e5b0ff459a feat(core): add an audit log for executions created by a trigger
Fixes https://github.com/kestra-io/kestra-ee/issues/2427
2025-01-03 10:22:21 +01:00
Loïc Mathieu
409d78615b fix(core): ExitTest is flaky 2025-01-03 10:21:57 +01:00
Loïc Mathieu
b7f9a32015 fix(storage-local): path traversal guard should include File.separator
Today, we check that a file didn't contains '..' which is too aggressive, we should check that it didn't contains '../' or '..\' only.
2025-01-03 10:06:52 +01:00
Ludovic DEHON
6f00cf1838 chore(deps): expose http5 as transitive deps 2025-01-03 09:33:28 +01:00
Loïc Mathieu
44f3639111 fix(jdbc): avoid duplicating the source when deleting the flow
Fixes #5770
2025-01-03 09:30:53 +01:00
Ludovic DEHON
9ebf2ac750 fix(cicd): don't build docker image & maven if failed test 2025-01-03 00:26:20 +01:00
Ludovic DEHON
88709a2dba fix(deps): include httpcore5 in platform deps 2025-01-03 00:18:18 +01:00
Ludovic DEHON
62badb1e53 test(core): add coverage on http logger 2025-01-02 18:11:50 +01:00
Ludovic DEHON
4a5f46132e fix(core): make http client creation explicit 2025-01-02 18:11:50 +01:00
Ludovic DEHON
73b68294ca fix(core): restore deprecated on the ui for http task 2025-01-02 18:11:50 +01:00
Ludovic DEHON
153d4ced9c fix(core): fix download http tasks 2025-01-02 18:11:50 +01:00
Ludovic DEHON
a33f85bf1e fix(core): handle http auth 2025-01-02 18:11:50 +01:00
Ludovic DEHON
5fee07e76f fix(core): configuration of log on the http client 2025-01-02 18:11:50 +01:00
Ludovic DEHON
6dfe29adf6 feat(core): use http abstraction on http tasks 2025-01-02 18:11:50 +01:00
Ludovic DEHON
1772ed45f6 feat(core): add a http client abstraction on top of apache http client 2025-01-02 18:11:50 +01:00
Ludovic DEHON
93dc508882 feat(tasks): move http task to apache http client 2025-01-02 18:11:50 +01:00
Ludovic DEHON
9e643dcc4e chore(tasks): improve unit test of http tasks 2025-01-02 18:11:50 +01:00
Barthélémy Ledoux
b03576c7d8 refactor: major css variable overhaul (#6497)
### In CSS code

#### Bootstrap

- When we find `var(--bs-white)`:
  - if the prop is `background-color` replace it with `--ks-background-card`
  - if the prop is `background` replace it with `--ks-background-card`
- When we find `var(--bs-primary)`:
  - if the prop is `color` replace it with `--ks-content-link`
  - if the prop is `background-color` replace it with `--ks-background-button-primary`
  - if the prop is `background` replace it with `--ks-background-button-primary`
- When we find `var(--bs-purple)`:
  - if the prop is `color` replace it with `--ks-content-link`
  - if the prop is `background-color` replace it with `--ks-background-button-primary`
  - if the prop is `background` replace it with `--ks-background-button-primary`
- When we find `var(--bs-body-color)`:
  - if the prop is `color` replace it with `--ks-content-primary`
- When we find `var(--bs-code-color)`:
  - if the prop is `color` replace it with `--ks-content-id`
- When we find `var(--bs-body-bg)`:
  - if the prop is `background-color` replace it with `--ks-background-body`
  - if the prop is `background` replace it with `--ks-background-body`
- When we find `var(--bs-card-bg)`:
  - if the prop is `background-color` replace it with `--ks-background-card`
  - if the prop is `background` replace it with `--ks-background-card`
- When we find `var(--bs-secondary)`:
  - if the prop is `color` replace it with `--ks-content-secondary`
  - if the prop is `background-color` replace it with `--ks-border-active`
- When we find `var(--bs-tertiary-color)`:
  - if the prop is `color` replace it with `--ks-content-tertiary`
- When we find `var(--bs-border-color)`:
  - if the prop is `border` replace it with `--ks-border-primary`
  - if the prop is `border-color` replace it with `--ks-border-primary`
  - if the prop is `border-bottom` replace it with `--ks-border-primary`
  - if the prop is `border-right` replace it with `--ks-border-primary`
- When we find `var(--bs-card-color)`:
  - if the prop is `color` replace it with `--ks-content-primary`
- When we find `var(--bs-border-secondary-color)`:
  - if the prop is `border` replace it with `--ks-border-secondary`
  - if the prop is `border-color` replace it with `--ks-border-secondary`
  - if the prop is `border-bottom` replace it with `--ks-border-secondary`
- When we find `var(--bs-warning)`:
  - if the prop is `color` replace it with `--ks-content-warning`


#### Element Plus

- When we find `var(--el-bg-color)`:
  - if the prop is `background-color` replace it with `--ks-background-button-secondary-hover`
  - if the prop is `background` replace it with `--ks-background-button-secondary-hover`
- When we find `var(--el-text-primary)`:
  - if the prop is `color` replace it with `--ks-content-primary`
- When we find `var(--el-text-color-regular)`:
  - if the prop is `color` replace it with `--ks-content-primary`
- When we find `var(--el-color-primary)`:
  - if the prop is `border-color` replace it with `--ks-border-active`
  - if the prop is `border` replace it with `--ks-border-active`
  - if the prop is `box-shadow` replace it with `--ks-border-active`
  - if the prop is `color` replace it with `--ks-content-link`
- When we find `var(--el-border-color)`:
  - if the prop is `border` replace it with `--ks-border-primary`
  - if the prop is `border-color` replace it with `--ks-border-primary`
  - if the prop is `border-right` replace it with `--ks-border-primary`
  - if the prop is `border-left` replace it with `--ks-border-primary`
  - if the prop is `border-bottom` replace it with `--ks-border-primary`
  - if the prop is `box-shadow` replace it with `--ks-border-primary`
- When we find `var(--el-border)`:
  - if the prop is `border` replace it with `--ks-border-primary`
  - if the prop is `border-color` replace it with `--ks-border-primary`
  - if the prop is `border-right` replace it with `--ks-border-primary`
  - if the prop is `border-left` replace it with `--ks-border-primary`
- When we find `var(--el-color-text-primary)`:
  - if the prop is `color` replace it with `--ks-content-link`
- When we find `var(--el-text-color-primary)`:
  - if the prop is `color` replace it with `--ks-content-link`
  - if the prop is `background` replace it with `--ks-background-body`
- When we find `var(--el-text-color-secondary)`:
  - if the prop is `color` replace it with `--ks-content-link`
- When we find `var(--el-color-alert-info)`:
  - if the prop is `color` replace it with `--ks-content-information`
- When we find `var(--el-button-bg-color)`:
  - if the prop is `background` replace it with `--ks-background-button-secondary`
  - if the prop is `background-color` replace it with `--ks-background-button-secondary`
  - if the prop is `border` replace it with `--ks-background-button-secondary`
- When we find `var(--el-text-color-disabled)`:
  - if the prop is `color` replace it with `--ks-content-inactive`
- When we find `var(--el-color-warning)`:
  - if the prop is `color` replace it with `--ks-content-warning`


#### Kestra

- When we find `var(--content-alert)`:
  - if the prop is `color` replace it with `--ks-content-alert`
- When we find `var(--card-bg)`:
  - if the prop is `background-color` replace it with `--ks-background-card`
  - if the prop is `background` replace it with `--ks-background-card`
- When we find `var(--input-bg)`:
  - if the prop is `background-color` replace it with `--ks-background-input`
  - if the prop is `background` replace it with `--ks-background-input`
- When we find `var(--log-content-error)`:
  - if the prop is `color` replace it with `--ks-log-content-error`
- When we find `var(--log-background-error)`:
  - if the prop is `background-color` replace it with `--ks-log-background-error`
  - if the prop is `border-top` replace it with `--ks-log-background-error`
- When we find `var(--log-border-error)`:
  - if the prop is `border` replace it with `--ks-log-border-error`
  - if the prop is `border-color` replace it with `--ks-log-border-error`

### In JS code
- When we find `var(--content-color-` in a string interpolation, we replace it with `var(--ks-content-`.
- When we find `var(--border-color-` in a string interpolation, we replace it with `var(--ks-border-`.
- When we find `var(--background-color-` in a string interpolation, we replace it with `var(--ks-background-`.
- When we find `var(--log-content-` in a string interpolation, we replace it with `var(--ks-log-content-`.
2025-01-02 16:35:58 +01:00
Loïc Mathieu
a9ff469f78 fix(core): killing paused without subtask should transition to KILLED
Fixes #6243

When we kill an execution that is running a Pause task that didn't have any subtask, we must transition the task run to KILLED immediatly or the executor will process the Pause task and transition it to SUCCESS.
2025-01-02 14:27:27 +01:00
Loïc Mathieu
6db49aebf0 feat(webserver): OpenAPI spec improvement
Previously, PagedResult contains ArrayListTotal which is a list with a total in it. But due to that, ArrayListTotal is not recognized as an array for the OpenAPI spec so all the endpoints that use it generates incorrect specification.
Switching to a list fixes the issue.
The serialized form is not impacted.
2024-12-31 18:20:30 +01:00
Mathieu Gabelle
c6a09cd9de refactor: migrate AbstractExecScript, CommandsWrapper, NamespaceFiles, OutputFilesInterface to dynamic properties 2024-12-31 16:01:28 +01:00
Piyush Bhaskar
316d514fa3 chore(ui): add header title for column on triggers page (#6608) 2024-12-31 14:00:20 +01:00
Bart Ledoux
5f7695e3e8 build: fix storybook tests 2024-12-30 14:34:08 +01:00
Bart Ledoux
7b4b905819 fix: update package json again to fix storybook tests 2024-12-30 14:21:44 +01:00
Bart Ledoux
0cc5fb964c build: attempt to fix storybook tests swc issue 2024-12-30 12:22:48 +01:00
GitHub Action
27f1430ff6 chore(translations): auto generate values for languages other than english 2024-12-30 09:41:02 +00:00
rajatsingh23
b312ea0f91 feat(ui): introduce log font size property in settings (#6600)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-30 10:40:38 +01:00
Piyush Bhaskar
4bd7585915 chore(ui): add a horizontal scroll bar to editor file tree (#6598) 2024-12-30 10:10:32 +01:00
Piyush Bhaskar
4ccd2fff63 chore(ui): add limit to environment name length (#6597)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-30 09:46:09 +01:00
Miloš Paunović
96d8239b59 chore(ui): introduce horizontal scroll to cascader items 2024-12-27 08:57:17 +01:00
Miloš Paunović
807a44d187 chore(ui): always show flow revision column on executions listing 2024-12-26 08:45:44 +01:00
rajatsingh23
42d752e82e chore(ui): prevent ability to add multiple filters on second try (#6573)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-25 09:33:31 +01:00
Miloš Paunović
ed469d0094 chore(deps): regular dependency update (#6591) 2024-12-25 08:34:26 +01:00
MilosPaunovic
5da044c801 fix(ui): add check for property existence 2024-12-25 08:20:04 +01:00
Loïc Mathieu
ff83e25c0b feat(core): add an Exit task
Fixes #5599
2024-12-24 10:29:31 +01:00
Rajarajan
e9929fd4b2 feat(core): Added a Pebble function [uniq] to deduplice array #6417 2024-12-24 10:02:34 +01:00
Miloš Paunović
354b6b932b chore(ui): introduce new filter bar on namespace kv page (#6570) 2024-12-24 09:38:17 +01:00
MilosPaunovic
8357e0e23f chore(ui): tweak font size for tag component 2024-12-24 09:10:17 +01:00
YannC
8e42c12764 fix(core): better method when looking for 'value' prop in a JsonNode for auditLog patch application (#6569) 2024-12-24 08:20:52 +01:00
Ruturaj Dhakane
93e7ff2ede chore(ui): prevent display of file helpers if there is no file (#6568) 2024-12-23 15:41:43 +01:00
yuri1969
462c505623 fix(core): enable runIf property on flowable tasks 2024-12-23 14:43:59 +01:00
Miloš Paunović
9707b68434 chore(ui): replace language right after saving changes (#6566) 2024-12-23 12:56:13 +01:00
Miloš Paunović
41a90f5c6f fix(ui): improve namespaces filtering (#6564) 2024-12-23 12:30:24 +01:00
Loïc Mathieu
a27ef2ace1 feat(core): add a Write task
Fixes #6524
2024-12-23 12:09:00 +01:00
Miloš Paunović
95af3ea4f5 chore(ui): prevent adding filter parameters if decode prop is passed as false (#6563) 2024-12-23 12:04:30 +01:00
Aabhas Sao
e938e0dc54 chore(ui): handle creation of nested folders properly (#6554)
Signed-off-by: Aabhas Sao <aabhassao0@gmail.com>
2024-12-23 12:01:16 +01:00
GitHub Action
f0a15cdae1 chore(translations): auto generate values for languages other than english 2024-12-23 10:32:06 +00:00
Piyush Bhaskar
bf55ee962c chore(ui): show artwork on flow triggers page instead of locking it (#6555) 2024-12-23 11:31:16 +01:00
Sayed Qassim
8b541aae23 chore(ui): executions in progress link is taking proper filters into account (#6556)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-23 11:03:36 +01:00
Kumar Nirupam
0173470ae8 chore(ui) initial work on clicking filter to change it's value (#6560)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-23 10:53:50 +01:00
Piyush Bhaskar
926b417675 chore(ui): improvement to blueprints inside flow editor tab (#6548) 2024-12-23 09:19:23 +01:00
Piyush Bhaskar
51752b2acc chore(ui): limit accepted file types for flow import (#6550)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-23 09:12:10 +01:00
Maheshwara Sampath
9162e3a2ee chore(ui): rename flow editor tab to edit (#6552) 2024-12-23 08:53:53 +01:00
dependabot[bot]
53c9f395b0 chore(deps): bump org.siouan.frontend-jdk21 from 9.1.0 to 10.0.0
Bumps org.siouan.frontend-jdk21 from 9.1.0 to 10.0.0.

---
updated-dependencies:
- dependency-name: org.siouan.frontend-jdk21
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-21 23:09:06 +01:00
dependabot[bot]
030aff3acb chore(deps): bump org.jsoup:jsoup from 1.18.1 to 1.18.3
Bumps [org.jsoup:jsoup](https://github.com/jhy/jsoup) from 1.18.1 to 1.18.3.
- [Release notes](https://github.com/jhy/jsoup/releases)
- [Changelog](https://github.com/jhy/jsoup/blob/master/CHANGES.md)
- [Commits](https://github.com/jhy/jsoup/compare/jsoup-1.18.1...jsoup-1.18.3)

---
updated-dependencies:
- dependency-name: org.jsoup:jsoup
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-21 23:08:56 +01:00
dependabot[bot]
bc423743e8 chore(deps): bump flyingSaucerVersion from 9.11.1 to 9.11.2
Bumps `flyingSaucerVersion` from 9.11.1 to 9.11.2.

Updates `org.xhtmlrenderer:flying-saucer-core` from 9.11.1 to 9.11.2
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.1...v9.11.2)

Updates `org.xhtmlrenderer:flying-saucer-pdf` from 9.11.1 to 9.11.2
- [Release notes](https://github.com/flyingsaucerproject/flyingsaucer/releases)
- [Changelog](https://github.com/flyingsaucerproject/flyingsaucer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/flyingsaucerproject/flyingsaucer/compare/v9.11.1...v9.11.2)

---
updated-dependencies:
- dependency-name: org.xhtmlrenderer:flying-saucer-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.xhtmlrenderer:flying-saucer-pdf
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-21 23:08:46 +01:00
Barthélémy Ledoux
edb7f54431 fix(ui): only silence the necessary sass warnings
closes #6390
2024-12-21 23:08:33 +01:00
dependabot[bot]
58c1ca2d05 chore(deps): bump org.owasp.dependencycheck from 11.1.0 to 11.1.1
Bumps org.owasp.dependencycheck from 11.1.0 to 11.1.1.

---
updated-dependencies:
- dependency-name: org.owasp.dependencycheck
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 18:12:37 +01:00
dependabot[bot]
7de45c01d1 chore(deps): bump com.google.cloud:libraries-bom from 26.50.0 to 26.52.0
Bumps [com.google.cloud:libraries-bom](https://github.com/googleapis/java-cloud-bom) from 26.50.0 to 26.52.0.
- [Release notes](https://github.com/googleapis/java-cloud-bom/releases)
- [Changelog](https://github.com/googleapis/java-cloud-bom/blob/main/release-please-config.json)
- [Commits](https://github.com/googleapis/java-cloud-bom/compare/v26.50.0...v26.52.0)

---
updated-dependencies:
- dependency-name: com.google.cloud:libraries-bom
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 17:59:09 +01:00
dependabot[bot]
79d67a25bf chore(deps): bump jacksonVersion from 2.18.1 to 2.18.2
Bumps `jacksonVersion` from 2.18.1 to 2.18.2.

Updates `com.fasterxml.jackson:jackson-bom` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-bom/compare/jackson-bom-2.18.1...jackson-bom-2.18.2)

Updates `com.fasterxml.jackson.core:jackson-core` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.18.1...jackson-core-2.18.2)

Updates `com.fasterxml.jackson.core:jackson-databind` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.core:jackson-annotations` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `com.fasterxml.jackson.module:jackson-module-parameter-names` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-modules-java8/compare/jackson-modules-java8-2.18.1...jackson-modules-java8-2.18.2)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-yaml` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-dataformats-text/compare/jackson-dataformats-text-2.18.1...jackson-dataformats-text-2.18.2)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-smile` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-dataformats-binary/compare/jackson-dataformats-binary-2.18.1...jackson-dataformats-binary-2.18.2)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-cbor` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-dataformats-binary/compare/jackson-dataformats-binary-2.18.1...jackson-dataformats-binary-2.18.2)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-ion` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-dataformat-ion/commits)

Updates `com.fasterxml.jackson.dataformat:jackson-dataformat-xml` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-dataformat-xml/compare/jackson-dataformat-xml-2.18.1...jackson-dataformat-xml-2.18.2)

Updates `com.fasterxml.jackson.datatype:jackson-datatype-guava` from 2.18.1 to 2.18.2
- [Commits](https://github.com/FasterXML/jackson-datatypes-collections/compare/jackson-datatypes-collections-2.18.1...jackson-datatypes-collections-2.18.2)

Updates `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.18.1 to 2.18.2

Updates `com.fasterxml.jackson.datatype:jackson-datatype-jdk8` from 2.18.1 to 2.18.2

---
updated-dependencies:
- dependency-name: com.fasterxml.jackson:jackson-bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.core:jackson-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.core:jackson-databind
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.core:jackson-annotations
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.module:jackson-module-parameter-names
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-smile
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-cbor
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-ion
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.dataformat:jackson-dataformat-xml
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-guava
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jdk8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 17:58:02 +01:00
dependabot[bot]
dc966b3b11 chore(deps): bump commons-io:commons-io from 2.17.0 to 2.18.0
Bumps commons-io:commons-io from 2.17.0 to 2.18.0.

---
updated-dependencies:
- dependency-name: commons-io:commons-io
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 17:41:18 +01:00
dependabot[bot]
3cf92f5093 chore(deps): bump org.jooq:jooq from 3.19.15 to 3.19.16
Bumps org.jooq:jooq from 3.19.15 to 3.19.16.

---
updated-dependencies:
- dependency-name: org.jooq:jooq
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 17:41:09 +01:00
Bart Ledoux
e86cdc920f supress CJS warning in storybook 2024-12-20 17:17:42 +01:00
Bart Ledoux
dba5c39ded build: use husky instead of ghooks 2024-12-20 16:31:53 +01:00
dependabot[bot]
d9f1dd1405 chore(deps): bump com.microsoft.playwright:playwright
Bumps [com.microsoft.playwright:playwright](https://github.com/microsoft/playwright-java) from 1.48.0 to 1.49.0.
- [Release notes](https://github.com/microsoft/playwright-java/releases)
- [Commits](https://github.com/microsoft/playwright-java/compare/v1.48.0...v1.49.0)

---
updated-dependencies:
- dependency-name: com.microsoft.playwright:playwright
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 16:15:07 +01:00
dependabot[bot]
ee5f8f952e chore(deps): bump org.opensearch.client:opensearch-java
Bumps [org.opensearch.client:opensearch-java](https://github.com/opensearch-project/opensearch-java) from 2.17.0 to 2.19.0.
- [Release notes](https://github.com/opensearch-project/opensearch-java/releases)
- [Changelog](https://github.com/opensearch-project/opensearch-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/opensearch-project/opensearch-java/compare/v2.17.0...v2.19.0)

---
updated-dependencies:
- dependency-name: org.opensearch.client:opensearch-java
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 15:48:40 +01:00
dependabot[bot]
06c56d582b chore(deps): bump com.azure:azure-sdk-bom from 1.2.29 to 1.2.30
Bumps [com.azure:azure-sdk-bom](https://github.com/azure/azure-sdk-for-java) from 1.2.29 to 1.2.30.
- [Release notes](https://github.com/azure/azure-sdk-for-java/releases)
- [Commits](https://github.com/azure/azure-sdk-for-java/compare/azure-sdk-bom_1.2.29...azure-sdk-bom_1.2.30)

---
updated-dependencies:
- dependency-name: com.azure:azure-sdk-bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 15:28:24 +01:00
dependabot[bot]
3f1758c200 chore(deps): bump io.qameta.allure:allure-bom from 2.29.0 to 2.29.1
Bumps [io.qameta.allure:allure-bom](https://github.com/allure-framework/allure-java) from 2.29.0 to 2.29.1.
- [Release notes](https://github.com/allure-framework/allure-java/releases)
- [Commits](https://github.com/allure-framework/allure-java/compare/2.29.0...2.29.1)

---
updated-dependencies:
- dependency-name: io.qameta.allure:allure-bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 15:28:05 +01:00
dependabot[bot]
7ef8419592 chore(deps): bump software.amazon.awssdk:bom from 2.29.29 to 2.29.37
Bumps software.amazon.awssdk:bom from 2.29.29 to 2.29.37.

---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 14:24:25 +01:00
dependabot[bot]
ad5e731404 chore(deps): bump com.github.docker-java:docker-java-transport-httpclient5
Bumps [com.github.docker-java:docker-java-transport-httpclient5](https://github.com/docker-java/docker-java) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/docker-java/docker-java/releases)
- [Changelog](https://github.com/docker-java/docker-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/docker-java/docker-java/compare/3.4.0...3.4.1)

---
updated-dependencies:
- dependency-name: com.github.docker-java:docker-java-transport-httpclient5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 14:16:20 +01:00
dependabot[bot]
9acdf85254 chore(deps): bump org.sonarqube from 5.1.0.4882 to 6.0.1.5171
Bumps org.sonarqube from 5.1.0.4882 to 6.0.1.5171.

---
updated-dependencies:
- dependency-name: org.sonarqube
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 14:16:07 +01:00
dependabot[bot]
b961fbf472 chore(deps): bump com.github.docker-java:docker-java from 3.4.0 to 3.4.1
Bumps [com.github.docker-java:docker-java](https://github.com/docker-java/docker-java) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/docker-java/docker-java/releases)
- [Changelog](https://github.com/docker-java/docker-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/docker-java/docker-java/compare/3.4.0...3.4.1)

---
updated-dependencies:
- dependency-name: com.github.docker-java:docker-java
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 13:47:07 +01:00
Loïc Mathieu
53af6a38b9 feat(core): add audit log when killing an execution
Fixes https://github.com/kestra-io/kestra-ee/issues/2426
2024-12-20 13:13:51 +01:00
MilosPaunovic
4a94b2237b chore(ui): lint code properly for ci to pass 2024-12-20 12:43:04 +01:00
dependabot[bot]
0f6a0fcc45 chore(deps): bump net.thisptr:jackson-jq from 1.1.0 to 1.2.0
Bumps [net.thisptr:jackson-jq](https://github.com/eiiches/jackson-jq) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/eiiches/jackson-jq/releases)
- [Commits](https://github.com/eiiches/jackson-jq/compare/1.1.0...1.2.0)

---
updated-dependencies:
- dependency-name: net.thisptr:jackson-jq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 12:36:06 +01:00
Loïc Mathieu
3559b640ea feat(jdbc): small improvement to the worker trigger queue 2024-12-20 12:35:39 +01:00
shreeup
4cf68da726 chore(ui): improve behavior on changing theme or language (#6520) 2024-12-20 11:46:19 +01:00
dependabot[bot]
72e6b1b71d chore(deps): bump software.amazon.awssdk.crt:aws-crt
Bumps [software.amazon.awssdk.crt:aws-crt](https://github.com/awslabs/aws-crt-java) from 0.31.1 to 0.33.7.
- [Release notes](https://github.com/awslabs/aws-crt-java/releases)
- [Commits](https://github.com/awslabs/aws-crt-java/compare/v0.31.1...v0.33.7)

---
updated-dependencies:
- dependency-name: software.amazon.awssdk.crt:aws-crt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-20 11:45:07 +01:00
Piyush Bhaskar
6ad5e2379a chore(ui): make the entire row clickable on the gantt page (#6539) 2024-12-20 11:41:08 +01:00
MilosPaunovic
804c3b2d5d chore(ui): expand doughnut chart if there is no legend shown 2024-12-20 11:19:07 +01:00
Florian Hussonnois
729972fd1c build(ci): allow docker-build when skipping tests 2024-12-20 10:59:52 +01:00
Miloš Paunović
5625c210da feat(ui): implement initial stories for filter components (#6542) 2024-12-20 10:26:29 +01:00
Nicolas K.
cbd5d9ced6 fix(runner-kafka): interface contract of template test changed (#6536)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2024-12-19 17:10:54 +01:00
Barthélémy Ledoux
1b26cec0e6 feat(ci): parallelize frontend testing workflow with Storybook, vitest and linter (#6529) 2024-12-19 15:24:04 +01:00
Nicolas K.
59fa27797e Clean flaky tests (#6530)
* feat(tests): don't load all flows if not needed

* feat(tests): don't load all flows if not needed in runner test and runner retry test

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2024-12-19 14:52:43 +01:00
GitHub Action
5b6b501bc8 chore(translations): auto generate values for languages other than english 2024-12-19 13:17:33 +00:00
Miloš Paunović
25084c76a8 chore(ui): implement new filtering system where it was missing (#6531) 2024-12-19 14:17:01 +01:00
Barthélémy Ledoux
8387b6fd9b test: add a story & tests for filter labels (#6526)
* add a story for filter labels

* add some typescript love to filter labels

* add a few stories

* update eslint

* revert changes to label

* fix typings

* wait for the setup to finish
2024-12-19 14:04:43 +01:00
Loïc Mathieu
f550fde76c fix(core): existing ns based on KV and not only flows
Lookup if there are existing KV to know if a ns exist from the kv function and not only if flows exist in the KV.
2024-12-19 13:19:48 +01:00
dependabot[bot]
64e3023585 chore(deps): bump org.apache.logging.log4j:log4j-to-slf4j
Bumps org.apache.logging.log4j:log4j-to-slf4j from 2.24.1 to 2.24.3.

---
updated-dependencies:
- dependency-name: org.apache.logging.log4j:log4j-to-slf4j
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-19 13:04:56 +01:00
Mathieu Gabelle
2290b99332 feat: add Huggingface Plugin 2024-12-19 12:15:34 +01:00
Miloš Paunović
20b7237c97 chore(deps): regular dependency update (#6523) 2024-12-19 08:22:45 +01:00
Miloš Paunović
2391f174a7 fix(ui): if no trigger state filter is selected, show them all (#6522) 2024-12-19 08:13:21 +01:00
Nicolas K.
5f8cd4c14c fix(webserver): rework tests in order to load only required flows (#6517)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2024-12-18 16:42:33 +01:00
Nikhil Sinha
7cd4eda33d feat(): display custom input only if customvalue is enabled (#5692)
Co-authored-by: YannC <ycoornaert@kestra.io>
2024-12-18 15:50:22 +01:00
Barthélémy Ledoux
03b1ba870c refactor(ui): move stories to tests/storybook (#6515) 2024-12-18 15:35:42 +01:00
Anna Geller
7a8d2aeb97 fix: subflow docs 2024-12-18 15:30:04 +01:00
Florian Hussonnois
0ab4b6d10d fix(run): add LD_PRELOAD to handle duckdb/rocksdb libc conflict
related-to: kestra-io/plugin-jdbc#165
2024-12-18 15:28:54 +01:00
GitHub Action
cdc30080f9 chore(translations): auto generate values for languages other than english 2024-12-18 14:17:41 +00:00
YannC
18a2b553ca feat(core): allow SELECT input to be radio UI type
close #5591
2024-12-18 15:17:03 +01:00
Nicolas K.
38dcc75271 fix(core): remove race condition on trigger runner test (#6516)
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2024-12-18 14:04:20 +01:00
Miloš Paunović
1da6e75bc8 chore(ui): improved filter usage throughout the product (#6513) 2024-12-18 11:09:56 +01:00
Anna Geller
0f23d33824 docs: add more keyboard shortcuts 2024-12-18 10:40:32 +01:00
Nicolas K.
bf018c0189 Flaky test add logs (#6504)
* test(runner tests): add logs to track race condition

* feat(tests): add extension to load flows

* clean(tests): remove logs

* feat(tests): move the extension into the right folder

* feat(tests): add new junit extensions, clean tests and now kestraTest can run runner

* clean(tests): small ficxes after merge

* feat(tests): remove @Test from ExecuteFLow

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2024-12-18 10:33:42 +01:00
Barthélémy Ledoux
68c13d92b6 build: setup storybook for development in isolation (#6499) 2024-12-18 09:58:44 +01:00
Barthélémy Ledoux
f87e6253b3 fix: add missing mutation when loading plugin doc form cache (#6502) 2024-12-18 09:13:47 +01:00
Loïc Mathieu
01e6d529f6 fix(jdbc): read the disabled flag from the DB 2024-12-17 17:21:51 +01:00
Loïc Mathieu
556fabc3a4 fix(webserver): correct the triger find endpoint URL 2024-12-17 17:21:51 +01:00
YannC
4187627ef1 fix(core): save flowable's output when flowable is child of another flowable (#6500)
close #6494
2024-12-17 16:23:45 +01:00
dependabot[bot]
149d876442 chore(deps): bump io.micronaut.platform:micronaut-platform
Bumps [io.micronaut.platform:micronaut-platform](https://github.com/micronaut-projects/micronaut-platform) from 4.7.0 to 4.7.2.
- [Release notes](https://github.com/micronaut-projects/micronaut-platform/releases)
- [Commits](https://github.com/micronaut-projects/micronaut-platform/compare/v4.7.0...v4.7.2)

---
updated-dependencies:
- dependency-name: io.micronaut.platform:micronaut-platform
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-17 15:12:16 +01:00
Loïc Mathieu
da1bbb51af feat(core): throw an error if the secret is not found 2024-12-17 15:09:49 +01:00
Loïc Mathieu
b133210fa0 feat(script): include task null outputs
Fixes https://github.com/kestra-io/plugin-scripts/issues/195
2024-12-17 15:08:27 +01:00
GitHub Action
aa8588c3b7 chore(translations): auto generate values for languages other than english 2024-12-17 11:29:14 +00:00
Miloš Paunović
bdd14f40f9 chore(ui): complete the audit log filtering options (#6496) 2024-12-17 12:28:52 +01:00
brian.mulier
a1f1987d71 fix(ui): put 0.0.0 version in package.json as we don't update it and rely on gradle.properties version instead 2024-12-17 12:07:15 +01:00
Florian Hussonnois
908134792e fix(core): properly check next scheduled date for backfill execution (#6413)
Changes:
When a trigger is evaluated for in a back-fill context, we have to make sure
that current-date is strictly after the next execution date for an execution to be eligible.

fix: #6413
2024-12-17 09:58:18 +01:00
Ludovic DEHON
5064606350 fix(jdbc-postgres): escape special chars on full text search
close kestra-io/kestra-ee#2430
close kestra-io/kestra-ee#2454
2024-12-17 08:53:52 +01:00
Piyush Bhaskar
1707b0c48b chore(ui): make tab arrows hidden when there is no need for them(#6486) 2024-12-17 08:21:11 +01:00
Ludovic DEHON
73026d0647 fix(core): handle input & output with id of 1 chars
close #6089
2024-12-16 18:58:48 +01:00
Ludovic DEHON
7067644150 refactor(test): use application context from the current test suite on FlowLoad 2024-12-16 18:58:48 +01:00
Loïc Mathieu
aa8ad15209 feat(core): use the Sleep official task instead of a custom test one 2024-12-16 17:51:12 +01:00
Loïc Mathieu
6a34c04e32 feat(webserver): small improvements to our OpenAPI spec 2024-12-16 16:38:59 +01:00
YannC
2d4fb7684a fix(jdbc): missing SKIPPED state in DB migrations (#6487)
close #6461
2024-12-16 16:04:34 +01:00
MilosPaunovic
6f3aff1467 chore(ui): re-work same filter applying multiple times 2024-12-16 14:50:47 +01:00
Miloš Paunović
2ce20724ca chore(ui): amend scope lables on dasboard filters (#6485) 2024-12-16 14:09:27 +01:00
Miloš Paunović
1b6442ffde chore(ui): autmatically open date picker if absolute date is selected as type (#6484) 2024-12-16 13:57:42 +01:00
Piyush Bhaskar
36dce4c815 chore(ui): improve the styling of error component on executions overview (#6465) 2024-12-16 13:39:18 +01:00
Loïc Mathieu
9238b56008 fix(webserver): TriggerController endpoint issues
- Empty endpoint removed.
- Deprecate for removal a  not-used endpoint.
- Fix incorrect OpenAPI operations
2024-12-16 13:24:03 +01:00
GitHub Action
c57984709d chore(translations): auto generate values for languages other than english 2024-12-16 12:02:14 +00:00
Miloš Paunović
b5e3e9336d chore(ui): improve passing of props to filter component (#6483) 2024-12-16 13:01:53 +01:00
Nicolas K.
008c03ce2d feat(tests): move the extension into the right folder
Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2024-12-16 12:08:35 +01:00
Nicolas K.
dddf4db75a test(runner tests): add logs to track race condition (#6455)
* test(runner tests): add logs to track race condition

* feat(tests): add extension to load flows

* clean(tests): remove logs

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2024-12-16 11:41:55 +01:00
Miloš Paunović
d631e99c7d chore(translations): handle filters key translation (#6479) 2024-12-16 11:40:08 +01:00
GitHub Action
3fb12a66d1 chore(translations): auto generate values for languages other than english 2024-12-16 10:18:11 +00:00
Miloš Paunović
cacfcaf60d chore(ui): rework the file structure in filters section (#6452) 2024-12-16 11:17:41 +01:00
Barthélémy Ledoux
b11d994884 chore: avoid global constants (use window instead) (#6478)
* fix(ui): update global constants to use window scope

* fix vitest
2024-12-16 11:01:03 +01:00
Ludovic DEHON
bfea840faa refactor(test): create an ExecutionUtils to load flow 2024-12-16 10:40:44 +01:00
Miloš Paunović
ce31abf290 chore(ui): add clearable property to select fields on inputs form (#6477) 2024-12-16 09:14:08 +01:00
Arpit Gupta
8313e12d17 chore(ui): use global scope for translations throughout the product (#6466)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-16 08:18:15 +01:00
Arpit Gupta
08ace9735e Fix #6461 'Cancelled' option UI (#6463) 2024-12-15 12:09:48 +01:00
Yoann Vernageau
7696baedec chore: exclude liveness/readiness health checks from access logs (#6453) 2024-12-13 22:37:03 +01:00
Florian Hussonnois
89ccdfc773 fix(core): wait for running executor for liveness executor
Changes:
To safely execute the liveness coordinator task without error
we should wait for the executor to be fully running

part-of: kestra-io/kestra-ee#2492
2024-12-13 16:51:34 +01:00
Florian Hussonnois
751972b58f fix(core): exclude def.failsafe from classloading isolation (#4621) 2024-12-13 16:51:19 +01:00
Bart Ledoux
43657c9b6a remove: lintrc superfluous 2024-12-13 16:27:27 +01:00
nKwiatkowski
870a3217eb fix(tests): remove merge namespace mistake 2024-12-13 15:29:16 +01:00
Nicolas K.
3ec4211b7c fix(core-ee): change Objects.equals for tenant id to prevent NPE (#6411)
* fix(core-ee): change Objects.equals for tenant id to prevent NPE

* fix(core): run tests one by one

* fix(core): add a retry on random failing test

* fix(core): create a specific flow to trigger failure tht check on other namespace to prevent collision with other tests

* rollback(core): put testing config back to previous version to handle it in a separate PR

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2024-12-13 15:04:06 +01:00
Nicolas K.
f1e3d5096c fix(tests): load only required flows for runner tests (#6447)
* fix(tests): load only required flows for runner tests

* clean(tests): use existing interface to wrap the test execution

* clean(tests): use existing interface to wrap the test execution

* clean(tests): remove flow loader and put the method in the main test class

* rollback(tests): put back condition trigger to the original namespace

---------

Co-authored-by: nKwiatkowski <nkwiatkowski@kestra.io>
2024-12-13 14:55:00 +01:00
yuri1969
8a43d5443d fix(): keep OpenAPI spec file name static 2024-12-13 14:44:09 +01:00
Barthélémy Ledoux
ed264a5389 fix: avoid redirect loops when axios calls an unauthorized API (#6450)
* fix: avoid redirect loops when axios calls an unauthorized API

* use the proper structure for axios

* protect against empty request data
2024-12-13 12:33:15 +01:00
GitHub Action
aae4e6b933 chore(translations): auto generate values for languages other than english 2024-12-13 10:49:40 +00:00
Piyush Bhaskar
5de3662c69 chore(ui): improve design of the flow overview page with no executions (#6446)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-13 11:48:02 +01:00
GitHub Action
9090154670 chore(translations): auto generate values for languages other than english 2024-12-13 09:50:51 +00:00
MilosPaunovic
3f104ae9b7 chore(translations): add missing keys 2024-12-13 10:50:20 +01:00
MilosPaunovic
25818878ee chore(ui): amend filter selection 2024-12-13 08:18:38 +01:00
Ludovic DEHON
1267e9b025 chore(core): refactor SecretService 2024-12-13 00:20:12 +01:00
Anna Geller
2594f2816c docs: conditional inputs and outputs 2024-12-12 19:25:48 +01:00
Barthélémy Ledoux
e8a98d9d3c fix: required Boolean & Multiselect rules (#6445)
* fix: required Boolean & Multiselect rules

* fix single line in light mode dark editor
2024-12-12 16:36:34 +01:00
Marco Sabatini
93db727a82 feat(main-gha-workflow): add dispatch event with new version (#6443) 2024-12-12 14:47:15 +01:00
MilosPaunovic
2358bf43f6 chore(ui): align with new version of linter 2024-12-12 14:20:44 +01:00
dependabot[bot]
45c3846e52 chore(deps-dev): bump typescript-eslint from 8.17.0 to 8.18.0 in /ui (#6432)
Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.17.0 to 8.18.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.18.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-12 14:14:41 +01:00
dependabot[bot]
06ed7a1672 chore(deps): bump posthog-js from 1.195.0 to 1.197.0 in /ui (#6427)
Bumps [posthog-js](https://github.com/PostHog/posthog-js) from 1.195.0 to 1.197.0.
- [Release notes](https://github.com/PostHog/posthog-js/releases)
- [Changelog](https://github.com/PostHog/posthog-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/PostHog/posthog-js/compare/v1.195.0...v1.197.0)

---
updated-dependencies:
- dependency-name: posthog-js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-12 14:14:23 +01:00
Barthélémy Ledoux
c29648dd9c chore: update ESlint to v9 (next major) (#6389) 2024-12-12 14:01:27 +01:00
Kratos
cb6f49b7d0 chore(ui): prevent applying same filter multiple times (#6219)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-12 13:52:49 +01:00
Piyush Bhaskar
94bfa38cb8 chore(ui): improve filters expanding (#6415) 2024-12-12 13:48:54 +01:00
GitHub Action
019097465d chore(translations): auto generate values for languages other than english 2024-12-12 12:40:19 +00:00
Miloš Paunović
1488719803 chore(ui): removing recent filter functionality (#6420) 2024-12-12 13:39:57 +01:00
GitHub Action
41e64cc043 chore(translations): auto generate values for languages other than english 2024-12-12 12:20:13 +00:00
Miloš Paunović
262c5ecc66 feat(ui): introduce new filters bar to audit logs (#6419) 2024-12-12 13:19:22 +01:00
Anna Geller
7cdc04029c docs: make windows instructions more specific 2024-12-12 12:49:02 +01:00
hcavana
ac8d404f65 Patch 1 (#6418)
* Update docker-compose.yml

* Update docker-compose.yml

* Update docker-compose.yml

* Update docker-compose.yml

* Update README.md

* Update docker-compose.yml

Changement port 8081 TO 8083

* chore(ui): revert docker-compose changes

* chore(ui): revert docker-compose changes

* chore(ui): revert docker-compose changes

---------

Co-authored-by: Josh Pocock <69722783+joshpocock@users.noreply.github.com>
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-12 12:45:08 +01:00
brian.mulier
88bb0748db fix(ui): avoid unsaved changes pop-up upon clicking on plugin property type definition anchors
closes #6297
2024-12-11 18:35:04 +01:00
brian.mulier
495f2cd391 fix(ui): total is not needed in FlowCreate.vue 2024-12-11 17:17:23 +01:00
brian.mulier
99227a6443 fix(ui): Flow create was no longer generating graph 2024-12-11 17:16:54 +01:00
GitHub Action
c867db8ae2 chore(translations): auto generate values for languages other than english 2024-12-11 13:38:51 +00:00
Piyush Bhaskar
a45fecf95f feat(ui): Add new filters to Administration -> Triggers page (#6328)
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-11 14:38:25 +01:00
MilosPaunovic
e9033462c6 chore(ui): amended the css for filter bar width 2024-12-11 14:13:12 +01:00
michascant
eb74e1fd5b feat(UI): added new filters to Flows -> Metrics tab (#6305)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-11 14:09:40 +01:00
GitHub Action
3ddfe5e8dd chore(translations): auto generate values for languages other than english 2024-12-11 13:08:50 +00:00
Miloš Paunović
382a21100e feat(ui): add missing filter options for metrics (#6409) 2024-12-11 14:08:16 +01:00
Piyush Bhaskar
c3b827951c feat(ui): Triggers: The expanded button displays an empty area. (#6337)
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-11 11:35:37 +01:00
Anna Geller
200cedaca6 fix: deprecated condition 2024-12-11 11:30:27 +01:00
Piyush Bhaskar
b8e5ac3a6d feat(ui):Change arrow and colors tasks on Executions logs tab. (#6355)
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-11 11:13:00 +01:00
brian.mulier
d98488526e fix(ui): add Nuxt alias + bump some deps in package-lock.json 2024-12-11 11:09:52 +01:00
Piyush Bhaskar
bac16e5fab feat(ui): Improve Gantt page. (#6358)
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-11 11:06:34 +01:00
MilosPaunovic
e9be789474 chore(ui): temporarily disable filters bar highlighting 2024-12-11 09:27:08 +01:00
Miloš Paunović
9174710516 chore(deps): regular dependency update (#6402) 2024-12-11 09:10:24 +01:00
Piyush Bhaskar
e5d695c980 feat(ui): improvement in filter for adding clear all filters. (#6359)
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-11 08:59:37 +01:00
Piyush Bhaskar
ccfce4a6de feat(ui): Make filters expand fully if we omit some of the non required buttons (#6364)
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-11 08:43:30 +01:00
Florian Hussonnois
8d02aa7b45 fix(core): exclude common libs from classloading isolation (#4621) 2024-12-10 16:17:10 +01:00
Loïc Mathieu
0e0928d510 feat(core): log at ERROR level for script logs to stderr
Fixes https://github.com/kestra-io/plugin-scripts/issues/190
2024-12-10 13:11:48 +01:00
Miloš Paunović
a0e2c20662 chore(ui): amend description color of system namespace (#6382) 2024-12-10 12:09:01 +01:00
Florian Hussonnois
05eebeda63 fix(core): exclude reactivestreams from classloading isolation (#4621) 2024-12-10 11:18:31 +01:00
Miloš Paunović
023e264a5d fix(ui): pass flow revision on execution overview (#6380) 2024-12-10 10:47:16 +01:00
dependabot[bot]
ba07dc88d1 chore(deps): bump nanoid from 3.3.7 to 3.3.8 in /ui (#6377)
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.8.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.8)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-10 10:32:00 +01:00
Barthélémy Ledoux
0bd8a355ea fix: add typescript tsconfig (#6316)
* add typescript tsconfig

* make progress on typechecking

* fix build process

* update typings

* progress on typescript

* more progress

* restore irrelevant changes

* remove last set of changes
2024-12-10 10:15:57 +01:00
Florian Hussonnois
dcf6c64027 fix(core): ensure child-first strategy for plugin class loading (#4621)
Changes:
- fix child-first strategy
- cleanup the PluginClassLoader class

Fix: #4621
2024-12-10 09:55:20 +01:00
Loïc Mathieu
fe6d6c85bc fix(jdbc): don't delete from the queues table
Fixes https://github.com/kestra-io/kestra-ee/issues/2432
2024-12-10 09:41:07 +01:00
Miloš Paunović
1a84fb96ce chore(ui): respect system theme for editor (#6376) 2024-12-10 08:34:50 +01:00
brian.mulier
db41d81f6e fix(tests): select file for metadata checks in list() test 2024-12-09 18:03:39 +01:00
brian.mulier
34c4ece234 fix(ui): prevent undefined on triggers that don't have sources anymore 2024-12-09 17:57:52 +01:00
Loïc Mathieu
3cd0c7fbe1 chore(core): avoid serialzing the value multiple time 2024-12-09 17:22:39 +01:00
nKwiatkowski
7979809aef feat(plugins): add typesense plugin 2024-12-09 14:21:37 +01:00
Barthélémy Ledoux
f7469070ef feat(ui): add flow validation to FlowCreate component (#6370) 2024-12-09 14:16:57 +01:00
Loïc Mathieu
ba2aa0d231 chore(deps): define GCP, Azure and AWS cloud BOM inside the platform
This avoids possible dependency divergence between all plugins (oss, ee, secret, storage) if they are not updated at the same time.
2024-12-09 12:43:06 +01:00
MilosPaunovic
a78566fc58 chore(docs): switch link to good first issues in readme file 2024-12-09 11:23:16 +01:00
yuri
b1f9da1ad9 chore(*): bump node version used in project (#6327) 2024-12-09 10:52:21 +01:00
Tejas Patil
c526a9a59e chore(ui): prevent opening flow trigger details on row double click (#6354) 2024-12-09 10:39:28 +01:00
Barthélémy Ledoux
d779934ccb docs: context docs appId basic setup (#6341)
* feat(ui): context docs, default  appId with routing

* use the new app api

* add appId copy tooling

* refactor: use docId instead of appId

* rename DocAppId

* make docId box react to click
2024-12-09 10:09:47 +01:00
Shivam
b860cd6518 fix(ui): properly handle filename with multiple dots in editor sidebar (#6362)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-09 10:01:03 +01:00
ANKIT KUMAR
98a867da1c chore(ui): amend font size in tables (#6363)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-09 09:52:47 +01:00
Ludovic DEHON
c6a7c12700 chore(core): add unit test for if nested in parallel 2024-12-08 00:09:52 +01:00
Loïc Mathieu
a27bb1a85d feat(core,jdbc): small trigger / scheduler improvements 2024-12-06 18:09:39 +01:00
Loïc Mathieu
6bb521f4e0 chore(ci): remove generation of latest-full tag
Fixes https://github.com/kestra-io/kestra/issues/4727
2024-12-06 17:05:23 +01:00
Miloš Paunović
596e0c342d chore(ui): improve text label in filter bar (#6350) 2024-12-06 15:44:06 +01:00
Miloš Paunović
54441751e0 chore(ui): remove unused files (#6348) 2024-12-06 15:05:20 +01:00
Florian Hussonnois
6c6f072c2c fix(core): fix cannot create Metric from null in Worker class
fix: kestra-io/kestra-ee#2417
2024-12-06 13:29:08 +01:00
MilosPaunovic
948347ace5 fix(ui): make sure that property exists 2024-12-06 13:05:51 +01:00
Loïc Mathieu
8a26e37455 fix(core): catch errors on task run
Fixes https://github.com/kestra-io/kestra-ee/issues/2416
2024-12-06 11:39:26 +01:00
Loïc Mathieu
6a953d194d chore(jdbc): remove not used method 2024-12-06 11:31:52 +01:00
sanketmagar2001
fb59a6b4ea chore(ui): initial work on improving display of topology (#5606)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-06 11:22:01 +01:00
Piyush Bhaskar
8a511e2d03 chore(ui): improve the styling of boolean buttons on inputs form (#6055)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
2024-12-06 11:08:44 +01:00
Nitin Kumar Pal
72882dfa20 chore(ui): vertically center content in flows table rows (#6330)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-06 10:50:18 +01:00
YannC
525fcf6b70 fix(ui): axios missing content type 2024-12-06 10:40:55 +01:00
brian.mulier
21bf09df11 fix(jdbc): topology was built across all tenants 2024-12-06 09:52:15 +01:00
Miloš Paunović
9222cfa7cc chore(ui): prevent text wrap inside trigger id column (#6336) 2024-12-06 09:30:17 +01:00
Miloš Paunović
89f5de4e9c chore(ui): respect date format form setting inside filter label (#6335) 2024-12-06 09:14:32 +01:00
Yerin Lee
f2bfc232c3 chore(ui): add scrolling to totals chart legend if more than 4 items present (#5971)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-05 15:36:57 +01:00
Florian Hussonnois
ff0b7c4a0a refactor(core): optimize keepLastVersionCollector method 2024-12-05 15:20:12 +01:00
Florian Hussonnois
85a22bcfaa fix(core): fix potential NPE in AbstractServiceLivenessCoordinator 2024-12-05 15:07:58 +01:00
Piyush Bhaskar
23cf3200d7 chore(ui): improve bulk actions design in the executions listing (#6240)
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-05 14:49:48 +01:00
Manoj Balaraj
b9aebdbb5d fix(ui): properly handle pebble expression if it contains dash character (#6062)
Co-authored-by: manu2931 <manojb912@gmai.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-05 14:09:58 +01:00
yuri
797b21489f chore(ui): add tooltips for filter section buttons (#5942)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-05 13:47:56 +01:00
Miloš Paunović
099d9e1efd chore(translations): align keys with english (#6324) 2024-12-05 13:38:53 +01:00
Miloš Paunović
4a76fc7dc9 fix(ui): show status label in dialog for changing execution status (#6323) 2024-12-05 13:29:59 +01:00
Will Russell
13fe55dc99 fix(docs): table formatting 2024-12-05 11:04:50 +00:00
Miloš Paunović
604fc71adb feat(ui): add triggers sorting by next execution date (#6318) 2024-12-05 12:03:20 +01:00
Loïc Mathieu
985a10610c chore(core): remove Flow source auto-generation
Fixes #5694
2024-12-05 11:44:04 +01:00
YannC
ef5ece9721 fix(webserver): automatically handle trailing slash in delete endpoint for namespace files (#6266)
close #6118
2024-12-05 11:32:43 +01:00
Aabhas Sao
a05f707e90 chore(ui): uniform log line buttons styling (#6254) 2024-12-05 10:59:26 +01:00
GitHub Action
b63c2361c9 chore(translations): auto generate values for languages other than english 2024-12-05 09:52:51 +00:00
Miloš Paunović
7a6d9fa48d chore(ui): clean up of welcome page usage of markdown files (#6315) 2024-12-05 10:51:34 +01:00
Loïc Mathieu
96b7307376 Revert "feat(core): Add displayName to flow level outputs(backend) (#5605)"
This reverts commit a5741aa424.

This reverts commit 42f721fdec.

This reverts commit 0de24c4448.
2024-12-05 10:28:41 +01:00
Miloš Paunović
1f843272a9 fix(ui): filter out system labels from executing using prefill (#6311) 2024-12-05 09:20:59 +01:00
Abhishek Pawar
8ce0ed7b6d chore(ui): uniform the height of cards on main dashboard (#6213)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-05 09:02:13 +01:00
Piyush Bhaskar
91e7fdb137 chore(ui): remove default editor outline (#6303)
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
2024-12-05 08:36:29 +01:00
Miloš Paunović
f57106a5f8 fix(ui): only apply editor padding on main editor (#6310) 2024-12-05 08:32:51 +01:00
Loïc Mathieu
9cb1e5d466 fix(core): copy the list to avoid concurrent modification exception in count
This would avoid this test failure: https://github.com/kestra-io/kestra/pull/6264/checks?check_run_id=33916950881
2024-12-04 17:25:04 +01:00
Bart Ledoux
fe9db94b07 remove eslint from vite 2024-12-04 17:07:22 +01:00
Barthélémy Ledoux
3df1c3778e refactor: replace getCurrentInstance router access with useRouter (#6210) 2024-12-04 16:38:31 +01:00
Barthélémy Ledoux
4e3b23831e chore: upgrade vue-router to 4.5.0 (#6298)
* re-update router

* fix leftmenulink
2024-12-04 16:14:12 +01:00
Barthélémy Ledoux
aed3cc6650 refactor(ui): enforce block order in ESLint configuration (#6299) 2024-12-04 16:13:50 +01:00
Rohit Ghumare
3248cdde4a chore(ui): initial work on output icons issue (#5746)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-04 15:55:29 +01:00
osmaneTKT
664ab85353 chore(ui): initial work on debug expression sidebar resizing on outputs page (#5878)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-04 15:44:26 +01:00
Bardan Putra Prananto
b9ccc4b0e9 fix(core): Fix Pause property annotation, exclude Input subtypes from definitions (#6265)
* fix(core): Fix Pause property annotation and exclude Input subtypes from definitions

* only enable filter if base class is null
2024-12-04 15:06:05 +01:00
pphy03
9cdaefcadf chore(ui): make confirmation dialogs properly render markdown content (#5986)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-04 14:47:24 +01:00
Bart Ledoux
f02cf1f51e fix: rollback router update 2024-12-04 14:32:01 +01:00
RizviSyed
ba94893eeb #6208 Refactored based on comments 2024-12-04 14:26:59 +01:00
RizviSyed
5c66903a9c #6208 Refactored based on comments 2024-12-04 14:26:59 +01:00
RizviSyed
433375177f #6208 Renamed class 2024-12-04 14:26:59 +01:00
RizviSyed
d25e9fa063 #6208 Added a Pebble function to generate a UUID
Closes #6208.
2024-12-04 14:26:59 +01:00
Abhishek Pawar
1aa6be0ee7 fix(ui): handle logs selector overflow in a good manner (#6224)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-04 14:16:10 +01:00
Aabhas Sao
646c2a6a6f fix(ui): properly filter flows in namespace tab (#6046)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-04 14:02:04 +01:00
RizviSyed
fb762a91af #6207 Refactored based on comments 2024-12-04 14:00:15 +01:00
RizviSyed
c503f3d387 #6207 Refactored based on comments 2024-12-04 14:00:15 +01:00
RizviSyed
9c610d89e2 #6207 Added additional test case 2024-12-04 14:00:15 +01:00
RizviSyed
1d6fe271e2 #6207 Added Random Number generator 2024-12-04 14:00:15 +01:00
Miloš Paunović
03acc8580e chore(ui): automatically add namespace filter where needed (#6296) 2024-12-04 13:56:09 +01:00
Ian Cheng
948fa7858f feat(ui): add right click menu on file tree view in editor (#5936)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-04 13:19:48 +01:00
Loïc Mathieu
348547268f fix(core, webserver): properly close the queue on Flux.onFinally
Two fixes:
- close the queue onFinally and not onComplete and onCancel to take into accunt errors.
- close the queue onFinally in the execution creation as now it is only done on the success path and not even via a Flux lifecycle method

This may fix or improve some incosistent behavior reported by users on the webserver.
2024-12-04 12:17:29 +01:00
Loïc Mathieu
973ba0342e fix(core): Correctly parse Content-Disposition in the Download task
Fixes #6270
2024-12-04 12:16:22 +01:00
Piyush Bhaskar
b0509b8c51 chore(ui): amend tags design on blueprints section (#6229)
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-04 12:11:32 +01:00
GitHub Action
7171c56979 chore(translations): auto generate values for languages other than english 2024-12-04 11:00:21 +00:00
Piyush Bhaskar
5ee8dc1341 chore(ui): Improvement in Welcome Page. (#6077)
* chore(ui): Improvement in Welcome Page.

* Update Welcome.vue | scoped the styling

* fix bad merge

* remove special behavior of navbar on welcome

* finish the welcome page (thank you)

* fix: better adaptive layout

* use container queries and flex for better responsive design

* chore(translations): auto generate values for languages other than english

---------

Co-authored-by: Barthélémy Ledoux <ledouxb@me.com>
Co-authored-by: Bart Ledoux <bledoux@kestra.io>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
Co-authored-by: GitHub Action <actions@github.com>
2024-12-04 11:59:23 +01:00
Florian Hussonnois
5330aa0e84 chore(ci): add workflow to release all plugins 2024-12-04 11:09:47 +01:00
Loïc Mathieu
91dd6170f1 fix(jdbc): possible race when initializing the JdbcMapper 2024-12-04 10:40:50 +01:00
Hyoseop Song
ba0e770a05 Add subpath guard function to avoid non-relative subpath parsed URI 2024-12-04 10:40:32 +01:00
dependabot[bot]
e850764403 chore(deps): bump org.jooq:jooq from 3.19.14 to 3.19.15
Bumps org.jooq:jooq from 3.19.14 to 3.19.15.

---
updated-dependencies:
- dependency-name: org.jooq:jooq
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-04 10:12:31 +01:00
dependabot[bot]
296e2739a5 chore(deps): bump aquasecurity/trivy-action from 0.28.0 to 0.29.0
Bumps [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action) from 0.28.0 to 0.29.0.
- [Release notes](https://github.com/aquasecurity/trivy-action/releases)
- [Commits](https://github.com/aquasecurity/trivy-action/compare/0.28.0...0.29.0)

---
updated-dependencies:
- dependency-name: aquasecurity/trivy-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-04 10:06:01 +01:00
dependabot[bot]
d6029b0908 chore(deps): bump andrcuns/allure-publish-action from 2.8.0 to 2.9.0
Bumps [andrcuns/allure-publish-action](https://github.com/andrcuns/allure-publish-action) from 2.8.0 to 2.9.0.
- [Release notes](https://github.com/andrcuns/allure-publish-action/releases)
- [Commits](https://github.com/andrcuns/allure-publish-action/compare/v2.8.0...v2.9.0)

---
updated-dependencies:
- dependency-name: andrcuns/allure-publish-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-04 10:05:52 +01:00
Loïc Mathieu
e165052693 chore(core): remove deprecated RunContext.render(Property) methods 2024-12-04 09:41:55 +01:00
Loïc Mathieu
fb9691d67a chore(core): avoid using applicationContext.init() in the RunContext
This will improve performance as a run context is created very often.

Fixes #5492
2024-12-04 09:41:55 +01:00
Miloš Paunović
67840589b6 chore(deps): regular dependency update (#6287) 2024-12-04 09:31:07 +01:00
Nitin Bisht
418aa9dd38 chore(ui): amend spacing on plugins page (#6223)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-04 08:54:24 +01:00
yuri
c74828685f fix(ui): generalize filter width across browsers (#5980)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-04 08:51:11 +01:00
Joe Celaster
eb1cbfa4d9 chore(ui): remove search field background on single plugin page (#6220)
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-04 08:48:08 +01:00
Manoj Balaraj
57bc721c61 fix(ui): improve debug outputs expression on initial load (#6094)
Co-authored-by: manu2931 <manojb912@gmai.com>
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-04 08:44:25 +01:00
GitHub Action
02898d29ac chore(translations): auto generate values for languages other than english 2024-12-04 07:41:28 +00:00
morri12
4901c1b127 chore(ui): add a confirmation dialog before removing a bookmark (#6217)
Co-authored-by: Ryanator <ryanmorris@rogers.com>
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-04 08:41:00 +01:00
Piyush Bhaskar
c95d474500 chore(ui): add top and left padding to editor component (#6191)
Co-authored-by: Piyush-r-bhaskar <piyush.bhaskar@gmail.com>
Co-authored-by: MilosPaunovic <paun992@hotmail.com>
2024-12-04 08:38:24 +01:00
Ines Qian
7f6436f95f chore(ui): properly highlight selected options in all of the filter dropdowns (#6173)
Co-authored-by: Miloš Paunović <paun992@hotmail.com>
2024-12-04 08:33:50 +01:00
brian.mulier
6dbdfad9ce fix(test): add metadata assertion to storage listing 2024-12-03 20:33:46 +01:00
Barthélémy Ledoux
d67df717f2 fix(docs): keep use in docs sidebar when clicking in TOC page (#6262)
* fix(docs): keep use in docs sidebar when clicking in TOC page

* fix: allow open in a new tab and main menu in docs

* woops

* woops I did it again

* fix: context docs link should never move away from page

* remove vue warnings
2024-12-03 14:28:27 +01:00
Loïc Mathieu
0f2c5bb57e fix(core): possible NPE when the Executor didn't have the flow 2024-12-03 12:19:10 +01:00
Florian Hussonnois
fba4a7929e chore(version): update snapshot version 'v0.21.0-SNAPSHOT'. 2024-12-03 12:06:06 +01:00
Florian Hussonnois
279be83445 chore(version): update to version 'v0.20.0'. 2024-12-03 12:06:03 +01:00
1772 changed files with 108872 additions and 47126 deletions

82
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,82 @@
FROM ubuntu:24.04
ARG BUILDPLATFORM
ARG DEBIAN_FRONTEND=noninteractive
USER root
WORKDIR /root
RUN apt update && apt install -y \
apt-transport-https ca-certificates gnupg curl wget git zip unzip less zsh net-tools iputils-ping jq lsof
ENV HOME="/root"
# --------------------------------------
# Git
# --------------------------------------
# Need to add the devcontainer workspace folder as a safe directory to enable git
# version control system to be enabled in the containers file system.
RUN git config --global --add safe.directory "/workspaces/kestra"
# --------------------------------------
# --------------------------------------
# Oh my zsh
# --------------------------------------
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" -- \
-t robbyrussell \
-p git -p node -p npm
ENV SHELL=/bin/zsh
# --------------------------------------
# --------------------------------------
# Java
# --------------------------------------
ARG OS_ARCHITECTURE
RUN mkdir -p /usr/java
RUN echo "Building on platform: $BUILDPLATFORM"
RUN case "$BUILDPLATFORM" in \
"linux/amd64") OS_ARCHITECTURE="linux-x64" ;; \
"linux/arm64") OS_ARCHITECTURE="linux-aarch64" ;; \
"darwin/amd64") OS_ARCHITECTURE="macos-x64" ;; \
"darwin/arm64") OS_ARCHITECTURE="macos-aarch64" ;; \
*) echo "Unsupported BUILDPLATFORM: $BUILDPLATFORM" && exit 1 ;; \
esac && \
wget "https://aka.ms/download-jdk/microsoft-jdk-21.0.6-$OS_ARCHITECTURE.tar.gz" && \
mv "microsoft-jdk-21.0.6-$OS_ARCHITECTURE.tar.gz" microsoft-jdk-21.0.6.tar.gz
RUN tar -xzvf microsoft-jdk-21.0.6.tar.gz && \
mv jdk-21.0.6+7 jdk-21 && \
mv jdk-21 /usr/java/
ENV JAVA_HOME=/usr/java/jdk-21
ENV PATH="$PATH:$JAVA_HOME/bin"
# Will load a custom configuration file for Micronaut
ENV MICRONAUT_ENVIRONMENTS=local,override
# Sets the path where you save plugins as Jar and is loaded during the startup process
ENV KESTRA_PLUGINS_PATH="/workspaces/kestra/local/plugins"
# --------------------------------------
# --------------------------------------
# Node.js
# --------------------------------------
RUN curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh \
&& bash nodesource_setup.sh && apt install -y nodejs
# Increases JavaScript heap memory to 4GB to prevent heap out of error during startup
ENV NODE_OPTIONS=--max-old-space-size=4096
# --------------------------------------
# --------------------------------------
# Python
# --------------------------------------
RUN apt install -y python3 pip python3-venv
# --------------------------------------
# --------------------------------------
# SSH
# --------------------------------------
RUN mkdir -p ~/.ssh
RUN touch ~/.ssh/config
RUN echo "Host github.com" >> ~/.ssh/config \
&& echo " IdentityFile ~/.ssh/id_ed25519" >> ~/.ssh/config
RUN touch ~/.ssh/id_ed25519
# --------------------------------------

149
.devcontainer/README.md Normal file
View File

@@ -0,0 +1,149 @@
# Kestra Devcontainer
This devcontainer provides a quick and easy setup for anyone using VSCode to get up and running quickly with this project to start development on either the frontend or backend. It bootstraps a docker container for you to develop inside of without the need to manually setup the environment.
---
## INSTRUCTIONS
### Setup:
Take a look at this guide to get an idea of what the setup is like as this devcontainer setup follows this approach: https://kestra.io/docs/getting-started/contributing
Once you have this repo cloned to your local system, you will need to install the VSCode extension [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack).
Then run the following command from the command palette:
`Dev Containers: Open Folder in Container...` and select your Kestra root folder.
This will then put you inside a docker container ready for development.
NOTE: you'll need to wait for the gradle build to finish and compile Java files but this process should happen automatically within VSCode.
In the meantime, you can move onto the next step...
---
### Development:
- Create a `.env.development.local` file in the `ui` folder and paste the following:
```bash
# This lets the frontend know what the backend URL is but you are free to change this to your actual server URL e.g. hosted version of Kestra.
VITE_APP_API_URL=http://localhost:8080
```
- Navigate into the `ui` folder and run `npm install` to install the dependencies for the frontend project.
- Now go to the `cli/src/main/resources` folder and create a `application-override.yml` file.
Now you have two choices:
`Local mode`:
Runs the Kestra server in local mode which uses a H2 database, so this is the only config you'd need:
```yaml
micronaut:
server:
cors:
enabled: true
configurations:
all:
allowedOrigins:
- http://localhost:5173
```
You can then open a new terminal and run the following command to start the backend server: `./gradlew runLocal`
`Standalone mode`:
Runs in standalone mode which uses Postgres. Make sure to have a local Postgres instance already running on localhost:
```yaml
kestra:
repository:
type: postgres
storage:
type: local
local:
base-path: "/app/storage"
queue:
type: postgres
tasks:
tmp-dir:
path: /tmp/kestra-wd/tmp
anonymous-usage-report:
enabled: false
server:
basic-auth:
enabled: false
datasources:
postgres:
# It is important to note that you must use the "host.docker.internal" host when connecting to a docker container outside of your devcontainer as attempting to use localhost will only point back to this devcontainer.
url: jdbc:postgresql://host.docker.internal:5432/kestra
driverClassName: org.postgresql.Driver
username: kestra
password: k3str4
flyway:
datasources:
postgres:
enabled: true
locations:
- classpath:migrations/postgres
# We must ignore missing migrations as we may delete the wrong ones or delete those that are not used anymore.
ignore-migration-patterns: "*:missing,*:future"
out-of-order: true
micronaut:
server:
cors:
enabled: true
configurations:
all:
allowedOrigins:
- http://localhost:5173
```
Then add the following settings to the `.vscode/launch.json` file:
```json
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Kestra Standalone",
"request": "launch",
"mainClass": "io.kestra.cli.App",
"projectName": "cli",
"args": "server standalone"
}
]
}
```
You can then use the VSCode `Run and Debug` extension to start the Kestra server.
Additionally, if you're doing frontend development, you can run `npm run dev` from the `ui` folder after having the above running (which will provide a backend) to access your application from `localhost:5173`. This has the benefit to watch your changes and hot-reload upon doing frontend changes.
#### Plugins
If you want your plugins to be loaded inside your devcontainer, point the `source` field to a folder containing jars of the plugins you want to embed in the following snippet in `devcontainer.json`:
```
"mounts": [
{
"source": "/absolute/path/to/your/local/jar/plugins/folder",
"target": "/workspaces/kestra/local/plugins",
"type": "bind"
}
],
```
---
### GIT
If you want to commit to GitHub, make sure to navigate to the `~/.ssh` folder and either create a new SSH key or override the existing `id_ed25519` file and paste an existing SSH key from your local machine into this file. You will then need to change the permissions of the file by running: `chmod 600 id_ed25519`. This will allow you to then push to GitHub.
---

View File

@@ -0,0 +1,46 @@
{
"name": "kestra",
"build": {
"context": ".",
"dockerfile": "Dockerfile"
},
"workspaceFolder": "/workspaces/kestra",
"forwardPorts": [5173, 8080],
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.profiles.linux": {
"zsh": {
"path": "/bin/zsh"
}
},
"workbench.iconTheme": "vscode-icons",
"editor.tabSize": 4,
"editor.formatOnSave": true,
"files.insertFinalNewline": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"telemetry.telemetryLevel": "off",
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": "active"
},
"extensions": [
"redhat.vscode-yaml",
"dbaeumer.vscode-eslint",
"vscode-icons-team.vscode-icons",
"eamodio.gitlens",
"esbenp.prettier-vscode",
"aaron-bond.better-comments",
"codeandstuff.package-json-upgrade",
"andys8.jest-snippets",
"oderwat.indent-rainbow",
"evondev.indent-rainbow-palettes",
"formulahendry.auto-rename-tag",
"IronGeek.vscode-env",
"yoavbls.pretty-ts-errors",
"github.vscode-github-actions",
"vscjava.vscode-java-pack",
"ms-azuretools.vscode-docker"
]
}
}
}

View File

@@ -37,6 +37,10 @@ The following dependencies are required to build Kestra locally:
- Docker & Docker Compose
- an IDE (Intellij IDEA, Eclipse or VS Code)
Thanks to the Kestra community, if using VSCode, you can also start development on either the frontend or backend with a bootstrapped docker container without the need to manually set up the environment.
Check out the [README](../.devcontainer/README.md) for set-up instructions and the associated [Dockerfile](../.devcontainer/Dockerfile) in the respository to get started.
To start contributing:
- [Fork](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) the repository
- Clone the fork on your workstation:
@@ -46,7 +50,7 @@ git clone git@github.com:{YOUR_USERNAME}/kestra.git
cd kestra
```
#### Develop backend
#### Develop on the backend
The backend is made with [Micronaut](https://micronaut.io).
Open the cloned repository in your favorite IDE. In most of decent IDEs, Gradle build will be detected and all dependencies will be downloaded.
@@ -72,7 +76,7 @@ python3 -m pip install virtualenv
```
#### Develop frontend
#### Develop on the frontend
The frontend is made with [Vue.js](https://vuejs.org/) and located on the `/ui` folder.
- `npm install`

View File

@@ -13,6 +13,9 @@ outputs:
plugins:
description: "List of all Kestra plugins"
value: ${{ steps.plugins.outputs.plugins }}
repositories:
description: "List of all Kestra repositories of plugins"
value: ${{ steps.plugins.outputs.repositories }}
runs:
using: composite
steps:
@@ -20,5 +23,7 @@ runs:
id: plugins
shell: bash
run: |
PLUGINS=$([ -f ${{ inputs.plugin-file }} ] && cat ${{ inputs.plugin-file }} | grep "io\\.kestra\\." | sed -e '/#/s/^.//' | sed -e "s/LATEST/${{ inputs.plugin-version }}/g" | xargs || echo '');
PLUGINS=$([ -f ${{ inputs.plugin-file }} ] && cat ${{ inputs.plugin-file }} | grep "io\\.kestra\\." | sed -e '/#/s/^.//' | sed -e "s/LATEST/${{ inputs.plugin-version }}/g" | cut -d':' -f2- | xargs || echo '');
REPOSITORIES=$([ -f ${{ inputs.plugin-file }} ] && cat ${{ inputs.plugin-file }} | grep "io\\.kestra\\." | sed -e '/#/s/^.//' | cut -d':' -f1 | uniq | sort | xargs || echo '')
echo "plugins=$PLUGINS" >> $GITHUB_OUTPUT
echo "repositories=$REPOSITORIES" >> $GITHUB_OUTPUT

View File

@@ -33,9 +33,6 @@ updates:
open-pull-requests-limit: 50
labels: ["dependency-upgrade"]
ignore:
# Ignore major versions greater than 8, as it's still known to be flaky
- dependency-name: "eslint"
versions: [">8"]
# Ignore updates of version 1.x, as we're using beta of 2.x
- dependency-name: "vue-virtual-scroller"
versions: ["1.x"]

View File

@@ -0,0 +1,67 @@
name: Auto-Translate UI keys and create PR
on:
schedule:
- cron: "0 9-21 * * *" # Every hour from 9 AM to 9 PM
workflow_dispatch:
inputs:
retranslate_modified_keys:
description: "Whether to re-translate modified keys even if they already have translations."
type: choice
options:
- "false"
- "true"
default: "false"
required: false
jobs:
translations:
name: Translations
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
name: Checkout
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install Python dependencies
run: pip install gitpython openai
- name: Generate translations
run: python ui/src/translations/generate_translations.py ${{ github.event.inputs.retranslate_modified_keys }}
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "20.x"
- name: Check keys matching
run: node ui/src/translations/check.js
- name: Set up Git
run: |
git config --global user.name "GitHub Action"
git config --global user.email "actions@github.com"
- name: Commit and create PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
BRANCH_NAME="chore/update-translations-$(date +%s)"
git checkout -b $BRANCH_NAME
git add ui/src/translations/*.json
if git diff --cached --quiet; then
echo "No changes to commit. Exiting with success."
exit 0
fi
git commit -m "chore(core): localize to languages other than english" -m "Extended localization support by adding translations for multiple languages using English as the base. This enhances accessibility and usability for non-English-speaking users while keeping English as the source reference."
git push -u origin $BRANCH_NAME || (git push origin --delete $BRANCH_NAME && git push -u origin $BRANCH_NAME)
gh pr create --title "Translations from en.json" --body "This PR was created automatically by a GitHub Action." --base develop --head $BRANCH_NAME --assignee anna-geller --reviewer anna-geller

View File

@@ -1,117 +0,0 @@
name: Daily Core check
on:
schedule:
- cron: '0 5 * * *'
jobs:
check:
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
name: Check & Publish
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
# Checkout
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Checkout GitHub Actions
- uses: actions/checkout@v4
with:
repository: kestra-io/actions
path: actions
ref: main
# Setup build
- uses: ./actions/.github/actions/setup-build
id: build
with:
java-enabled: true
node-enabled: true
python-enabled: true
caches-enabled: true
# Services
- name: Build the docker-compose stack
run: docker compose -f docker-compose-ci.yml up -d
if: ${{ github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '' }}
# Gradle check
- name: Build with Gradle
if: ${{ github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '' }}
env:
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
run: |
echo $GOOGLE_SERVICE_ACCOUNT | base64 -d > ~/.gcp-service-account.json
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/.gcp-service-account.json
./gradlew check javadoc --parallel --refresh-dependencies
# Sonar
- name: Analyze with Sonar
if: ${{ env.SONAR_TOKEN != 0 && (github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '') }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew sonar --info
# Allure check
- name: Auth to Google Cloud
id: auth
if: ${{ always() && env.GOOGLE_SERVICE_ACCOUNT != 0 }}
uses: 'google-github-actions/auth@v2'
with:
credentials_json: '${{ secrets.GOOGLE_SERVICE_ACCOUNT }}'
- uses: rlespinasse/github-slug-action@v5
- name: Publish allure report
uses: andrcuns/allure-publish-action@v2.8.0
if: ${{ always() && env.GOOGLE_SERVICE_ACCOUNT != 0 && (github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '') }}
env:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
JAVA_HOME: /usr/lib/jvm/default-jvm/
with:
storageType: gcs
resultsGlob: "**/build/allure-results"
bucket: internal-kestra-host
baseUrl: "https://internal.kestra.io"
prefix: ${{ format('{0}/{1}', github.repository, 'allure/java') }}
copyLatest: true
ignoreMissingResults: true
# Jacoco
- name: 'Set up Cloud SDK'
if: ${{ github.ref == 'refs/heads/develop' && env.GOOGLE_SERVICE_ACCOUNT != 0 && (github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '') }}
uses: 'google-github-actions/setup-gcloud@v2'
- name: 'Copy jacoco files'
if: ${{ github.ref == 'refs/heads/develop' && env.GOOGLE_SERVICE_ACCOUNT != 0 && (github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '') }}
run: |
mv build/reports/jacoco/testCodeCoverageReport build/reports/jacoco/test/
mv build/reports/jacoco/test/testCodeCoverageReport.xml build/reports/jacoco/test/jacocoTestReport.xml
gsutil -m rsync -d -r build/reports/jacoco/test/ gs://internal-kestra-host/${{ format('{0}/{1}', github.repository, 'jacoco') }}
# report test
- name: Test Report
uses: mikepenz/action-junit-report@v5
if: success() || failure()
with:
report_paths: '**/build/test-results/**/TEST-*.xml'
# Codecov
- uses: codecov/codecov-action@v5
if: ${{ github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '' }}
with:
token: ${{ secrets.CODECOV_TOKEN }}
- name: Notify failed CI
id: send-ci-failed
if: always() && job.status != 'success'
uses: kestra-io/actions/.github/actions/send-ci-failed@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

View File

@@ -6,11 +6,11 @@
name: "CodeQL"
on:
push:
branches: [develop]
schedule:
- cron: '0 5 * * 1'
workflow_dispatch: {}
jobs:
analyze:
name: Analyze
@@ -51,13 +51,23 @@ jobs:
# Set up JDK
- name: Set up JDK
uses: actions/setup-java@v4
if: ${{ matrix.language == 'java' }}
with:
distribution: 'temurin'
java-version: 21
- name: Setup gradle
if: ${{ matrix.language == 'java' }}
uses: gradle/actions/setup-gradle@v4
- name: Build with Gradle
if: ${{ matrix.language == 'java' }}
run: ./gradlew testClasses -x :ui:assembleFrontend
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
if: ${{ matrix.language != 'java' }}
uses: github/codeql-action/autobuild@v3
# Command-line programs to run using the OS shell.

View File

@@ -1,4 +1,4 @@
name: Create Docker images on tag
name: Create Docker images on Release
on:
workflow_dispatch:
@@ -11,6 +11,10 @@ on:
options:
- "true"
- "false"
release-tag:
description: 'Kestra Release Tag'
required: false
type: string
plugin-version:
description: 'Plugin version'
required: false
@@ -38,17 +42,16 @@ jobs:
name: Publish Docker
needs: [ plugins ]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
strategy:
matrix:
image:
- name: "-no-plugins"
plugins: ""
packages: ""
packages: jattach
python-libs: ""
- name: ""
plugins: ${{needs.plugins.outputs.plugins}}
packages: python3 python3-venv python-is-python3 python3-pip nodejs npm curl zip unzip
packages: python3 python-is-python3 python3-pip curl jattach
python-libs: kestra
steps:
- uses: actions/checkout@v4
@@ -57,13 +60,22 @@ jobs:
- name: Set image name
id: vars
run: |
TAG=${GITHUB_REF#refs/*/}
echo "tag=${TAG}" >> $GITHUB_OUTPUT
echo "plugins=${{ matrix.image.plugins }}" >> $GITHUB_OUTPUT
if [[ "${{ inputs.release-tag }}" == "" ]]; then
TAG=${GITHUB_REF#refs/*/}
echo "tag=${TAG}" >> $GITHUB_OUTPUT
else
TAG="${{ inputs.release-tag }}"
echo "tag=${TAG}" >> $GITHUB_OUTPUT
fi
if [[ "${{ env.PLUGIN_VERSION }}" == *"-SNAPSHOT" ]]; then
echo "plugins=--repositories=https://s01.oss.sonatype.org/content/repositories/snapshots ${{ matrix.image.plugins }}" >> $GITHUB_OUTPUT;
else
echo "plugins=${{ matrix.image.plugins }}" >> $GITHUB_OUTPUT
fi
# Download release
- name: Download release
uses: robinraju/release-downloader@v1.11
uses: robinraju/release-downloader@v1.12
with:
tag: ${{steps.vars.outputs.tag}}
fileName: 'kestra-*'
@@ -77,6 +89,11 @@ jobs:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Docker - Fix Qemu
shell: bash
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes -c yes
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
@@ -109,10 +126,6 @@ jobs:
run: |
regctl image copy ${{ format('kestra/kestra:{0}{1}', steps.vars.outputs.tag, matrix.image.name) }} ${{ format('kestra/kestra:latest{0}', matrix.image.name) }}
- name: Retag latest to latest-full
if: github.event.inputs.retag-latest == 'true'
run: |
regctl image copy kestra/kestra:latest kestra/kestra:latest-full
end:
runs-on: ubuntu-latest
needs:

View File

@@ -42,19 +42,13 @@ jobs:
with:
path: kestra
# Checkout GitHub Actions
- uses: actions/checkout@v4
with:
repository: kestra-io/actions
path: actions
ref: main
# Setup build
- uses: ./actions/.github/actions/setup-build
- uses: kestra-io/actions/.github/actions/setup-build@main
id: build
with:
java-enabled: true
caches-enabled: true
node-enabled: true
python-enabled: true
# Get Docker Image
- name: Download Kestra Image
@@ -149,7 +143,7 @@ jobs:
- uses: rlespinasse/github-slug-action@v5
- name: Publish allure report
uses: andrcuns/allure-publish-action@v2.8.0
uses: andrcuns/allure-publish-action@v2.9.0
if: ${{ !cancelled() && env.GOOGLE_SERVICE_ACCOUNT != 0 }}
env:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_AUTH_TOKEN }}
@@ -158,7 +152,7 @@ jobs:
storageType: gcs
resultsGlob: build/allure-results
bucket: internal-kestra-host
baseUrl: "https://internal.kestra.io"
baseUrl: "https://internal.dev.kestra.io"
prefix: ${{ format('{0}/{1}/{2}', github.repository, env.GITHUB_HEAD_REF_SLUG != '' && env.GITHUB_HEAD_REF_SLUG || github.ref_name, 'allure/playwright') }}
copyLatest: true
ignoreMissingResults: true

View File

@@ -1,111 +0,0 @@
name: Generate Translations
on:
pull_request:
types: [opened, synchronize]
paths:
- "ui/src/translations/en.json"
push:
branches:
- develop
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
jobs:
commit:
name: Commit directly to PR
runs-on: ubuntu-latest
if: ${{ github.event.pull_request.head.repo.fork == false }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 50
ref: ${{ github.head_ref }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install Python dependencies
run: pip install gitpython openai
- name: Generate translations
run: python ui/src/translations/generate_translations.py
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "20.x"
- name: Check keys matching
run: node ui/src/translations/check.js
- name: Set up Git
run: |
git config --global user.name "GitHub Action"
git config --global user.email "actions@github.com"
- name: Check for changes and commit
env:
GH_TOKEN: ${{ github.token }}
run: |
git add ui/src/translations/*.json
if git diff --cached --quiet; then
echo "No changes to commit. Exiting with success."
exit 0
fi
git commit -m "chore(translations): auto generate values for languages other than english"
git push origin ${{ github.head_ref }}
pull_request:
name: Open PR for a forked repository
runs-on: ubuntu-latest
if: ${{ github.event.pull_request.head.repo.fork == true }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install Python dependencies
run: pip install gitpython openai
- name: Generate translations
run: python ui/src/translations/generate_translations.py
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "20.x"
- name: Check keys matching
run: node ui/src/translations/check.js
- name: Set up Git
run: |
git config --global user.name "GitHub Action"
git config --global user.email "actions@github.com"
- name: Create and push a new branch
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
BRANCH_NAME="generated-translations-${{ github.event.pull_request.head.repo.name }}"
git checkout -b $BRANCH_NAME
git add ui/src/translations/*.json
if git diff --cached --quiet; then
echo "No changes to commit. Exiting with success."
exit 0
fi
git commit -m "chore(translations): auto generate values for languages other than english"
git push origin $BRANCH_NAME

View File

@@ -0,0 +1,82 @@
name: Run Gradle Release for Kestra Plugins
on:
workflow_dispatch:
inputs:
releaseVersion:
description: 'The release version (e.g., 0.21.0-rc1)'
required: true
type: string
nextVersion:
description: 'The next version (e.g., 0.22.0-SNAPSHOT)'
required: true
type: string
dryRun:
description: 'Use DRY_RUN mode'
required: false
default: 'false'
jobs:
release:
name: Release plugins
runs-on: ubuntu-latest
steps:
# Checkout
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Checkout GitHub Actions
- uses: actions/checkout@v4
with:
repository: kestra-io/actions
path: actions
ref: main
# Setup build
- uses: ./actions/.github/actions/setup-build
id: build
with:
java-enabled: true
node-enabled: true
python-enabled: true
caches-enabled: true
# Get Plugins List
- name: Get Plugins List
uses: ./.github/actions/plugins-list
id: plugins-list
with:
plugin-version: 'LATEST'
- name: 'Configure Git'
run: |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
# Execute
- name: Run Gradle Release
if: ${{ github.event.inputs.dryRun == 'false' }}
env:
GITHUB_PAT: ${{ secrets.GH_PERSONAL_TOKEN }}
run: |
chmod +x ./dev-tools/release-plugins.sh;
./dev-tools/release-plugins.sh \
--release-version=${{github.event.inputs.releaseVersion}} \
--next-version=${{github.event.inputs.nextVersion}} \
--yes \
${{ steps.plugins-list.outputs.repositories }}
- name: Run Gradle Release (DRY_RUN)
if: ${{ github.event.inputs.dryRun == 'true' }}
env:
GITHUB_PAT: ${{ secrets.GH_PERSONAL_TOKEN }}
run: |
chmod +x ./dev-tools/release-plugins.sh;
./dev-tools/release-plugins.sh \
--release-version=${{github.event.inputs.releaseVersion}} \
--next-version=${{github.event.inputs.nextVersion}} \
--dry-run \
--yes \
${{ steps.plugins-list.outputs.repositories }}

92
.github/workflows/gradle-release.yml vendored Normal file
View File

@@ -0,0 +1,92 @@
name: Run Gradle Release
run-name: "Releasing Kestra ${{ github.event.inputs.releaseVersion }} 🚀"
on:
workflow_dispatch:
inputs:
releaseVersion:
description: 'The release version (e.g., 0.21.0-rc1)'
required: true
type: string
nextVersion:
description: 'The next version (e.g., 0.22.0-SNAPSHOT)'
required: true
type: string
env:
RELEASE_VERSION: "${{ github.event.inputs.releaseVersion }}"
NEXT_VERSION: "${{ github.event.inputs.nextVersion }}"
jobs:
release:
name: Release Kestra
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/develop'
steps:
# Checks
- name: Check Inputs
run: |
if ! [[ "$RELEASE_VERSION" =~ ^[0-9]+(\.[0-9]+)\.0-rc[01](-SNAPSHOT)?$ ]]; then
echo "Invalid release version. Must match regex: ^[0-9]+(\.[0-9]+)\.0-rc[01](-SNAPSHOT)?$"
exit 1
fi
if ! [[ "$NEXT_VERSION" =~ ^[0-9]+(\.[0-9]+)\.0-SNAPSHOT$ ]]; then
echo "Invalid next version. Must match regex: ^[0-9]+(\.[0-9]+)\.0-SNAPSHOT$"
exit 1;
fi
# Checkout
- uses: actions/checkout@v4
with:
fetch-depth: 0
path: kestra
# Checkout GitHub Actions
- uses: actions/checkout@v4
with:
repository: kestra-io/actions
path: actions
ref: main
# Setup build
- uses: ./actions/.github/actions/setup-build
id: build
with:
java-enabled: true
node-enabled: true
python-enabled: true
caches-enabled: true
- name: Configure Git
run: |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
# Execute
- name: Run Gradle Release
env:
GITHUB_PAT: ${{ secrets.GH_PERSONAL_TOKEN }}
run: |
# Extract the major and minor versions
BASE_VERSION=$(echo "$RELEASE_VERSION" | sed -E 's/^([0-9]+\.[0-9]+)\..*/\1/')
PUSH_RELEASE_BRANCH="releases/v${BASE_VERSION}.x"
cd kestra
# Create and push release branch
git checkout -b "$PUSH_RELEASE_BRANCH";
git push -u origin "$PUSH_RELEASE_BRANCH";
# Run gradle release
git checkout develop;
if [[ "$RELEASE_VERSION" == *"-SNAPSHOT" ]]; then
# -SNAPSHOT qualifier maybe used to test release-candidates
./gradlew release -Prelease.useAutomaticVersion=true \
-Prelease.releaseVersion="${RELEASE_VERSION}" \
-Prelease.newVersion="${NEXT_VERSION}" \
-Prelease.pushReleaseVersionBranch="${PUSH_RELEASE_BRANCH}" \
-Prelease.failOnSnapshotDependencies=false
else
./gradlew release -Prelease.useAutomaticVersion=true \
-Prelease.releaseVersion="${RELEASE_VERSION}" \
-Prelease.newVersion="${NEXT_VERSION}" \
-Prelease.pushReleaseVersionBranch="${PUSH_RELEASE_BRANCH}"
fi

View File

@@ -1,451 +1,62 @@
name: Main
name: Main Workflow
on:
workflow_dispatch:
inputs:
plugin-version:
description: "Kestra version"
default: 'LATEST'
required: true
type: string
push:
branches:
- master
- main
- releases/*
- develop
tags:
- v*
pull_request:
branches:
- develop
repository_dispatch:
types: [ rebuild ]
workflow_dispatch:
inputs:
skip-test:
description: 'Skip test'
type: choice
required: true
default: 'false'
options:
- "true"
- "false"
plugin-version:
description: 'Plugin version'
required: false
type: string
default: "LATEST"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
group: ${{ github.workflow }}-${{ github.ref }}-main
cancel-in-progress: true
env:
JAVA_VERSION: '21'
DOCKER_APT_PACKAGES: python3 python3-venv python-is-python3 python3-pip nodejs npm curl zip unzip
DOCKER_PYTHON_LIBRARIES: kestra
PLUGIN_VERSION: ${{ github.event.inputs.plugin-version != null && github.event.inputs.plugin-version || 'LATEST' }}
jobs:
build-artifacts:
name: Build Artifacts
runs-on: ubuntu-latest
timeout-minutes: 60
outputs:
docker-tag: ${{ steps.vars.outputs.tag }}
docker-artifact-name: ${{ steps.vars.outputs.artifact }}
plugins: ${{ steps.plugins-list.outputs.plugins }}
steps:
# Checkout
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Checkout GitHub Actions
- uses: actions/checkout@v4
with:
repository: kestra-io/actions
path: actions
ref: main
# Setup build
- uses: ./actions/.github/actions/setup-build
id: build
with:
java-enabled: true
node-enabled: true
caches-enabled: true
# Get Plugins List
- name: Get Plugins List
uses: ./.github/actions/plugins-list
if: "!startsWith(github.ref, 'refs/tags/v')"
id: plugins-list
with:
plugin-version: ${{ env.PLUGIN_VERSION }}
# Set Plugins List
- name: Set Plugin List
id: plugins
if: "!startsWith(github.ref, 'refs/tags/v')"
run: |
PLUGINS="${{ steps.plugins-list.outputs.plugins }}"
TAG=${GITHUB_REF#refs/*/}
if [[ $TAG = "master" || $TAG == v* ]]; then
echo "plugins=$PLUGINS" >> $GITHUB_OUTPUT
else
echo "plugins=--repositories=https://s01.oss.sonatype.org/content/repositories/snapshots $PLUGINS" >> $GITHUB_OUTPUT
fi
# Build
- name: Build with Gradle
run: |
./gradlew executableJar
- name: Copy exe to image
run: |
cp build/executable/* docker/app/kestra && chmod +x docker/app/kestra
# Docker Tag
- name: Set up Vars
id: vars
run: |
TAG=${GITHUB_REF#refs/*/}
if [[ $TAG = "master" ]]
then
TAG="latest";
elif [[ $TAG = "develop" ]]
then
TAG="develop";
elif [[ $TAG = v* ]]
then
TAG="${TAG}";
else
TAG="build-${{ github.run_id }}";
fi
echo "tag=${TAG}" >> $GITHUB_OUTPUT
echo "artifact=docker-kestra-${TAG}" >> $GITHUB_OUTPUT
# Docker setup
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# Docker Build
- name: Build & Export Docker Image
uses: docker/build-push-action@v6
if: "!startsWith(github.ref, 'refs/tags/v')"
with:
context: .
push: false
file: Dockerfile
tags: |
kestra/kestra:${{ steps.vars.outputs.tag }}
build-args: |
KESTRA_PLUGINS=${{ steps.plugins.outputs.plugins }}
APT_PACKAGES=${{ env.DOCKER_APT_PACKAGES }}
PYTHON_LIBRARIES=${{ env.DOCKER_PYTHON_LIBRARIES }}
outputs: type=docker,dest=/tmp/${{ steps.vars.outputs.artifact }}.tar
# Upload artifacts
- name: Upload JAR
uses: actions/upload-artifact@v4
with:
name: jar
path: build/libs/
- name: Upload Executable
uses: actions/upload-artifact@v4
with:
name: exe
path: build/executable/
- name: Upload Docker
uses: actions/upload-artifact@v4
if: "!startsWith(github.ref, 'refs/tags/v')"
with:
name: ${{ steps.vars.outputs.artifact }}
path: /tmp/${{ steps.vars.outputs.artifact }}.tar
# Run Reusable Workflow from QA repository
check-e2e:
name: Check E2E Tests
needs: build-artifacts
if: ${{ (github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '') && !startsWith(github.ref, 'refs/tags/v') }}
uses: ./.github/workflows/e2e.yml
strategy:
fail-fast: false
matrix:
backends: ["postgres"]
tests:
name: Execute tests
uses: ./.github/workflows/workflow-test.yml
with:
tags: oss
docker-artifact-name: ${{ needs.build-artifacts.outputs.docker-artifact-name }}
docker-image-tag: kestra/kestra:${{ needs.build-artifacts.outputs.docker-tag }}
backend: ${{ matrix.backends }}
secrets:
GITHUB_AUTH_TOKEN: ${{ secrets.GH_PERSONAL_TOKEN }}
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
check:
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
name: Check & Publish
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
# Checkout
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Checkout GitHub Actions
- uses: actions/checkout@v4
with:
repository: kestra-io/actions
path: actions
ref: main
# Setup build
- uses: ./actions/.github/actions/setup-build
id: build
with:
java-enabled: true
node-enabled: true
python-enabled: true
caches-enabled: true
# Services
- name: Build the docker-compose stack
run: docker compose -f docker-compose-ci.yml up -d
if: ${{ github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '' }}
# Gradle check
- name: Build with Gradle
if: ${{ github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '' }}
env:
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
run: |
echo $GOOGLE_SERVICE_ACCOUNT | base64 -d > ~/.gcp-service-account.json
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/.gcp-service-account.json
./gradlew check javadoc --parallel
# Sonar
- name: Analyze with Sonar
if: ${{ env.SONAR_TOKEN != 0 && (github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '') }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: ./gradlew sonar --info
# Allure check
- name: Auth to Google Cloud
id: auth
if: ${{ always() && env.GOOGLE_SERVICE_ACCOUNT != 0 }}
uses: 'google-github-actions/auth@v2'
with:
credentials_json: '${{ secrets.GOOGLE_SERVICE_ACCOUNT }}'
- uses: rlespinasse/github-slug-action@v5
- name: Publish allure report
uses: andrcuns/allure-publish-action@v2.8.0
if: ${{ always() && env.GOOGLE_SERVICE_ACCOUNT != 0 && (github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '') }}
env:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
JAVA_HOME: /usr/lib/jvm/default-jvm/
with:
storageType: gcs
resultsGlob: "**/build/allure-results"
bucket: internal-kestra-host
baseUrl: "https://internal.kestra.io"
prefix: ${{ format('{0}/{1}', github.repository, 'allure/java') }}
copyLatest: true
ignoreMissingResults: true
# Jacoco
- name: 'Set up Cloud SDK'
if: ${{ env.GOOGLE_SERVICE_ACCOUNT != 0 && (github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '') }}
uses: 'google-github-actions/setup-gcloud@v2'
- name: 'Copy jacoco files'
if: ${{ env.GOOGLE_SERVICE_ACCOUNT != 0 && (github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '') }}
run: |
mv build/reports/jacoco/testCodeCoverageReport build/reports/jacoco/test/
mv build/reports/jacoco/test/testCodeCoverageReport.xml build/reports/jacoco/test/jacocoTestReport.xml
gsutil -m rsync -d -r build/reports/jacoco/test/ gs://internal-kestra-host/${{ format('{0}/{1}', github.repository, 'jacoco') }}
# report test
- name: Test Report
uses: mikepenz/action-junit-report@v5
if: success() || failure()
with:
report_paths: '**/build/test-results/**/TEST-*.xml'
# Codecov
- uses: codecov/codecov-action@v5
if: ${{ github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '' }}
with:
token: ${{ secrets.CODECOV_TOKEN }}
report-status: false
release:
name: Github Release
runs-on: ubuntu-latest
needs: [ check, check-e2e ]
if: |
always() &&
startsWith(github.ref, 'refs/tags/v') &&
needs.check.result == 'success' &&
(needs.check-e2e.result == 'skipped' || needs.check-e2e.result == 'success')
steps:
# Download Exec
- name: Download executable
uses: actions/download-artifact@v4
if: startsWith(github.ref, 'refs/tags/v')
with:
name: exe
path: build/executable
name: Release
needs: [tests]
if: "!startsWith(github.ref, 'refs/heads/releases')"
uses: ./.github/workflows/workflow-release.yml
with:
plugin-version: ${{ github.event.inputs.plugin-version != null && github.event.inputs.plugin-version || 'LATEST' }}
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_GPG_KEYID: ${{ secrets.SONATYPE_GPG_KEYID }}
SONATYPE_GPG_PASSWORD: ${{ secrets.SONATYPE_GPG_PASSWORD }}
SONATYPE_GPG_FILE: ${{ secrets.SONATYPE_GPG_FILE }}
GH_PERSONAL_TOKEN: ${{ secrets.GH_PERSONAL_TOKEN }}
SLACK_RELEASES_WEBHOOK_URL: ${{ secrets.SLACK_RELEASES_WEBHOOK_URL }}
# GitHub Release
- name: Create GitHub release
uses: "marvinpinto/action-automatic-releases@latest"
if: startsWith(github.ref, 'refs/tags/v')
continue-on-error: true
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
files: |
build/executable/*
docker:
name: Publish Docker
runs-on: ubuntu-latest
needs: [build-artifacts, check, check-e2e]
if: github.ref == 'refs/heads/develop'
strategy:
matrix:
image:
- tag: ${{needs.build-artifacts.outputs.docker-tag}}-no-plugins
packages: ""
python-libraries: ""
- tag: ${{needs.build-artifacts.outputs.docker-tag}}
plugins: ${{needs.build-artifacts.outputs.plugins}}
packages: python3 python3-venv python-is-python3 python3-pip nodejs npm curl zip unzip
python-libraries: kestra
steps:
- uses: actions/checkout@v4
# Docker setup
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# Docker Login
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
# Vars
- name: Set image name
id: vars
run: |
TAG=${GITHUB_REF#refs/*/}
if [[ $TAG = "master" || $TAG == v* ]]; then
echo "plugins=${{ matrix.image.plugins }}" >> $GITHUB_OUTPUT
else
echo "plugins=--repositories=https://s01.oss.sonatype.org/content/repositories/snapshots ${{ matrix.image.plugins }}" >> $GITHUB_OUTPUT
fi
# Build Docker Image
- name: Download executable
uses: actions/download-artifact@v4
with:
name: exe
path: build/executable
- name: Copy exe to image
run: |
cp build/executable/* docker/app/kestra && chmod +x docker/app/kestra
# Docker Build and push
- name: Build Docker Image
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: kestra/kestra:${{ matrix.image.tag }}
platforms: linux/amd64,linux/arm64
build-args: |
KESTRA_PLUGINS=${{ steps.vars.outputs.plugins }}
APT_PACKAGES=${{matrix.image.packages}}
PYTHON_LIBRARIES=${{matrix.image.python-libraries}}
maven:
name: Publish to Maven
runs-on: ubuntu-latest
needs: [check, check-e2e]
if: |
always() &&
github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/tags/v') &&
needs.check.result == 'success' &&
(needs.check-e2e.result == 'skipped' || needs.check-e2e.result == 'success')
steps:
- uses: actions/checkout@v4
# Checkout GitHub Actions
- uses: actions/checkout@v4
with:
repository: kestra-io/actions
path: actions
ref: main
# Setup build
- uses: ./actions/.github/actions/setup-build
id: build
with:
java-enabled: true
node-enabled: true
caches-enabled: true
# Publish
- name: Publish package to Sonatype
if: github.ref == 'refs/heads/develop'
env:
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_USER }}
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_GPG_KEYID: ${{ secrets.SONATYPE_GPG_KEYID }}
SONATYPE_GPG_PASSWORD: ${{ secrets.SONATYPE_GPG_PASSWORD }}
SONATYPE_GPG_FILE: ${{ secrets.SONATYPE_GPG_FILE }}
run: |
mkdir -p ~/.gradle/
echo "signing.keyId=${SONATYPE_GPG_KEYID}" > ~/.gradle/gradle.properties
echo "signing.password=${SONATYPE_GPG_PASSWORD}" >> ~/.gradle/gradle.properties
echo "signing.secretKeyRingFile=${HOME}/.gradle/secring.gpg" >> ~/.gradle/gradle.properties
echo ${SONATYPE_GPG_FILE} | base64 -d > ~/.gradle/secring.gpg
./gradlew publishToSonatype
# Release
- name: Release package to Maven Central
if: startsWith(github.ref, 'refs/tags/v')
env:
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_USER }}
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_GPG_KEYID: ${{ secrets.SONATYPE_GPG_KEYID }}
SONATYPE_GPG_PASSWORD: ${{ secrets.SONATYPE_GPG_PASSWORD }}
SONATYPE_GPG_FILE: ${{ secrets.SONATYPE_GPG_FILE }}
run: |
echo "signing.keyId=${SONATYPE_GPG_KEYID}" > ~/.gradle/gradle.properties
echo "signing.password=${SONATYPE_GPG_PASSWORD}" >> ~/.gradle/gradle.properties
echo "signing.secretKeyRingFile=${HOME}/.gradle/secring.gpg" >> ~/.gradle/gradle.properties
echo ${SONATYPE_GPG_FILE} | base64 -d > ~/.gradle/secring.gpg
./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository
end:
runs-on: ubuntu-latest
needs:
- check-e2e
- check
- maven
- docker
- release
if: always()
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
steps:
# Update
- name: Update internal
- name: Github - Update internal
uses: benc-uk/workflow-dispatch@v1
if: github.ref == 'refs/heads/develop' && needs.docker.result == 'success'
with:
@@ -455,12 +66,12 @@ jobs:
token: ${{ secrets.GH_PERSONAL_TOKEN }}
# Slack
- name: Slack notification
- name: Slack - Notification
uses: Gamesight/slack-workflow-status@master
if: ${{ always() && env.SLACK_WEBHOOK_URL != 0 }}
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}
name: GitHub Actions
icon_emoji: ':github-actions:'
channel: 'C02DQ1A7JLR' # _int_git channel
icon_emoji: ":github-actions:"
channel: "C02DQ1A7JLR" # _int_git channel

74
.github/workflows/pull-request.yml vendored Normal file
View File

@@ -0,0 +1,74 @@
name: Pull Request Workflow
on:
pull_request:
branches:
- develop
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}-pr
cancel-in-progress: true
jobs:
# ********************************************************************************************************************
# File changes detection
# ********************************************************************************************************************
file-changes:
if: ${{ github.event.pull_request.draft == false }}
name: File changes detection
runs-on: ubuntu-latest
timeout-minutes: 60
outputs:
ui: ${{ steps.changes.outputs.ui }}
translations: ${{ steps.changes.outputs.translations }}
backend: ${{ steps.changes.outputs.backend }}
steps:
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
ui:
- 'ui/**'
backend:
- '!{ui,.github}/**'
token: ${{ secrets.GITHUB_TOKEN }}
# ********************************************************************************************************************
# Tests
# ********************************************************************************************************************
frontend:
name: Frontend - Tests
needs: [file-changes]
if: "needs.file-changes.outputs.ui == 'true'"
uses: ./.github/workflows/workflow-frontend-test.yml
secrets:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
backend:
name: Backend - Tests
needs: file-changes
if: "needs.file-changes.outputs.backend == 'true'"
uses: ./.github/workflows/workflow-backend-test.yml
secrets:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
end:
name: End
runs-on: ubuntu-latest
if: always()
needs: [frontend, backend]
steps:
# Slack
- name: Slack notification
uses: Gamesight/slack-workflow-status@master
if: ${{ always() && env.SLACK_WEBHOOK_URL != 0 }}
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}
name: GitHub Actions
icon_emoji: ":github-actions:"
channel: "C02DQ1A7JLR"

View File

@@ -0,0 +1,60 @@
name: Set Version and Tag Plugins
on:
workflow_dispatch:
inputs:
releaseVersion:
description: 'The release version (e.g., 0.21.0)'
required: true
type: string
dryRun:
description: 'Use DRY_RUN mode'
required: false
default: 'false'
jobs:
tag:
name: Release plugins
runs-on: ubuntu-latest
steps:
# Checkout
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Get Plugins List
- name: Get Plugins List
uses: ./.github/actions/plugins-list
id: plugins-list
with:
plugin-version: 'LATEST'
- name: 'Configure Git'
run: |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
# Execute
- name: Set Version and Tag Plugins
if: ${{ github.event.inputs.dryRun == 'false' }}
env:
GITHUB_PAT: ${{ secrets.GH_PERSONAL_TOKEN }}
run: |
chmod +x ./dev-tools/setversion-tag-plugins.sh;
./dev-tools/setversion-tag-plugins.sh \
--release-version=${{github.event.inputs.releaseVersion}} \
--yes \
${{ steps.plugins-list.outputs.repositories }}
- name: Set Version and Tag Plugins (DRY_RUN)
if: ${{ github.event.inputs.dryRun == 'true' }}
env:
GITHUB_PAT: ${{ secrets.GH_PERSONAL_TOKEN }}
run: |
chmod +x ./dev-tools/setversion-tag-plugins.sh;
./dev-tools/setversion-tag-plugins.sh \
--release-version=${{github.event.inputs.releaseVersion}} \
--dry-run \
--yes \
${{ steps.plugins-list.outputs.repositories }}

57
.github/workflows/setversion-tag.yml vendored Normal file
View File

@@ -0,0 +1,57 @@
name: Set Version and Tag
run-name: "Set version and Tag Kestra to ${{ github.event.inputs.releaseVersion }} 🚀"
on:
workflow_dispatch:
inputs:
releaseVersion:
description: 'The release version (e.g., 0.21.1)'
required: true
type: string
env:
RELEASE_VERSION: "${{ github.event.inputs.releaseVersion }}"
jobs:
release:
name: Release Kestra
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/heads/releases/v')
steps:
# Checks
- name: Check Inputs
run: |
if ! [[ "$RELEASE_VERSION" =~ ^[0-9]+(\.[0-9]+)(\.[0-9]+)(-rc[0-9])?(-SNAPSHOT)?$ ]]; then
echo "Invalid release version. Must match regex: ^[0-9]+(\.[0-9]+)(\.[0-9]+)-(rc[0-9])?(-SNAPSHOT)?$"
exit 1
fi
# Extract the major and minor versions
BASE_VERSION=$(echo "$RELEASE_VERSION" | sed -E 's/^([0-9]+\.[0-9]+)\..*/\1/')
RELEASE_BRANCH="refs/heads/releases/v${BASE_VERSION}.x"
CURRENT_BRANCH="$GITHUB_REF"
if ! [[ "$CURRENT_BRANCH" == "$RELEASE_BRANCH" ]]; then
echo "Invalid release branch. Expected $RELEASE_BRANCH, was $CURRENT_BRANCH"
exit 1
fi
# Checkout
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure Git
run: |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
# Execute
- name: Run Gradle Release
env:
GITHUB_PAT: ${{ secrets.GH_PERSONAL_TOKEN }}
run: |
# Update version
sed -i "s/^version=.*/version=$RELEASE_VERSION/" ./gradle.properties
git add ./gradle.properties
git commit -m"chore(version): update to version '$RELEASE_VERSION'"
git push
git tag -a "v$RELEASE_VERSION" -m"v$RELEASE_VERSION"
git push --tags

View File

@@ -8,6 +8,9 @@ on:
env:
JAVA_VERSION: '21'
permissions:
contents: read
jobs:
dependency-check:
name: Dependency Check
@@ -33,6 +36,12 @@ jobs:
node-enabled: true
caches-enabled: true
# Npm
- name: Npm - Install
shell: bash
working-directory: ui
run: npm ci
# Run OWASP dependency check plugin
- name: Gradle Dependency Check
env:
@@ -51,6 +60,10 @@ jobs:
develop-image-check:
name: Image Check (develop)
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
actions: read
steps:
# Checkout
- uses: actions/checkout@v4
@@ -74,16 +87,28 @@ jobs:
# Run Trivy image scan for Docker vulnerabilities, see https://github.com/aquasecurity/trivy-action
- name: Docker Vulnerabilities Check
uses: aquasecurity/trivy-action@0.28.0
uses: aquasecurity/trivy-action@0.30.0
with:
image-ref: kestra/kestra:develop
format: table
format: 'template'
template: '@/contrib/sarif.tpl'
severity: 'CRITICAL,HIGH'
output: 'trivy-results.sarif'
skip-dirs: /app/plugins
scanners: vuln
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: 'trivy-results.sarif'
category: docker-
latest-image-check:
name: Image Check (latest)
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
actions: read
steps:
# Checkout
- uses: actions/checkout@v4
@@ -107,9 +132,16 @@ jobs:
# Run Trivy image scan for Docker vulnerabilities, see https://github.com/aquasecurity/trivy-action
- name: Docker Vulnerabilities Check
uses: aquasecurity/trivy-action@0.28.0
uses: aquasecurity/trivy-action@0.30.0
with:
image-ref: kestra/kestra:latest
format: table
skip-dirs: /app/plugins
scanners: vuln
scanners: vuln
severity: 'CRITICAL,HIGH'
output: 'trivy-results.sarif'
- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: 'trivy-results.sarif'

View File

@@ -0,0 +1,142 @@
name: Backend - Tests
on:
workflow_call:
secrets:
GITHUB_AUTH_TOKEN:
description: "The GitHub Token."
required: true
CODECOV_TOKEN:
description: 'Codecov Token'
required: true
SONAR_TOKEN:
description: 'Sonar Token'
required: true
GOOGLE_SERVICE_ACCOUNT:
description: 'Google Service Account'
required: true
permissions:
contents: write
checks: write
actions: read
jobs:
test:
name: Backend - Tests
runs-on: ubuntu-latest
env:
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
steps:
- uses: actions/checkout@v4
name: Checkout - Current ref
with:
fetch-depth: 0
# Setup build
- uses: kestra-io/actions/.github/actions/setup-build@main
name: Setup - Build
id: build
with:
java-enabled: true
node-enabled: true
python-enabled: true
# Services
- name: Setup - Start docker compose
shell: bash
run: docker compose -f docker-compose-ci.yml up -d
# Gradle check
- name: Gradle - Build
if: ${{ github.event.inputs.skip-test == 'false' || github.event.inputs.skip-test == '' }}
env:
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
shell: bash
run: |
echo $GOOGLE_SERVICE_ACCOUNT | base64 -d > ~/.gcp-service-account.json
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/.gcp-service-account.json
./gradlew check javadoc --parallel
# report test
- name: Test - Publish Test Results
uses: dorny/test-reporter@v2
if: always()
with:
name: Java Tests Report
reporter: java-junit
path: '**/build/test-results/test/TEST-*.xml'
list-suites: 'failed'
list-tests: 'failed'
fail-on-error: 'false'
token: ${{ secrets.GITHUB_AUTH_TOKEN }}
# Sonar
- name: Test - Analyze with Sonar
if: env.SONAR_TOKEN != ''
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_AUTH_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
shell: bash
run: ./gradlew sonar --info
# GCP
- name: GCP - Auth with unit test account
id: auth
if: always() && env.GOOGLE_SERVICE_ACCOUNT != ''
continue-on-error: true
uses: "google-github-actions/auth@v2"
with:
credentials_json: "${{ secrets.GOOGLE_SERVICE_ACCOUNT }}"
- name: GCP - Setup Cloud SDK
if: env.GOOGLE_SERVICE_ACCOUNT != ''
uses: "google-github-actions/setup-gcloud@v2"
# Allure check
- uses: rlespinasse/github-slug-action@v5
name: Allure - Generate slug variables
- name: Allure - Publish report
uses: andrcuns/allure-publish-action@v2.9.0
if: always() && env.GOOGLE_SERVICE_ACCOUNT != ''
continue-on-error: true
env:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_AUTH_TOKEN }}
JAVA_HOME: /usr/lib/jvm/default-jvm/
with:
storageType: gcs
resultsGlob: "**/build/allure-results"
bucket: internal-kestra-host
baseUrl: "https://internal.dev.kestra.io"
prefix: ${{ format('{0}/{1}', github.repository, 'allure/java') }}
copyLatest: true
ignoreMissingResults: true
# Jacoco
- name: Jacoco - Copy reports
if: env.GOOGLE_SERVICE_ACCOUNT != ''
continue-on-error: true
shell: bash
run: |
mv build/reports/jacoco/testCodeCoverageReport build/reports/jacoco/test/
mv build/reports/jacoco/test/testCodeCoverageReport.xml build/reports/jacoco/test/jacocoTestReport.xml
gsutil -m rsync -d -r build/reports/jacoco/test/ gs://internal-kestra-host/${{ format('{0}/{1}', github.repository, 'jacoco') }}
# Codecov
- name: Codecov - Upload coverage reports
uses: codecov/codecov-action@v5
if: ${{ !cancelled() }}
continue-on-error: true
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: backend
- name: Codecov - Upload test results
uses: codecov/test-results-action@v1
if: ${{ !cancelled() }}
continue-on-error: true
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: backend

View File

@@ -0,0 +1,152 @@
name: Build Artifacts
on:
workflow_call:
inputs:
plugin-version:
description: "Kestra version"
default: 'LATEST'
required: true
type: string
outputs:
docker-tag:
value: ${{ jobs.build.outputs.docker-tag }}
description: "The Docker image Tag for Kestra"
docker-artifact-name:
value: ${{ jobs.build.outputs.docker-artifact-name }}
description: "The GitHub artifact containing the Kestra docker image name."
plugins:
value: ${{ jobs.build.outputs.plugins }}
description: "The Kestra plugins list used for the build."
jobs:
build:
name: Build - Artifacts
runs-on: ubuntu-latest
outputs:
docker-tag: ${{ steps.vars.outputs.tag }}
docker-artifact-name: ${{ steps.vars.outputs.artifact }}
plugins: ${{ steps.plugins.outputs.plugins }}
env:
PLUGIN_VERSION: ${{ github.event.inputs.plugin-version != null && github.event.inputs.plugin-version || 'LATEST' }}
steps:
- name: Checkout - Current ref
uses: actions/checkout@v4
with:
fetch-depth: 0
# Npm
- name: Setup - Npm install
shell: bash
working-directory: ui
run: npm ci
# Setup build
- uses: kestra-io/actions/.github/actions/setup-build@main
name: Setup - Build
id: build
with:
java-enabled: true
node-enabled: true
# Get Plugins List
- name: Plugins - Get List
uses: ./.github/actions/plugins-list
if: "!startsWith(github.ref, 'refs/tags/v')"
id: plugins-list
with:
plugin-version: ${{ env.PLUGIN_VERSION }}
# Set Plugins List
- name: Plugins - Set List
id: plugins
if: "!startsWith(github.ref, 'refs/tags/v')"
shell: bash
run: |
PLUGINS="${{ steps.plugins-list.outputs.plugins }}"
TAG=${GITHUB_REF#refs/*/}
if [[ $TAG = "master" || $TAG == v* ]]; then
echo "plugins=$PLUGINS" >> $GITHUB_OUTPUT
else
echo "plugins=--repositories=https://s01.oss.sonatype.org/content/repositories/snapshots $PLUGINS" >> $GITHUB_OUTPUT
fi
# Build
- name: Gradle - Build
shell: bash
run: |
./gradlew executableJar
- name: Artifacts - Copy exe to image
shell: bash
run: |
cp build/executable/* docker/app/kestra && chmod +x docker/app/kestra
# Docker Tag
- name: Setup - Docker vars
id: vars
shell: bash
run: |
TAG=${GITHUB_REF#refs/*/}
if [[ $TAG = "master" ]]
then
TAG="latest";
elif [[ $TAG = "develop" ]]
then
TAG="develop";
elif [[ $TAG = v* ]]
then
TAG="${TAG}";
else
TAG="build-${{ github.run_id }}";
fi
echo "tag=${TAG}" >> $GITHUB_OUTPUT
echo "artifact=docker-kestra-${TAG}" >> $GITHUB_OUTPUT
# Docker setup
- name: Docker - Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Docker - Fix Qemu
shell: bash
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes -c yes
- name: Docker - Setup Buildx
uses: docker/setup-buildx-action@v3
# Docker Build
- name: Docker - Build & export image
uses: docker/build-push-action@v6
if: "!startsWith(github.ref, 'refs/tags/v')"
with:
context: .
push: false
file: Dockerfile
tags: |
kestra/kestra:${{ steps.vars.outputs.tag }}
build-args: |
KESTRA_PLUGINS=${{ steps.plugins.outputs.plugins }}
APT_PACKAGES=${{ env.DOCKER_APT_PACKAGES }}
PYTHON_LIBRARIES=${{ env.DOCKER_PYTHON_LIBRARIES }}
outputs: type=docker,dest=/tmp/${{ steps.vars.outputs.artifact }}.tar
# Upload artifacts
- name: Artifacts - Upload JAR
uses: actions/upload-artifact@v4
with:
name: jar
path: build/libs/
- name: Artifacts - Upload Executable
uses: actions/upload-artifact@v4
with:
name: exe
path: build/executable/
- name: Artifacts - Upload Docker
uses: actions/upload-artifact@v4
if: "!startsWith(github.ref, 'refs/tags/v')"
with:
name: ${{ steps.vars.outputs.artifact }}
path: /tmp/${{ steps.vars.outputs.artifact }}.tar

View File

@@ -0,0 +1,86 @@
name: Frontend - Tests
on:
workflow_call:
secrets:
GITHUB_AUTH_TOKEN:
description: "The GitHub Token."
required: true
CODECOV_TOKEN:
description: 'Codecov Token'
required: true
env:
# to save corepack from itself
COREPACK_INTEGRITY_KEYS: 0
jobs:
test:
name: Frontend - Tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Cache Node Modules
id: cache-node-modules
uses: actions/cache@v4
with:
path: |
ui/node_modules
key: modules-${{ hashFiles('ui/package-lock.json') }}
- name: Cache Playwright Binaries
id: cache-playwright
uses: actions/cache@v4
with:
path: |
~/.cache/ms-playwright
key: playwright-${{ hashFiles('ui/package-lock.json') }}
- name: Npm - install
shell: bash
if: steps.cache-node-modules.outputs.cache-hit != 'true'
working-directory: ui
run: npm ci
- name: Npm - lint
uses: reviewdog/action-eslint@v1
with:
github_token: ${{ secrets.GITHUB_AUTH_TOKEN }}
reporter: github-pr-review
workdir: ui
- name: Npm - Run build
shell: bash
working-directory: ui
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
run: npm run build
- name: Storybook - Install Playwright
shell: bash
working-directory: ui
if: steps.cache-playwright.outputs.cache-hit != 'true'
run: npx playwright install --with-deps
- name: Run front-end unit tests
shell: bash
working-directory: ui
run: npm run test:cicd
- name: Codecov - Upload coverage reports
uses: codecov/codecov-action@v5
if: ${{ !cancelled() && github.event.pull_request.head.repo.full_name == github.repository }}
continue-on-error: true
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: frontend
- name: Codecov - Upload test results
uses: codecov/test-results-action@v1
if: ${{ !cancelled() }}
continue-on-error: true
with:
token: ${{ secrets.CODECOV_TOKEN && github.event.pull_request.head.repo.full_name == github.repository }}
flags: frontend

View File

@@ -0,0 +1,65 @@
name: Github - Release
on:
workflow_call:
secrets:
GH_PERSONAL_TOKEN:
description: "The Github personal token."
required: true
SLACK_RELEASES_WEBHOOK_URL:
description: "The Slack webhook URL."
required: true
jobs:
publish:
name: Github - Release
runs-on: ubuntu-latest
steps:
# Check out
- name: Checkout - Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
# Checkout GitHub Actions
- name: Checkout - Actions
uses: actions/checkout@v4
with:
repository: kestra-io/actions
sparse-checkout-cone-mode: true
path: actions
sparse-checkout: |
.github/actions
# Download Exec
# Must be done after checkout actions
- name: Artifacts - Download executable
uses: actions/download-artifact@v4
if: startsWith(github.ref, 'refs/tags/v')
with:
name: exe
path: build/executable
# GitHub Release
- name: Create GitHub release
uses: ./actions/.github/actions/github-release
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
env:
GITHUB_TOKEN: ${{ secrets.GH_PERSONAL_TOKEN }}
SLACK_RELEASES_WEBHOOK_URL: ${{ secrets.SLACK_RELEASES_WEBHOOK_URL }}
# Trigger gha workflow to bump helm chart version
- name: GitHub - Trigger the Helm chart version bump
uses: peter-evans/repository-dispatch@v3
with:
token: ${{ secrets.GH_PERSONAL_TOKEN }}
repository: kestra-io/helm-charts
event-type: update-helm-chart-version
client-payload: |-
{
"new_version": "${{ github.ref_name }}",
"github_repository": "${{ github.repository }}",
"github_actor": "${{ github.actor }}"
}

View File

@@ -0,0 +1,146 @@
name: Publish - Docker
on:
workflow_dispatch:
inputs:
plugin-version:
description: "Kestra version"
default: 'LATEST'
required: false
type: string
force-download-artifact:
description: 'Force download artifact'
required: false
type: string
default: "true"
workflow_call:
inputs:
plugin-version:
description: "Kestra version"
default: 'LATEST'
required: false
type: string
force-download-artifact:
description: 'Force download artifact'
required: false
type: string
default: "true"
secrets:
DOCKERHUB_USERNAME:
description: "The Dockerhub username."
required: true
DOCKERHUB_PASSWORD:
description: "The Dockerhub password."
required: true
jobs:
# ********************************************************************************************************************
# Build
# ********************************************************************************************************************
build-artifacts:
name: Build Artifacts
if: ${{ github.event.inputs.force-download-artifact == 'true' }}
uses: ./.github/workflows/workflow-build-artifacts.yml
with:
plugin-version: ${{ github.event.inputs.plugin-version != null && github.event.inputs.plugin-version || 'LATEST' }}
# ********************************************************************************************************************
# Docker
# ********************************************************************************************************************
publish:
name: Publish - Docker
runs-on: ubuntu-latest
needs: build-artifacts
if: |
always() &&
(needs.build-artifacts.result == 'success' ||
github.event.inputs.force-download-artifact != 'true')
env:
PLUGIN_VERSION: ${{ github.event.inputs.plugin-version != null && github.event.inputs.plugin-version || 'LATEST' }}
strategy:
matrix:
image:
- tag: -no-plugins
packages: jattach
plugins: false
python-libraries: ""
- tag: ""
plugins: true
packages: python3 python3-venv python-is-python3 python3-pip nodejs npm curl zip unzip jattach
python-libraries: kestra
steps:
- name: Checkout - Current ref
uses: actions/checkout@v4
# Docker setup
- name: Docker - Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Docker - Fix Qemu
shell: bash
run: |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes -c yes
- name: Docker - Setup Docker Buildx
uses: docker/setup-buildx-action@v3
# Docker Login
- name: Docker - Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
# # Get Plugins List
- name: Plugins - Get List
uses: ./.github/actions/plugins-list
id: plugins-list
if: ${{ matrix.image.plugins}}
with:
plugin-version: ${{ env.PLUGIN_VERSION }}
# Vars
- name: Docker - Set variables
shell: bash
id: vars
run: |
TAG=${GITHUB_REF#refs/*/}
PLUGINS="${{ matrix.image.plugins == true && steps.plugins-list.outputs.plugins || '' }}"
if [[ $TAG == v* ]]; then
TAG="${TAG}";
echo "plugins=${{ matrix.image.plugins }}" >> $GITHUB_OUTPUT
elif [[ $TAG = "develop" ]]; then
TAG="develop";
echo "plugins=--repositories=https://s01.oss.sonatype.org/content/repositories/snapshots $PLUGINS" >> $GITHUB_OUTPUT
else
TAG="build-${{ github.run_id }}";
echo "plugins=--repositories=https://s01.oss.sonatype.org/content/repositories/snapshots $PLUGINS" >> $GITHUB_OUTPUT
fi
echo "tag=${TAG}${{ matrix.image.tag }}" >> $GITHUB_OUTPUT
# Build Docker Image
- name: Artifacts - Download executable
uses: actions/download-artifact@v4
with:
name: exe
path: build/executable
- name: Docker - Copy exe to image
shell: bash
run: |
cp build/executable/* docker/app/kestra && chmod +x docker/app/kestra
# Docker Build and push
- name: Docker - Build image
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: kestra/kestra:${{ steps.vars.outputs.tag }}
platforms: linux/amd64,linux/arm64
build-args: |
KESTRA_PLUGINS=${{ steps.vars.outputs.plugins }}
APT_PACKAGES=${{ matrix.image.packages }}
PYTHON_LIBRARIES=${{ matrix.image.python-libraries }}

View File

@@ -0,0 +1,57 @@
name: Publish - Maven
on:
workflow_call:
secrets:
SONATYPE_USER:
description: "The Sonatype username."
required: true
SONATYPE_PASSWORD:
description: "The Sonatype password."
required: true
SONATYPE_GPG_KEYID:
description: "The Sonatype GPG key id."
required: true
SONATYPE_GPG_PASSWORD:
description: "The Sonatype GPG password."
required: true
SONATYPE_GPG_FILE:
description: "The Sonatype GPG file."
required: true
jobs:
publish:
name: Publish - Maven
runs-on: ubuntu-latest
steps:
- name: Checkout - Current ref
uses: actions/checkout@v4
# Setup build
- name: Setup - Build
uses: kestra-io/actions/.github/actions/setup-build@main
id: build
with:
java-enabled: true
node-enabled: true
# Publish
- name: Publish - Release package to Maven Central
shell: bash
env:
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.SONATYPE_USER }}
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_GPG_KEYID: ${{ secrets.SONATYPE_GPG_KEYID }}
SONATYPE_GPG_PASSWORD: ${{ secrets.SONATYPE_GPG_PASSWORD }}
SONATYPE_GPG_FILE: ${{ secrets.SONATYPE_GPG_FILE}}
run: |
mkdir -p ~/.gradle/
echo "signing.keyId=${SONATYPE_GPG_KEYID}" > ~/.gradle/gradle.properties
echo "signing.password=${SONATYPE_GPG_PASSWORD}" >> ~/.gradle/gradle.properties
echo "signing.secretKeyRingFile=${HOME}/.gradle/secring.gpg" >> ~/.gradle/gradle.properties
echo ${SONATYPE_GPG_FILE} | base64 -d > ~/.gradle/secring.gpg
./gradlew publishToSonatype ${{ startsWith(github.ref, 'refs/tags/v') && 'closeAndReleaseSonatypeStagingRepository' || '' }}
# Gradle dependency
- name: Java - Gradle dependency graph
uses: gradle/actions/dependency-submission@v4

87
.github/workflows/workflow-release.yml vendored Normal file
View File

@@ -0,0 +1,87 @@
name: Release
on:
workflow_dispatch:
inputs:
plugin-version:
description: "Kestra version"
default: 'LATEST'
required: false
type: string
publish-docker:
description: "Publish Docker image"
default: 'false'
required: false
type: string
workflow_call:
inputs:
plugin-version:
description: "Kestra version"
default: 'LATEST'
required: false
type: string
secrets:
DOCKERHUB_USERNAME:
description: "The Dockerhub username."
required: true
DOCKERHUB_PASSWORD:
description: "The Dockerhub password."
required: true
SONATYPE_USER:
description: "The Sonatype username."
required: true
SONATYPE_PASSWORD:
description: "The Sonatype password."
required: true
SONATYPE_GPG_KEYID:
description: "The Sonatype GPG key id."
required: true
SONATYPE_GPG_PASSWORD:
description: "The Sonatype GPG password."
required: true
SONATYPE_GPG_FILE:
description: "The Sonatype GPG file."
required: true
GH_PERSONAL_TOKEN:
description: "The Github personal token."
required: true
SLACK_RELEASES_WEBHOOK_URL:
description: "The Slack webhook URL."
required: true
jobs:
build-artifacts:
name: Build - Artifacts
uses: ./.github/workflows/workflow-build-artifacts.yml
with:
plugin-version: ${{ github.event.inputs.plugin-version != null && github.event.inputs.plugin-version || 'LATEST' }}
Docker:
name: Publish Docker
needs: build-artifacts
uses: ./.github/workflows/workflow-publish-docker.yml
if: startsWith(github.ref, 'refs/heads/develop') || github.event.inputs.publish-docker == 'true'
with:
force-download-artifact: 'false'
plugin-version: ${{ github.event.inputs.plugin-version != null && github.event.inputs.plugin-version || 'LATEST' }}
secrets:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
Maven:
name: Publish Maven
uses: ./.github/workflows/workflow-publish-maven.yml
secrets:
SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_GPG_KEYID: ${{ secrets.SONATYPE_GPG_KEYID }}
SONATYPE_GPG_PASSWORD: ${{ secrets.SONATYPE_GPG_PASSWORD }}
SONATYPE_GPG_FILE: ${{ secrets.SONATYPE_GPG_FILE }}
Github:
name: Github Release
needs: build-artifacts
if: startsWith(github.ref, 'refs/tags/v')
uses: ./.github/workflows/workflow-github-release.yml
secrets:
GH_PERSONAL_TOKEN: ${{ secrets.GH_PERSONAL_TOKEN }}
SLACK_RELEASES_WEBHOOK_URL: ${{ secrets.SLACK_RELEASES_WEBHOOK_URL }}

97
.github/workflows/workflow-test.yml vendored Normal file
View File

@@ -0,0 +1,97 @@
name: Tests
on:
schedule:
- cron: '0 4 * * 1,2,3,4,5'
workflow_call:
inputs:
report-status:
description: "Report status of the jobs in outputs"
type: string
required: false
default: false
outputs:
frontend_status:
description: "Status of the frontend job"
value: ${{ jobs.set-frontend-status.outputs.frontend_status }}
backend_status:
description: "Status of the backend job"
value: ${{ jobs.set-backend-status.outputs.backend_status }}
jobs:
file-changes:
name: File changes detection
runs-on: ubuntu-latest
timeout-minutes: 60
outputs:
ui: ${{ steps.changes.outputs.ui }}
backend: ${{ steps.changes.outputs.backend }}
steps:
- uses: actions/checkout@v4
if: "!startsWith(github.ref, 'refs/tags/v')"
- uses: dorny/paths-filter@v3
if: "!startsWith(github.ref, 'refs/tags/v')"
id: changes
with:
filters: |
ui:
- 'ui/**'
backend:
- '!{ui,.github}/**'
token: ${{ secrets.GITHUB_TOKEN }}
frontend:
name: Frontend - Tests
needs: file-changes
if: "needs.file-changes.outputs.ui == 'true' || startsWith(github.ref, 'refs/tags/v')"
uses: ./.github/workflows/workflow-frontend-test.yml
secrets:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
backend:
name: Backend - Tests
needs: file-changes
if: "needs.file-changes.outputs.backend == 'true' || startsWith(github.ref, 'refs/tags/v')"
uses: ./.github/workflows/workflow-backend-test.yml
secrets:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
# Output every job status
# To be used in other workflows
report-status:
name: Report Status
runs-on: ubuntu-latest
needs: [ frontend, backend ]
if: always() && (inputs.report-status == 'true')
outputs:
frontend_status: ${{ steps.set-frontend-status.outputs.frontend_status }}
backend_status: ${{ steps.set-backend-status.outputs.backend_status }}
steps:
- id: set-frontend-status
name: Set frontend job status
run: echo "::set-output name=frontend_status::${{ needs.frontend.result }}"
- id: set-backend-status
name: Set backend job status
run: echo "::set-output name=backend_status::${{ needs.backend.result }}"
notify:
name: Notify - Slack
runs-on: ubuntu-latest
needs: [ frontend, backend ]
if: github.event_name == 'schedule'
steps:
- name: Notify failed CI
id: send-ci-failed
if: |
always() && (needs.frontend.result != 'success' ||
needs.backend.result != 'success')
uses: kestra-io/actions/.github/actions/send-ci-failed@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

6
.gitignore vendored
View File

@@ -36,6 +36,8 @@ yarn.lock
ui/coverage
ui/stats.html
ui/.frontend-gradle-plugin
ui/utils/CHANGELOG.md
ui/test-report.junit.xml
### Docker
/.env
@@ -54,3 +56,7 @@ core/src/main/resources/gradle.properties
# Allure Reports
**/allure-results/*
*storybook.log
storybook-static
/jmh-benchmarks/src/main/resources/gradle.properties

209
.plugins
View File

@@ -1,103 +1,114 @@
#
# List of plugins to install locally with: $ make install-plugins
# Format: <RepositoryName>:<GroupId>:<ArtifactId>:<Version>
#
# Uncomment the lines corresponding to the plugins to be installed:
#
#io.kestra.plugin:plugin-airbyte:LATEST
#io.kestra.plugin:plugin-airflow:LATEST
#io.kestra.plugin:plugin-amqp:LATEST
#io.kestra.plugin:plugin-ansible:LATEST
#io.kestra.plugin:plugin-aws:LATEST
#io.kestra.plugin:plugin-azure:LATEST
#io.kestra.plugin:plugin-cassandra:LATEST
#io.kestra.plugin:plugin-cloudquery:LATEST
#io.kestra.plugin:plugin-compress:LATEST
#io.kestra.plugin:plugin-couchbase:LATEST
#io.kestra.plugin:plugin-crypto:LATEST
#io.kestra.plugin:plugin-databricks:LATEST
#io.kestra.plugin:plugin-datahub:LATEST
#io.kestra.plugin:plugin-dataform:LATEST
#io.kestra.plugin:plugin-dbt:LATEST
#io.kestra.plugin:plugin-debezium-db2:LATEST
#io.kestra.plugin:plugin-debezium-mongodb:LATEST
#io.kestra.plugin:plugin-debezium-mysql:LATEST
#io.kestra.plugin:plugin-debezium-oracle:LATEST
#io.kestra.plugin:plugin-debezium-postgres:LATEST
#io.kestra.plugin:plugin-debezium-sqlserver:LATEST
#io.kestra.plugin:plugin-docker:LATEST
#io.kestra.plugin:plugin-elasticsearch:LATEST
#io.kestra.plugin:plugin-fivetran:LATEST
#io.kestra.plugin:plugin-fs:LATEST
#io.kestra.plugin:plugin-gcp:LATEST
#io.kestra.plugin:plugin-git:LATEST
#io.kestra.plugin:plugin-github:LATEST
#io.kestra.plugin:plugin-googleworkspace:LATEST
#io.kestra.plugin:plugin-hightouch:LATEST
#io.kestra.plugin:plugin-hubspot:LATEST
#io.kestra.plugin:plugin-jdbc-as400:LATEST
#io.kestra.plugin:plugin-jdbc-clickhouse:LATEST
#io.kestra.plugin:plugin-jdbc-db2:LATEST
#io.kestra.plugin:plugin-jdbc-duckdb:LATEST
#io.kestra.plugin:plugin-jdbc-druid:LATEST
#io.kestra.plugin:plugin-jdbc-mysql:LATEST
#io.kestra.plugin:plugin-jdbc-oracle:LATEST
#io.kestra.plugin:plugin-jdbc-pinot:LATEST
#io.kestra.plugin:plugin-jdbc-postgres:LATEST
#io.kestra.plugin:plugin-jdbc-redshift:LATEST
#io.kestra.plugin:plugin-jdbc-snowflake:LATEST
#io.kestra.plugin:plugin-jdbc-sqlserver:LATEST
#io.kestra.plugin:plugin-jdbc-trino:LATEST
#io.kestra.plugin:plugin-jdbc-vectorwise:LATEST
#io.kestra.plugin:plugin-jdbc-vertica:LATEST
#io.kestra.plugin:plugin-jdbc-dremio:LATEST
#io.kestra.plugin:plugin-jdbc-arrow-flight:LATEST
#io.kestra.plugin:plugin-jdbc-sqlite:LATEST
#io.kestra.plugin:plugin-jdbc-sybase:LATEST
#io.kestra.plugin:plugin-jira:LATEST
#io.kestra.plugin:plugin-kafka:LATEST
#io.kestra.plugin:plugin-kubernetes:LATEST
#io.kestra.plugin:plugin-ldap:LATEST
#io.kestra.plugin:plugin-linear:LATEST
#io.kestra.plugin:plugin-malloy:LATEST
#io.kestra.plugin:plugin-meilisearch:LATEST
#io.kestra.plugin:plugin-minio:LATEST
#io.kestra.plugin:plugin-modal:LATEST
#io.kestra.plugin:plugin-mongodb:LATEST
#io.kestra.plugin:plugin-mqtt:LATEST
#io.kestra.plugin:plugin-nats:LATEST
#io.kestra.plugin:plugin-neo4j:LATEST
#io.kestra.plugin:plugin-notifications:LATEST
#io.kestra.plugin:plugin-openai:LATEST
#io.kestra.plugin:plugin-opensearch:LATEST
#io.kestra.plugin:plugin-powerbi:LATEST
#io.kestra.plugin:plugin-pulsar:LATEST
#io.kestra.plugin:plugin-redis:LATEST
#io.kestra.plugin:plugin-script-groovy:LATEST
#io.kestra.plugin:plugin-script-jbang:LATEST
#io.kestra.plugin:plugin-script-julia:LATEST
#io.kestra.plugin:plugin-script-jython:LATEST
#io.kestra.plugin:plugin-script-nashorn:LATEST
#io.kestra.plugin:plugin-script-node:LATEST
#io.kestra.plugin:plugin-script-powershell:LATEST
#io.kestra.plugin:plugin-script-python:LATEST
#io.kestra.plugin:plugin-script-r:LATEST
#io.kestra.plugin:plugin-script-ruby:LATEST
#io.kestra.plugin:plugin-script-shell:LATEST
#io.kestra.plugin:plugin-serdes:LATEST
#io.kestra.plugin:plugin-servicenow:LATEST
#io.kestra.plugin:plugin-singer:LATEST
#io.kestra.plugin:plugin-soda:LATEST
#io.kestra.plugin:plugin-solace:LATEST
#io.kestra.plugin:plugin-spark:LATEST
#io.kestra.plugin:plugin-sqlmesh:LATEST
#io.kestra.plugin:plugin-surrealdb:LATEST
#io.kestra.plugin:plugin-terraform:LATEST
#io.kestra.plugin:plugin-transform-grok:LATEST
#io.kestra.plugin:plugin-transform-json:LATEST
#io.kestra.plugin:plugin-tika:LATEST
#io.kestra.plugin:plugin-weaviate:LATEST
#io.kestra.plugin:plugin-zendesk:LATEST
#io.kestra.storage:storage-azure:LATEST
#io.kestra.storage:storage-gcs:LATEST
#io.kestra.storage:storage-minio:LATEST
#io.kestra.storage:storage-s3:LATEST
#plugin-airbyte:io.kestra.plugin:plugin-airbyte:LATEST
#plugin-airflow:io.kestra.plugin:plugin-airflow:LATEST
#plugin-amqp:io.kestra.plugin:plugin-amqp:LATEST
#plugin-ansible:io.kestra.plugin:plugin-ansible:LATEST
#plugin-aws:io.kestra.plugin:plugin-aws:LATEST
#plugin-azure:io.kestra.plugin:plugin-azure:LATEST
#plugin-cassandra:io.kestra.plugin:plugin-cassandra:LATEST
#plugin-cloudquery:io.kestra.plugin:plugin-cloudquery:LATEST
#plugin-compress:io.kestra.plugin:plugin-compress:LATEST
#plugin-couchbase:io.kestra.plugin:plugin-couchbase:LATEST
#plugin-crypto:io.kestra.plugin:plugin-crypto:LATEST
#plugin-databricks:io.kestra.plugin:plugin-databricks:LATEST
#plugin-datahub:io.kestra.plugin:plugin-datahub:LATEST
#plugin-dataform:io.kestra.plugin:plugin-dataform:LATEST
#plugin-dbt:io.kestra.plugin:plugin-dbt:LATEST
#plugin-debezium:io.kestra.plugin:plugin-debezium-db2:LATEST
#plugin-debezium:io.kestra.plugin:plugin-debezium-mongodb:LATEST
#plugin-debezium:io.kestra.plugin:plugin-debezium-mysql:LATEST
#plugin-debezium:io.kestra.plugin:plugin-debezium-oracle:LATEST
#plugin-debezium:io.kestra.plugin:plugin-debezium-postgres:LATEST
#plugin-debezium:io.kestra.plugin:plugin-debezium-sqlserver:LATEST
#plugin-docker:io.kestra.plugin:plugin-docker:LATEST
#plugin-elasticsearch:io.kestra.plugin:plugin-elasticsearch:LATEST
#plugin-fivetran:io.kestra.plugin:plugin-fivetran:LATEST
#plugin-fs:io.kestra.plugin:plugin-fs:LATEST
#plugin-gcp:io.kestra.plugin:plugin-gcp:LATEST
#plugin-git:io.kestra.plugin:plugin-git:LATEST
#plugin-github:io.kestra.plugin:plugin-github:LATEST
#plugin-googleworkspace:io.kestra.plugin:plugin-googleworkspace:LATEST
#plugin-graalvm:io.kestra.plugin:plugin-graalvm:LATEST
#plugin-graphql:io.kestra.plugin:plugin-graphql:LATEST
#plugin-hightouch:io.kestra.plugin:plugin-hightouch:LATEST
#plugin-hubspot:io.kestra.plugin:plugin-hubspot:LATEST
#plugin-huggingface:io.kestra.plugin:plugin-huggingface:LATEST
#plugin-influxdb:io.kestra.plugin:plugin-influxdb:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-as400:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-clickhouse:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-db2:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-duckdb:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-druid:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-mariadb:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-mysql:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-oracle:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-pinot:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-postgres:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-redshift:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-snowflake:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-sqlserver:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-trino:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-vectorwise:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-vertica:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-dremio:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-arrow-flight:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-sqlite:LATEST
#plugin-jdbc:io.kestra.plugin:plugin-jdbc-sybase:LATEST
#plugin-jenkins:io.kestra.plugin:plugin-jenkins:LATEST
#plugin-jira:io.kestra.plugin:plugin-jira:LATEST
#plugin-kafka:io.kestra.plugin:plugin-kafka:LATEST
#plugin-kestra:io.kestra.plugin:plugin-kestra:LATEST
#plugin-kubernetes:io.kestra.plugin:plugin-kubernetes:LATEST
#plugin-langchain4j:io.kestra.plugin:plugin-langchain4j:LATEST
#plugin-ldap:io.kestra.plugin:plugin-ldap:LATEST
#plugin-linear:io.kestra.plugin:plugin-linear:LATEST
#plugin-malloy:io.kestra.plugin:plugin-malloy:LATEST
#plugin-meilisearch:io.kestra.plugin:plugin-meilisearch:LATEST
#plugin-minio:io.kestra.plugin:plugin-minio:LATEST
#plugin-modal:io.kestra.plugin:plugin-modal:LATEST
#plugin-mongodb:io.kestra.plugin:plugin-mongodb:LATEST
#plugin-mqtt:io.kestra.plugin:plugin-mqtt:LATEST
#plugin-nats:io.kestra.plugin:plugin-nats:LATEST
#plugin-neo4j:io.kestra.plugin:plugin-neo4j:LATEST
#plugin-notifications:io.kestra.plugin:plugin-notifications:LATEST
#plugin-ollama:io.kestra.plugin:plugin-ollama:LATEST
#plugin-openai:io.kestra.plugin:plugin-openai:LATEST
#plugin-opensearch:io.kestra.plugin:plugin-opensearch:LATEST
#plugin-powerbi:io.kestra.plugin:plugin-powerbi:LATEST
#plugin-pulsar:io.kestra.plugin:plugin-pulsar:LATEST
#plugin-redis:io.kestra.plugin:plugin-redis:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-go:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-groovy:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-jbang:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-julia:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-jython:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-nashorn:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-node:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-powershell:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-python:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-r:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-ruby:LATEST
#plugin-scripts:io.kestra.plugin:plugin-script-shell:LATEST
#plugin-serdes:io.kestra.plugin:plugin-serdes:LATEST
#plugin-servicenow:io.kestra.plugin:plugin-servicenow:LATEST
#plugin-singer:io.kestra.plugin:plugin-singer:LATEST
#plugin-soda:io.kestra.plugin:plugin-soda:LATEST
#plugin-solace:io.kestra.plugin:plugin-solace:LATEST
#plugin-spark:io.kestra.plugin:plugin-spark:LATEST
#plugin-sqlmesh:io.kestra.plugin:plugin-sqlmesh:LATEST
#plugin-surrealdb:io.kestra.plugin:plugin-surrealdb:LATEST
#plugin-terraform:io.kestra.plugin:plugin-terraform:LATEST
#plugin-transform:io.kestra.plugin:plugin-transform-grok:LATEST
#plugin-transform:io.kestra.plugin:plugin-transform-json:LATEST
#plugin-tika:io.kestra.plugin:plugin-tika:LATEST
#plugin-weaviate:io.kestra.plugin:plugin-weaviate:LATEST
#plugin-zendesk:io.kestra.plugin:plugin-zendesk:LATEST
#plugin-typesense:io.kestra.plugin:plugin-typesense:LATEST
#storage-azure:io.kestra.storage:storage-azure:LATEST
#storage-gcs:io.kestra.storage:storage-gcs:LATEST
#storage-minio:io.kestra.storage:storage-minio:LATEST
#storage-s3:io.kestra.storage:storage-s3:LATEST

View File

@@ -16,8 +16,9 @@ RUN apt-get update -y && \
if [ -n "${APT_PACKAGES}" ]; then apt-get install -y --no-install-recommends ${APT_PACKAGES}; fi && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/* && \
curl -LsSf https://astral.sh/uv/0.6.17/install.sh | sh && mv /root/.local/bin/uv /bin && mv /root/.local/bin/uvx /bin && \
if [ -n "${KESTRA_PLUGINS}" ]; then /app/kestra plugins install ${KESTRA_PLUGINS} && rm -rf /tmp/*; fi && \
if [ -n "${PYTHON_LIBRARIES}" ]; then pip install ${PYTHON_LIBRARIES}; fi && \
if [ -n "${PYTHON_LIBRARIES}" ]; then uv pip install --system ${PYTHON_LIBRARIES}; fi && \
chown -R kestra:kestra /app
USER kestra

View File

@@ -17,6 +17,8 @@ VERSION := $(shell ./gradlew properties -q | awk '/^version:/ {print $$2}')
GIT_COMMIT := $(shell git rev-parse --short HEAD)
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
DATE := $(shell date --rfc-3339=seconds)
PLUGIN_GIT_DIR ?= $(pwd)/..
PLUGIN_JARS_DIR ?= $(pwd)/locals/plugins
DOCKER_IMAGE = kestra/kestra
DOCKER_PATH = ./
@@ -67,6 +69,7 @@ install-plugins:
[[ $$plugin =~ ^#.* ]] && continue; \
PLUGINS_PATH="${KESTRA_INSTALL_DIR}/plugins"; \
CURRENT_PLUGIN=$${plugin/LATEST/"${VERSION}"}; \
CURRENT_PLUGIN=$$(echo $$CURRENT_PLUGIN | cut -d':' -f2-); \
PLUGIN_FILE="$$PLUGINS_PATH/$$(echo $$CURRENT_PLUGIN | awk -F':' '{print $$2"-"$$3}').jar"; \
echo "Installing Kestra plugin $$CURRENT_PLUGIN > ${KESTRA_INSTALL_DIR}/plugins"; \
if [ -f "$$PLUGIN_FILE" ]; then \
@@ -86,7 +89,7 @@ build-docker: build-exec
--compress \
--rm \
-f ./Dockerfile \
--build-arg="APT_PACKAGES=python3 python3-venv python-is-python3 python3-pip nodejs npm curl zip unzip" \
--build-arg="APT_PACKAGES=python3 python3-venv python-is-python3 python3-pip nodejs npm curl zip unzip jattach" \
--build-arg="PYTHON_LIBRARIES=kestra" \
-t ${DOCKER_IMAGE}:${VERSION} ${DOCKER_PATH} || exit 1 ;
@@ -173,3 +176,88 @@ start-standalone-postgres: kill --private-start-standalone-postgres health
start-standalone-local: kill --private-start-standalone-local health
#checkout all plugins
clone-plugins:
@echo "Using PLUGIN_GIT_DIR: $(PLUGIN_GIT_DIR)"
@mkdir -p "$(PLUGIN_GIT_DIR)"
@echo "Fetching repository list from GitHub..."
@REPOS=$$(gh repo list kestra-io -L 1000 --json name | jq -r .[].name | sort | grep "^plugin-"); \
for repo in $$REPOS; do \
if [[ $$repo == plugin-* ]]; then \
if [ -d "$(PLUGIN_GIT_DIR)/$$repo" ]; then \
echo "Skipping: $$repo (Already cloned)"; \
else \
echo "Cloning: $$repo using SSH..."; \
git clone "git@github.com:kestra-io/$$repo.git" "$(PLUGIN_GIT_DIR)/$$repo"; \
fi; \
fi; \
done
@echo "Done!"
# Pull every plugins in main or master branch
pull-plugins:
@echo "🔍 Pulling repositories in '$(PLUGIN_GIT_DIR)'..."
@for repo in "$(PLUGIN_GIT_DIR)"/*; do \
if [ -d "$$repo/.git" ]; then \
branch=$$(git -C "$$repo" rev-parse --abbrev-ref HEAD); \
if [[ "$$branch" == "master" || "$$branch" == "main" ]]; then \
echo "🔄 Pulling: $$(basename "$$repo") (branch: $$branch)"; \
git -C "$$repo" pull; \
else \
echo "❌ Skipping: $$(basename "$$repo") (Not on master or main branch, currently on $$branch)"; \
fi; \
fi; \
done
@echo "✅ Done pulling!"
# Update all plugins jar
build-plugins:
@echo "🔍 Scanning repositories in '$(PLUGIN_GIT_DIR)'..."
@MASTER_REPOS=(); \
for repo in "$(PLUGIN_GIT_DIR)"/*; do \
if [ -d "$$repo/.git" ]; then \
branch=$$(git -C "$$repo" rev-parse --abbrev-ref HEAD); \
if [[ "$$branch" == "master" || "$$branch" == "main" ]]; then \
MASTER_REPOS+=("$$repo"); \
else \
echo "❌ Skipping: $$(basename "$$repo") (Not on master or main branch)"; \
fi; \
fi; \
done; \
\
# === STEP 2: Update Repos on Master or Main Branch === \
echo "⬇️ Updating repositories on master or main branch..."; \
for repo in "$${MASTER_REPOS[@]}"; do \
echo "🔄 Updating: $$(basename "$$repo")"; \
git -C "$$repo" pull --rebase; \
done; \
\
# === STEP 3: Build with Gradle === \
echo "⚙️ Building repositories with Gradle..."; \
for repo in "$${MASTER_REPOS[@]}"; do \
echo "🔨 Building: $$(basename "$$repo")"; \
gradle clean build -x test shadowJar -p "$$repo"; \
done; \
\
# === STEP 4: Copy Latest JARs (Ignoring javadoc & sources) === \
echo "📦 Organizing built JARs..."; \
mkdir -p "$(PLUGIN_JARS_DIR)"; \
for repo in "$${MASTER_REPOS[@]}"; do \
REPO_NAME=$$(basename "$$repo"); \
\
JARS=($$(find "$$repo" -type f -name "plugin-*.jar" ! -name "*-javadoc.jar" ! -name "*-sources.jar")); \
if [ $${#JARS[@]} -eq 0 ]; then \
echo "⚠️ Warning: No valid plugin JARs found for $$REPO_NAME"; \
continue; \
fi; \
\
for jar in "$${JARS[@]}"; do \
JAR_NAME=$$(basename "$$jar"); \
BASE_NAME=$$(echo "$$JAR_NAME" | sed -E 's/(-[0-9]+.*)?\.jar$$//'); \
rm -f "$(PLUGIN_JARS_DIR)/$$BASE_NAME"-[0-9]*.jar; \
cp "$$jar" "$(PLUGIN_JARS_DIR)/"; \
echo "✅ Copied JAR: $$JAR_NAME"; \
done; \
done; \
\
echo "🎉 Done! All master and main branch repos updated, built, and organized."

View File

@@ -24,6 +24,13 @@
<a href="https://www.youtube.com/@kestra-io"><img height="25" src="https://kestra.io/youtube.svg" alt="youtube" /></a> &nbsp;
</p>
<p align="center">
<a href="https://trendshift.io/repositories/2714" target="_blank">
<img src="https://trendshift.io/api/badge/repositories/2714" alt="kestra-io%2Fkestra | Trendshift" width="250" height="55"/>
</a>
<a href="https://www.producthunt.com/posts/kestra?embed=true&utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-kestra" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=612077&theme=light&period=daily&t=1740737506162" alt="Kestra - All&#0045;in&#0045;one&#0032;automation&#0032;&#0038;&#0032;orchestration&#0032;platform | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
</p>
<p align="center">
<a href="https://go.kestra.io/video/product-overview" target="_blank">
<img src="https://kestra.io/startvideo.png" alt="Get started in 4 minutes with Kestra" width="640px" />
@@ -47,7 +54,7 @@ Kestra is an open-source, event-driven orchestration platform that makes both **
- **Structure & Resilience**: tame chaos and bring resilience to your workflows with **namespaces**, **labels**, **subflows**, **retries**, **timeout**, **error handling**, **inputs**, **outputs** that generate artifacts in the UI, **variables**, **conditional branching**, **advanced scheduling**, **event triggers**, **backfills**, **dynamic tasks**, **sequential and parallel tasks**, and skip tasks or triggers when needed by setting the flag `disabled` to `true`.
🧑‍💻 The YAML definition gets automatically adjusted any time you make changes to a workflow from the UI or via an API call. Therefore, the orchestration logic is **always managed declaratively in code**, even if you modify your workflows in other ways (UI, CI/CD, Terraform, API calls).
🧑‍💻 The YAML definition gets automatically adjusted any time you make changes to a workflow from the UI or via an API call. Therefore, the orchestration logic is **always managed declaratively in code**, even if you modify your workflows in other ways (UI, CI/CD, Terraform, API calls).
<p align="center">
@@ -74,6 +81,27 @@ docker run --pull=always --rm -it -p 8080:8080 --user=root \
-v /tmp:/tmp kestra/kestra:latest server local
```
If you're on Windows and use PowerShell:
```powershell
docker run --pull=always --rm -it -p 8080:8080 --user=root `
-v "/var/run/docker.sock:/var/run/docker.sock" `
-v "C:/Temp:/tmp" kestra/kestra:latest server local
```
If you're on Windows and use Command Prompt (CMD):
```cmd
docker run --pull=always --rm -it -p 8080:8080 --user=root ^
-v "/var/run/docker.sock:/var/run/docker.sock" ^
-v "C:/Temp:/tmp" kestra/kestra:latest server local
```
If you're on Windows and use WSL (Linux-based environment in Windows):
```bash
docker run --pull=always --rm -it -p 8080:8080 --user=root \
-v "/var/run/docker.sock:/var/run/docker.sock" \
-v "C:/Temp:/tmp" kestra/kestra:latest server local
```
Check our [Installation Guide](https://kestra.io/docs/installation) for other deployment options (Docker Compose, Podman, Kubernetes, AWS, GCP, Azure, and more).
Access the Kestra UI at [http://localhost:8080](http://localhost:8080) and start building your first flow!
@@ -178,7 +206,7 @@ Stay connected and get support:
We welcome contributions of all kinds!
- **Report Issues:** Found a bug or have a feature request? Open an [issue on GitHub](https://github.com/kestra-io/kestra/issues).
- **Contribute Code:** Check out our [Contributor Guide](https://kestra.io/docs/getting-started/contributing) for initial guidelines, and explore our [good first issues](https://go.kestra.io/contribute) for beginner-friendly tasks to tackle first.
- **Contribute Code:** Check out our [Contributor Guide](https://kestra.io/docs/getting-started/contributing) for initial guidelines, and explore our [good first issues](https://go.kestra.io/contributing) for beginner-friendly tasks to tackle first.
- **Develop Plugins:** Build and share plugins using our [Plugin Developer Guide](https://kestra.io/docs/plugin-developer-guide/).
- **Contribute to our Docs:** Contribute edits or updates to keep our [documentation](https://github.com/kestra-io/docs) top-notch.

33
SECURITY.md Normal file
View File

@@ -0,0 +1,33 @@
# Security Policy
## Supported Versions
We provide security updates for the following versions of Kestra:
- The `latest` release
- Up to two previous minor versions released as a backport upon customer request.
If you are using an unsupported version, we recommend upgrading to the `latest` version to receive security fixes.
## Reporting a Vulnerability
If you discover a security vulnerability in Kestra, please report it to us privately to ensure a responsible disclosure process. You can contact our security team at:
**security@kestra.io**
### Guidelines for Reporting
- Provide a detailed description of the issue, including steps to reproduce it if possible.
- Do not disclose the vulnerability publicly until we have confirmed and patched the issue.
- If you believe the issue has critical severity, please indicate so in your report to help us prioritize.
## Our Commitment
- We will acknowledge your report within **2 business days**.
- We will work to verify and address the issue as quickly as possible.
- Once the issue is resolved, we will notify you of the fix.
## Acknowledgments
We are happy to credit those who report vulnerabilities responsibly in our release notes, unless you prefer to remain anonymous. If you would like to be acknowledged, please include this in your report.
Thank you for helping to make Kestra more secure!

View File

@@ -16,30 +16,30 @@ plugins {
id "java"
id 'java-library'
id "idea"
id "com.gradleup.shadow" version "8.3.5"
id "com.gradleup.shadow" version "8.3.6"
id "application"
// test
id "com.adarshr.test-logger" version "4.0.0"
id "org.sonarqube" version "5.1.0.4882"
id "org.sonarqube" version "6.2.0.5505"
id 'jacoco-report-aggregation'
// helper
id "com.github.ben-manes.versions" version "0.51.0"
id "com.github.ben-manes.versions" version "0.52.0"
// front
id 'org.siouan.frontend-jdk21' version '9.1.0' apply false
id 'com.github.node-gradle.node' version '7.1.0'
// release
id "io.github.gradle-nexus.publish-plugin" version "2.0.0"
id 'net.researchgate.release' version '3.0.2'
id "com.gorylenko.gradle-git-properties" version "2.4.2"
id 'net.researchgate.release' version '3.1.0'
id "com.gorylenko.gradle-git-properties" version "2.5.0"
id 'signing'
id 'ru.vyarus.pom' version '3.0.0' apply false
id 'ru.vyarus.github-info' version '2.0.0' apply false
// OWASP dependency check
id "org.owasp.dependencycheck" version "11.1.0" apply false
id "org.owasp.dependencycheck" version "12.1.1" apply false
}
idea {
@@ -74,7 +74,7 @@ dependencies {
**********************************************************************************************************************/
allprojects {
if (it.name != 'platform') {
group "io.kestra"
group = "io.kestra"
java {
sourceCompatibility = targetJavaVersion
@@ -123,6 +123,7 @@ allprojects {
micronaut "io.micronaut.micrometer:micronaut-micrometer-registry-prometheus"
micronaut "io.micronaut:micronaut-http-client"
micronaut "io.micronaut.reactor:micronaut-reactor-http-client"
micronaut "io.micronaut.tracing:micronaut-tracing-opentelemetry-http"
// logs
implementation "org.slf4j:slf4j-api"
@@ -133,6 +134,9 @@ allprojects {
implementation group: 'org.slf4j', name: 'jcl-over-slf4j'
implementation group: 'org.fusesource.jansi', name: 'jansi'
// OTEL
implementation "io.opentelemetry:opentelemetry-exporter-otlp"
// jackson
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind'
@@ -161,7 +165,7 @@ allprojects {
* Test
**********************************************************************************************************************/
subprojects {
if (it.name != 'platform') {
if (it.name != 'platform' && it.name != 'jmh-benchmarks') {
apply plugin: "com.adarshr.test-logger"
java {
@@ -192,12 +196,16 @@ subprojects {
testImplementation 'org.hamcrest:hamcrest'
testImplementation 'org.hamcrest:hamcrest-library'
testImplementation 'org.exparity:hamcrest-date'
//assertj
testImplementation 'org.assertj:assertj-core'
}
test {
useJUnitPlatform()
maxHeapSize = "4048m"
// set Xmx for test workers
maxHeapSize = '4g'
// configure en_US default locale for tests
systemProperty 'user.language', 'en'
@@ -208,8 +216,8 @@ subprojects {
environment 'SECRET_WEBHOOK_KEY', "secretKey".bytes.encodeBase64().toString()
environment 'SECRET_NON_B64_SECRET', "some secret value"
environment 'SECRET_PASSWORD', "cGFzc3dvcmQ="
environment 'KESTRA_TEST1', "true"
environment 'KESTRA_TEST2', "Pass by env"
environment 'ENV_TEST1', "true"
environment 'ENV_TEST2', "Pass by env"
}
testlogger {
@@ -260,7 +268,7 @@ subprojects {
* Allure Reports
**********************************************************************************************************************/
subprojects {
if (it.name != 'platform') {
if (it.name != 'platform' && it.name != 'jmh-benchmarks') {
dependencies {
testImplementation platform("io.qameta.allure:allure-bom")
testImplementation "io.qameta.allure:allure-junit5"
@@ -274,7 +282,7 @@ subprojects {
}
dependencies {
agent "org.aspectj:aspectjweaver:1.9.22.1"
agent "org.aspectj:aspectjweaver:1.9.24"
}
test {
@@ -287,7 +295,7 @@ subprojects {
* Jacoco
**********************************************************************************************************************/
subprojects {
if (it.name != 'platform') {
if (it.name != 'platform' && it.name != 'jmh-benchmarks') {
apply plugin: 'jacoco'
test {
@@ -464,6 +472,15 @@ tasks.register('runLocal', JavaExec) {
args 'server', 'local', '--plugins', 'local/plugins'
}
tasks.register('runStandalone', JavaExec) {
group = "application"
description = "Run Kestra as server local"
classpath = project(":cli").sourceSets.main.runtimeClasspath
mainClass = mainClassName
environment 'MICRONAUT_ENVIRONMENTS', 'override'
args 'server', 'standalone', '--plugins', 'local/plugins'
}
/**********************************************************************************************************************\
* Publish
**********************************************************************************************************************/
@@ -479,98 +496,101 @@ nexusPublishing {
}
subprojects {
apply plugin: "maven-publish"
apply plugin: 'signing'
apply plugin: 'ru.vyarus.pom'
apply plugin: 'ru.vyarus.github-info'
javadoc {
options {
locale = 'en_US'
encoding = 'UTF-8'
addStringOption("Xdoclint:none", "-quiet")
}
}
if (it.name != 'jmh-benchmarks') {
apply plugin: "maven-publish"
apply plugin: 'signing'
apply plugin: 'ru.vyarus.pom'
apply plugin: 'ru.vyarus.github-info'
tasks.register('sourcesJar', Jar) {
dependsOn = [':core:copyGradleProperties']
dependsOn = [':ui:assembleFrontend']
archiveClassifier.set('sources')
from sourceSets.main.allSource
}
sourcesJar.dependsOn ':core:copyGradleProperties'
sourcesJar.dependsOn ':ui:assembleFrontend'
tasks.register('javadocJar', Jar) {
archiveClassifier.set('javadoc')
from javadoc
}
tasks.register('testsJar', Jar) {
group = 'build'
description = 'Build the tests jar'
archiveClassifier.set('tests')
if (sourceSets.matching { it.name == 'test'}) {
from sourceSets.named('test').get().output
}
}
github {
user 'kestra-io'
license 'Apache'
repository 'kestra'
site 'https://kestra.io'
}
maven.pom {
description = 'The modern, scalable orchestrator & scheduler open source platform'
developers {
developer {
id = "tchiotludo"
name = "Ludovic Dehon"
javadoc {
options {
locale = 'en_US'
encoding = 'UTF-8'
addStringOption("Xdoclint:none", "-quiet")
}
}
}
publishing {
publications {
sonatypePublication(MavenPublication) {
version project.version
tasks.register('sourcesJar', Jar) {
dependsOn = [':core:copyGradleProperties']
dependsOn = [':ui:assembleFrontend']
archiveClassifier.set('sources')
from sourceSets.main.allSource
}
sourcesJar.dependsOn ':core:copyGradleProperties'
sourcesJar.dependsOn ':ui:assembleFrontend'
if (project.name.contains('cli')) {
groupId "io.kestra"
artifactId "kestra"
tasks.register('javadocJar', Jar) {
archiveClassifier.set('javadoc')
from javadoc
}
artifact shadowJar
artifact executableJar
} else if (project.name.contains('platform')){
groupId project.group
artifactId project.name
} else {
from components.java
tasks.register('testsJar', Jar) {
group = 'build'
description = 'Build the tests jar'
groupId project.group
artifactId project.name
archiveClassifier.set('tests')
if (sourceSets.matching { it.name == 'test'}) {
from sourceSets.named('test').get().output
}
}
artifact sourcesJar
artifact javadocJar
artifact testsJar
github {
user 'kestra-io'
license 'Apache'
repository 'kestra'
site 'https://kestra.io'
}
maven.pom {
description = 'The modern, scalable orchestrator & scheduler open source platform'
developers {
developer {
id = "tchiotludo"
name = "Ludovic Dehon"
}
}
}
}
signing {
// only sign JARs that we publish to Sonatype
required { gradle.taskGraph.hasTask("publishSonatypePublicationPublicationToSonatypeRepository") }
sign publishing.publications.sonatypePublication
}
publishing {
publications {
sonatypePublication(MavenPublication) {
version project.version
tasks.withType(GenerateModuleMetadata).configureEach {
// Suppression this validation error as we want to enforce the Kestra platform
suppressedValidationErrors.add('enforced-platform')
if (project.name.contains('cli')) {
groupId "io.kestra"
artifactId "kestra"
artifact shadowJar
artifact executableJar
} else if (project.name.contains('platform')){
groupId project.group
artifactId project.name
} else {
from components.java
groupId project.group
artifactId project.name
artifact sourcesJar
artifact javadocJar
artifact testsJar
}
}
}
}
signing {
// only sign JARs that we publish to Sonatype
required { gradle.taskGraph.hasTask("publishSonatypePublicationPublicationToSonatypeRepository") }
sign publishing.publications.sonatypePublication
}
tasks.withType(GenerateModuleMetadata).configureEach {
// Suppression this validation error as we want to enforce the Kestra platform
suppressedValidationErrors.add('enforced-platform')
}
}
}
@@ -589,4 +609,12 @@ release {
git {
requireBranch.set('develop')
}
// Dynamically set properties with default values
failOnSnapshotDependencies = providers.gradleProperty("release.failOnSnapshotDependencies")
.map(val -> Boolean.parseBoolean(val))
.getOrElse(true)
pushReleaseVersionBranch = providers.gradleProperty("release.pushReleaseVersionBranch")
.getOrElse(null)
}

View File

@@ -12,18 +12,9 @@ dependencies {
implementation 'ch.qos.logback.contrib:logback-json-classic'
implementation 'ch.qos.logback.contrib:logback-jackson'
// plugins
implementation 'org.eclipse.aether:aether-api'
implementation 'org.eclipse.aether:aether-spi'
implementation 'org.eclipse.aether:aether-util'
implementation 'org.eclipse.aether:aether-impl'
implementation 'org.eclipse.aether:aether-connector-basic'
implementation 'org.eclipse.aether:aether-transport-file'
implementation 'org.eclipse.aether:aether-transport-http'
implementation('org.apache.maven:maven-aether-provider') {
// sisu dependency injector is not used
exclude group: 'org.eclipse.sisu'
}
// OTLP metrics
implementation "io.micronaut.micrometer:micronaut-micrometer-registry-otlp"
// aether still use javax.inject
compileOnly 'javax.inject:javax.inject:1'
@@ -43,4 +34,7 @@ dependencies {
implementation project(":storage-local")
implementation project(":webserver")
//test
testImplementation "org.wiremock:wiremock-jetty12"
}

View File

@@ -1,5 +1,7 @@
package io.kestra.cli;
import static io.kestra.core.tenant.TenantService.MAIN_TENANT;
import io.micronaut.core.annotation.Nullable;
import io.micronaut.http.HttpHeaders;
import io.micronaut.http.HttpRequest;
@@ -46,8 +48,18 @@ public abstract class AbstractApiCommand extends AbstractCommand {
@Nullable
private HttpClientConfiguration httpClientConfiguration;
/**
* {@inheritDoc}
*/
protected boolean loadExternalPlugins() {
return false;
}
protected DefaultHttpClient client() throws URISyntaxException {
DefaultHttpClient defaultHttpClient = new DefaultHttpClient(server.toURI(), httpClientConfiguration != null ? httpClientConfiguration : new DefaultHttpClientConfiguration());
DefaultHttpClient defaultHttpClient = DefaultHttpClient.builder()
.uri(server.toURI())
.configuration(httpClientConfiguration != null ? httpClientConfiguration : new DefaultHttpClientConfiguration())
.build();
MessageBodyHandlerRegistry defaultHandlerRegistry = defaultHttpClient.getHandlerRegistry();
if (defaultHandlerRegistry instanceof ContextlessMessageBodyHandlerRegistry modifiableRegistry) {
modifiableRegistry.add(MediaType.TEXT_JSON_TYPE, new NettyJsonHandler<>(JsonMapper.createDefault()));
@@ -80,7 +92,7 @@ public abstract class AbstractApiCommand extends AbstractCommand {
throw new IllegalArgumentException("'path' must be non-null and start with '/'");
}
return tenantId == null ? "/api/v1" + path : "/api/v1/" + tenantId + path;
return tenantId == null ? "/api/v1/" + MAIN_TENANT + path : "/api/v1/" + tenantId + path;
}
@Builder

View File

@@ -4,16 +4,17 @@ import ch.qos.logback.classic.LoggerContext;
import com.google.common.collect.ImmutableMap;
import io.kestra.cli.commands.servers.ServerCommandInterface;
import io.kestra.cli.services.StartupHookInterface;
import io.kestra.core.contexts.KestraContext;
import io.kestra.core.plugins.PluginManager;
import io.kestra.core.plugins.PluginRegistry;
import io.kestra.webserver.services.FlowAutoLoaderService;
import io.micronaut.context.ApplicationContext;
import io.micronaut.context.env.yaml.YamlPropertySourceLoader;
import io.micronaut.core.annotation.Introspected;
import io.micronaut.http.uri.UriBuilder;
import io.micronaut.management.endpoint.EndpointDefaultConfiguration;
import io.micronaut.runtime.server.EmbeddedServer;
import jakarta.inject.Provider;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.utils.URIBuilder;
import io.kestra.core.utils.Rethrow;
import picocli.CommandLine;
@@ -26,10 +27,13 @@ import java.nio.file.Paths;
import java.text.MessageFormat;
import java.time.temporal.ChronoUnit;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.Callable;
import jakarta.inject.Inject;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
@CommandLine.Command(
@Command(
versionProvider = VersionProvider.class,
mixinStandardHelpOptions = true,
showDefaultValues = true
@@ -49,22 +53,28 @@ abstract public class AbstractCommand implements Callable<Integer> {
@Inject
private io.kestra.core.utils.VersionProvider versionProvider;
@Inject
protected Provider<PluginRegistry> pluginRegistryProvider;
@Inject
protected Provider<PluginManager> pluginManagerProvider;
private PluginRegistry pluginRegistry;
@CommandLine.Option(names = {"-v", "--verbose"}, description = "Change log level. Multiple -v options increase the verbosity.", showDefaultValue = CommandLine.Help.Visibility.NEVER)
@Option(names = {"-v", "--verbose"}, description = "Change log level. Multiple -v options increase the verbosity.", showDefaultValue = CommandLine.Help.Visibility.NEVER)
private boolean[] verbose = new boolean[0];
@CommandLine.Option(names = {"-l", "--log-level"}, description = "Change log level (values: ${COMPLETION-CANDIDATES})")
@Option(names = {"-l", "--log-level"}, description = "Change log level (values: ${COMPLETION-CANDIDATES})")
private LogLevel logLevel = LogLevel.INFO;
@CommandLine.Option(names = {"--internal-log"}, description = "Change also log level for internal log")
@Option(names = {"--internal-log"}, description = "Change also log level for internal log")
private boolean internalLog = false;
@CommandLine.Option(names = {"-c", "--config"}, description = "Path to a configuration file")
@Option(names = {"-c", "--config"}, description = "Path to a configuration file")
private Path config = Paths.get(System.getProperty("user.home"), ".kestra/config.yml");
@CommandLine.Option(names = {"-p", "--plugins"}, description = "Path to plugins directory")
protected Path pluginsPath = System.getenv("KESTRA_PLUGINS_PATH") != null ? Paths.get(System.getenv("KESTRA_PLUGINS_PATH")) : null;
@Option(names = {"-p", "--plugins"}, description = "Path to plugins directory")
protected Path pluginsPath = Optional.ofNullable(System.getenv("KESTRA_PLUGINS_PATH")).map(Paths::get).orElse(null);
public enum LogLevel {
TRACE,
@@ -76,7 +86,7 @@ abstract public class AbstractCommand implements Callable<Integer> {
@Override
public Integer call() throws Exception {
Thread.currentThread().setName(this.getClass().getDeclaredAnnotation(CommandLine.Command.class).name());
Thread.currentThread().setName(this.getClass().getDeclaredAnnotation(Command.class).name());
startLogger();
sendServerLog();
if (this.startupHook != null) {
@@ -84,8 +94,14 @@ abstract public class AbstractCommand implements Callable<Integer> {
}
if (this.pluginsPath != null && loadExternalPlugins()) {
pluginRegistry = pluginRegistry();
pluginRegistry = pluginRegistryProvider.get();
pluginRegistry.registerIfAbsent(pluginsPath);
// PluginManager mus only be initialized if a registry is also instantiated
if (isPluginManagerEnabled()) {
PluginManager manager = pluginManagerProvider.get();
manager.start();
}
}
startWebserver();
@@ -102,8 +118,15 @@ abstract public class AbstractCommand implements Callable<Integer> {
return true;
}
protected PluginRegistry pluginRegistry() {
return KestraContext.getContext().getPluginRegistry(); // Lazy init
/**
* Specifies whether the {@link PluginManager} service must be initialized.
* <p>
* This method can be overridden by concrete commands.
*
* @return {@code true} if the {@link PluginManager} service must be initialized.
*/
protected boolean isPluginManagerEnabled() {
return true;
}
private static String message(String message, Object... format) {
@@ -157,7 +180,6 @@ abstract public class AbstractCommand implements Callable<Integer> {
logger.getName().startsWith("io.kestra") &&
!logger.getName().startsWith("io.kestra.ee.runner.kafka.services"))
)
|| logger.getName().startsWith("flow")
)
.forEach(
logger -> logger.setLevel(ch.qos.logback.classic.Level.valueOf(this.logLevel.name()))
@@ -183,9 +205,9 @@ abstract public class AbstractCommand implements Callable<Integer> {
if (this.endpointConfiguration.getPort().isPresent()) {
URI endpoint = null;
try {
endpoint = new URIBuilder(server.getURL().toURI())
.setPort(this.endpointConfiguration.getPort().get())
.setPath("/health")
endpoint = UriBuilder.of(server.getURL().toURI())
.port(this.endpointConfiguration.getPort().get())
.path("/health")
.build();
} catch (URISyntaxException e) {
e.printStackTrace();
@@ -207,10 +229,12 @@ abstract public class AbstractCommand implements Callable<Integer> {
return false;
}
protected void shutdownHook(Rethrow.RunnableChecked<Exception> run) {
protected void shutdownHook(boolean logShutdown, Rethrow.RunnableChecked<Exception> run) {
Runtime.getRuntime().addShutdownHook(new Thread(
() -> {
log.warn("Receiving shutdown ! Try to graceful exit");
if (logShutdown) {
log.warn("Receiving shutdown ! Try to graceful exit");
}
try {
run.run();
} catch (Exception e) {

View File

@@ -31,6 +31,12 @@ public abstract class AbstractValidateCommand extends AbstractApiCommand {
@CommandLine.Parameters(index = "0", description = "the directory containing files to check")
protected Path directory;
/** {@inheritDoc} **/
@Override
protected boolean loadExternalPlugins() {
return local;
}
public static void handleException(ConstraintViolationException e, String resource) {
stdErr("\t@|fg(red) Unable to parse {0} due to the following error(s):|@", resource);
e.getConstraintViolations()
@@ -68,10 +74,9 @@ public abstract class AbstractValidateCommand extends AbstractApiCommand {
}
}
// bug in micronaut, we can't inject YamlFlowParser & ModelValidator, so we inject from implementation
// bug in micronaut, we can't inject ModelValidator, so we inject from implementation
public Integer call(
Class<?> cls,
YamlParser yamlParser,
ModelValidator modelValidator,
Function<Object, String> identity,
Function<Object, List<String>> warningsFunction,
@@ -88,7 +93,7 @@ public abstract class AbstractValidateCommand extends AbstractApiCommand {
.filter(YamlParser::isValidExtension)
.forEach(path -> {
try {
Object parse = yamlParser.parse(path.toFile(), cls);
Object parse = YamlParser.parse(path.toFile(), cls);
modelValidator.validate(parse);
stdOut("@|green \u2713|@ - " + identity.apply(parse));
List<String> warnings = warningsFunction.apply(parse);

View File

@@ -2,6 +2,7 @@ package io.kestra.cli;
import io.kestra.cli.commands.configs.sys.ConfigCommand;
import io.kestra.cli.commands.flows.FlowCommand;
import io.kestra.cli.commands.migrations.MigrationCommand;
import io.kestra.cli.commands.namespaces.NamespaceCommand;
import io.kestra.cli.commands.plugins.PluginCommand;
import io.kestra.cli.commands.servers.ServerCommand;
@@ -42,6 +43,7 @@ import java.util.concurrent.Callable;
SysCommand.class,
ConfigCommand.class,
NamespaceCommand.class,
MigrationCommand.class,
}
)
@Introspected
@@ -88,11 +90,12 @@ public class App implements Callable<Integer> {
.environments(Environment.CLI);
CommandLine cmd = new CommandLine(mainClass, CommandLine.defaultFactory());
continueOnParsingErrors(cmd);
CommandLine.ParseResult parseResult = cmd.parseArgs(args);
List<CommandLine> parsedCommands = parseResult.asCommandLineList();
CommandLine commandLine = parsedCommands.get(parsedCommands.size() - 1);
CommandLine commandLine = parsedCommands.getLast();
Class<?> cls = commandLine.getCommandSpec().userObject().getClass();
if (AbstractCommand.class.isAssignableFrom(cls)) {
@@ -114,15 +117,17 @@ public class App implements Callable<Integer> {
.stream()
.filter(argSpec -> ((Field) argSpec.userObject()).getName().equals("serverPort"))
.findFirst()
.ifPresent(argSpec -> {
properties.put("micronaut.server.port", argSpec.getValue());
});
.ifPresent(argSpec -> properties.put("micronaut.server.port", argSpec.getValue()));
builder.properties(properties);
}
return builder.build();
}
private static void continueOnParsingErrors(CommandLine cmd) {
cmd.getCommandSpec().parser().collectErrors(true);
}
@SuppressWarnings("unchecked")
private static <T> T getPropertiesFromMethod(Class<?> cls, String methodName, Object instance) {
try {

View File

@@ -1,21 +1,18 @@
package io.kestra.cli.commands;
import io.kestra.cli.AbstractApiCommand;
import lombok.Builder;
import lombok.Value;
import lombok.extern.jackson.Jacksonized;
import picocli.CommandLine;
import java.nio.file.Path;
public abstract class AbstractServiceNamespaceUpdateCommand extends AbstractApiCommand {
@CommandLine.Parameters(index = "0", description = "the namespace to update")
@CommandLine.Parameters(index = "0", description = "The namespace to update")
public String namespace;
@CommandLine.Parameters(index = "1", description = "the directory containing files for current namespace")
@CommandLine.Parameters(index = "1", description = "The directory containing flow files for current namespace")
public Path directory;
@CommandLine.Option(names = {"--delete"}, negatable = true, description = "if missing should be deleted")
@CommandLine.Option(names = {"--delete"}, negatable = true, description = "Whether missing should be deleted")
public boolean delete = false;
}

View File

@@ -8,7 +8,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "configs",
description = "handle configs",
description = "Manage configuration",
mixinStandardHelpOptions = true,
subcommands = {
ConfigPropertiesCommand.class,

View File

@@ -10,7 +10,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "properties",
description = {"Display actual configurations properties."}
description = {"Display current configuration properties."}
)
@Slf4j
public class ConfigPropertiesCommand extends AbstractCommand {

View File

@@ -10,7 +10,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "flow",
description = "handle flows",
description = "Manage flows",
mixinStandardHelpOptions = true,
subcommands = {
FlowValidateCommand.class,
@@ -18,6 +18,8 @@ import picocli.CommandLine;
FlowNamespaceCommand.class,
FlowDotCommand.class,
FlowExportCommand.class,
FlowUpdateCommand.class,
FlowUpdatesCommand.class
}
)
@Slf4j

View File

@@ -15,12 +15,12 @@ import java.nio.file.Path;
@CommandLine.Command(
name = "create",
description = "create a single flow",
description = "Create a single flow",
mixinStandardHelpOptions = true
)
@Slf4j
public class FlowCreateCommand extends AbstractApiCommand {
@CommandLine.Parameters(index = "0", description = "the file containing the flow")
@CommandLine.Parameters(index = "0", description = "The file containing the flow")
public Path flowFile;
@SuppressWarnings("deprecation")

View File

@@ -10,17 +10,17 @@ import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
@CommandLine.Command(
name = "create",
description = "create a single flow",
name = "delete",
description = "Delete a single flow",
mixinStandardHelpOptions = true
)
@Slf4j
public class FlowDeleteCommand extends AbstractApiCommand {
@CommandLine.Parameters(index = "0", description = "the namespace of the flow")
@CommandLine.Parameters(index = "0", description = "The namespace of the flow")
public String namespace;
@CommandLine.Parameters(index = "1", description = "the id of the flow")
@CommandLine.Parameters(index = "1", description = "The ID of the flow")
public String id;
@SuppressWarnings("deprecation")

View File

@@ -15,22 +15,21 @@ import java.nio.file.Path;
@CommandLine.Command(
name = "dot",
description = "generate a dot graph from a file"
description = "Generate a DOT graph from a file"
)
@Slf4j
public class FlowDotCommand extends AbstractCommand {
@Inject
private ApplicationContext applicationContext;
@CommandLine.Parameters(index = "0", description = "the flow file to display")
@CommandLine.Parameters(index = "0", description = "The flow file to display")
private Path file;
@Override
public Integer call() throws Exception {
super.call();
YamlParser parser = applicationContext.getBean(YamlParser.class);
Flow flow = parser.parse(file.toFile(), Flow.class);
Flow flow = YamlParser.parse(file.toFile(), Flow.class);
GraphCluster graph = GraphUtils.of(flow, null);

View File

@@ -12,17 +12,14 @@ import java.nio.file.Path;
@CommandLine.Command(
name = "expand",
description = "deprecated - expand a flow"
description = "Deprecated - expand a flow"
)
@Deprecated
public class FlowExpandCommand extends AbstractCommand {
@CommandLine.Parameters(index = "0", description = "the flow file to expand")
@CommandLine.Parameters(index = "0", description = "The flow file to expand")
private Path file;
@Inject
private YamlParser yamlParser;
@Inject
private ModelValidator modelValidator;
@@ -31,7 +28,7 @@ public class FlowExpandCommand extends AbstractCommand {
super.call();
stdErr("Warning, this functionality is deprecated and will be removed at some point.");
String content = IncludeHelperExpander.expand(Files.readString(file), file.getParent());
Flow flow = yamlParser.parse(content, Flow.class);
Flow flow = YamlParser.parse(content, Flow.class);
modelValidator.validate(flow);
stdOut(content);
return 0;

View File

@@ -18,7 +18,7 @@ import java.nio.file.Path;
@CommandLine.Command(
name = "export",
description = "export flows to a zip file",
description = "Export flows to a ZIP file",
mixinStandardHelpOptions = true
)
@Slf4j
@@ -29,10 +29,10 @@ public class FlowExportCommand extends AbstractApiCommand {
@Inject
private ApplicationContext applicationContext;
@CommandLine.Option(names = {"--namespace"}, description = "the namespace of flows to export")
@CommandLine.Option(names = {"--namespace"}, description = "The namespace of flows to export")
public String namespace;
@CommandLine.Parameters(index = "0", description = "the directory to export the file to")
@CommandLine.Parameters(index = "0", description = "The directory to export the ZIP file to")
public Path directory;
@Override

View File

@@ -27,19 +27,19 @@ import java.util.concurrent.TimeoutException;
@CommandLine.Command(
name = "test",
description = "test a flow"
description = "Test a flow"
)
@Slf4j
public class FlowTestCommand extends AbstractCommand {
@Inject
private ApplicationContext applicationContext;
@CommandLine.Parameters(index = "0", description = "the flow file to test")
@CommandLine.Parameters(index = "0", description = "The flow file to test")
private Path file;
@CommandLine.Parameters(
index = "1..*",
description = "the inputs to pass as key pair value separated by space, " +
description = "The inputs to pass as key pair value separated by space, " +
"for input type file, you need to pass an absolute path."
)
private List<String> inputs = new ArrayList<>();

View File

@@ -15,18 +15,18 @@ import java.nio.file.Path;
@CommandLine.Command(
name = "update",
description = "update a single flow",
description = "Update a single flow",
mixinStandardHelpOptions = true
)
@Slf4j
public class FlowUpdateCommand extends AbstractApiCommand {
@CommandLine.Parameters(index = "0", description = "the file containing the flow")
@CommandLine.Parameters(index = "0", description = "The file containing the flow")
public Path flowFile;
@CommandLine.Parameters(index = "1", description = "the namespace of the flow")
@CommandLine.Parameters(index = "1", description = "The namespace of the flow")
public String namespace;
@CommandLine.Parameters(index = "2", description = "the id of the flow")
@CommandLine.Parameters(index = "2", description = "The ID of the flow")
public String id;
@SuppressWarnings("deprecation")

View File

@@ -21,18 +21,21 @@ import java.util.List;
@CommandLine.Command(
name = "updates",
description = "create or update flows from a folder, and optionally delete the ones not present",
description = "Create or update flows from a folder, and optionally delete the ones not present",
mixinStandardHelpOptions = true
)
@Slf4j
public class FlowUpdatesCommand extends AbstractApiCommand {
@CommandLine.Parameters(index = "0", description = "the directory containing files")
@CommandLine.Parameters(index = "0", description = "The directory containing files")
public Path directory;
@CommandLine.Option(names = {"--delete"}, negatable = true, description = "if missing should be deleted")
@CommandLine.Option(names = {"--delete"}, negatable = true, description = "Whether missing should be deleted")
public boolean delete = false;
@CommandLine.Option(names = {"--namespace"}, description = "The parent namespace of the flows, if not set, every namespace are allowed.")
public String namespace;
@SuppressWarnings("deprecation")
@Override
public Integer call() throws Exception {
@@ -58,8 +61,12 @@ public class FlowUpdatesCommand extends AbstractApiCommand {
body = String.join("\n---\n", flows);
}
try(DefaultHttpClient client = client()) {
String namespaceQuery = "";
if (namespace != null) {
namespaceQuery = "&namespace=" + namespace;
}
MutableHttpRequest<String> request = HttpRequest
.POST(apiUri("/flows/bulk") + "?delete=" + delete, body).contentType(MediaType.APPLICATION_YAML);
.POST(apiUri("/flows/bulk") + "?allowNamespaceChild=true&delete=" + delete + namespaceQuery, body).contentType(MediaType.APPLICATION_YAML);
List<UpdateResult> updated = client.toBlocking().retrieve(
this.requestOptions(request),
@@ -80,4 +87,9 @@ public class FlowUpdatesCommand extends AbstractApiCommand {
return 0;
}
@Override
protected boolean loadExternalPlugins() {
return false;
}
}

View File

@@ -1,9 +1,8 @@
package io.kestra.cli.commands.flows;
import io.kestra.cli.AbstractValidateCommand;
import io.kestra.core.models.flows.Flow;
import io.kestra.core.models.flows.FlowWithSource;
import io.kestra.core.models.validations.ModelValidator;
import io.kestra.core.serializers.YamlParser;
import io.kestra.core.services.FlowService;
import jakarta.inject.Inject;
import picocli.CommandLine;
@@ -13,11 +12,9 @@ import java.util.List;
@CommandLine.Command(
name = "validate",
description = "validate a flow"
description = "Validate a flow"
)
public class FlowValidateCommand extends AbstractValidateCommand {
@Inject
private YamlParser yamlParser;
@Inject
private ModelValidator modelValidator;
@@ -28,23 +25,22 @@ public class FlowValidateCommand extends AbstractValidateCommand {
@Override
public Integer call() throws Exception {
return this.call(
Flow.class,
yamlParser,
FlowWithSource.class,
modelValidator,
(Object object) -> {
Flow flow = (Flow) object;
FlowWithSource flow = (FlowWithSource) object;
return flow.getNamespace() + " / " + flow.getId();
},
(Object object) -> {
Flow flow = (Flow) object;
FlowWithSource flow = (FlowWithSource) object;
List<String> warnings = new ArrayList<>();
warnings.addAll(flowService.deprecationPaths(flow).stream().map(deprecation -> deprecation + " is deprecated").toList());
warnings.addAll(flowService.warnings(flow));
warnings.addAll(flowService.warnings(flow, this.tenantId));
return warnings;
},
(Object object) -> {
Flow flow = (Flow) object;
return flowService.relocations(flow.generateSource()).stream().map(relocation -> relocation.from() + " is replaced by " + relocation.to()).toList();
FlowWithSource flow = (FlowWithSource) object;
return flowService.relocations(flow.sourceOrGenerateIfNull()).stream().map(relocation -> relocation.from() + " is replaced by " + relocation.to()).toList();
}
);
}

View File

@@ -9,7 +9,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "namespace",
description = "handle namespace flows",
description = "Manage namespace flows",
mixinStandardHelpOptions = true,
subcommands = {
FlowNamespaceUpdateCommand.class,

View File

@@ -10,7 +10,6 @@ import io.micronaut.http.MediaType;
import io.micronaut.http.MutableHttpRequest;
import io.micronaut.http.client.exceptions.HttpClientResponseException;
import io.micronaut.http.client.netty.DefaultHttpClient;
import jakarta.inject.Inject;
import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
@@ -22,15 +21,13 @@ import java.util.List;
@CommandLine.Command(
name = "update",
description = "handle namespace flows",
description = "Update flows in namespace",
mixinStandardHelpOptions = true
)
@Slf4j
public class FlowNamespaceUpdateCommand extends AbstractServiceNamespaceUpdateCommand {
@Inject
public YamlParser yamlParser;
@CommandLine.Option(names = {"--override-namespaces"}, negatable = true, description = "replace namespace of all flows by the one provided")
@CommandLine.Option(names = {"--override-namespaces"}, negatable = true, description = "Replace namespace of all flows by the one provided")
public boolean override = false;
@SuppressWarnings("deprecation")

View File

@@ -0,0 +1,29 @@
package io.kestra.cli.commands.migrations;
import io.kestra.cli.AbstractCommand;
import io.kestra.cli.App;
import io.micronaut.configuration.picocli.PicocliRunner;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
@CommandLine.Command(
name = "migrate",
description = "handle migrations",
mixinStandardHelpOptions = true,
subcommands = {
TenantMigrationCommand.class,
}
)
@Slf4j
public class MigrationCommand extends AbstractCommand {
@SneakyThrows
@Override
public Integer call() throws Exception {
super.call();
PicocliRunner.call(App.class, "migrate", "--help");
return 0;
}
}

View File

@@ -0,0 +1,49 @@
package io.kestra.cli.commands.migrations;
import io.kestra.cli.AbstractCommand;
import io.kestra.core.repositories.TenantMigrationInterface;
import io.micronaut.context.ApplicationContext;
import jakarta.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
import picocli.CommandLine.Option;
@CommandLine.Command(
name = "default-tenant",
description = "migrate every elements from no tenant to the main tenant"
)
@Slf4j
public class TenantMigrationCommand extends AbstractCommand {
@Inject
private ApplicationContext applicationContext;
@Option(names = "--tenant-id", description = "tenant identifier")
String tenantId;
@Option(names = "--tenant-name", description = "tenant name")
String tenantName;
@Option(names = "--dry-run", description = "Preview only, do not update")
boolean dryRun;
@Override
public Integer call() throws Exception {
super.call();
if (dryRun) {
System.out.println("🧪 Dry-run mode enabled. No changes will be applied.");
}
TenantMigrationService migrationService = this.applicationContext.getBean(TenantMigrationService.class);
try {
migrationService.migrateTenant(tenantId, tenantName, dryRun);
System.out.println("✅ Tenant migration complete.");
} catch (Exception e) {
System.err.println("❌ Tenant migration failed: " + e.getMessage());
e.printStackTrace();
return 1;
}
return 0;
}
}

View File

@@ -0,0 +1,56 @@
package io.kestra.cli.commands.migrations;
import static io.kestra.core.tenant.TenantService.MAIN_TENANT;
import com.github.javaparser.utils.Log;
import io.kestra.core.exceptions.KestraRuntimeException;
import io.kestra.core.models.flows.FlowInterface;
import io.kestra.core.queues.QueueException;
import io.kestra.core.queues.QueueFactoryInterface;
import io.kestra.core.queues.QueueInterface;
import io.kestra.core.repositories.FlowRepositoryInterface;
import io.kestra.core.repositories.TenantMigrationInterface;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@Singleton
@Slf4j
public class TenantMigrationService {
@Inject
private TenantMigrationInterface tenantMigrationInterface;
@Inject
private FlowRepositoryInterface flowRepository;
@Inject
@Named(QueueFactoryInterface.FLOW_NAMED)
private QueueInterface<FlowInterface> flowQueue;
public void migrateTenant(String tenantId, String tenantName, boolean dryRun) {
if (StringUtils.isNotBlank(tenantId) && !MAIN_TENANT.equals(tenantId)){
throw new KestraRuntimeException("Tenant configuration is an enterprise feature. It can only be main in OSS");
}
Log.info("🔁 Starting tenant migration...");
tenantMigrationInterface.migrateTenant(MAIN_TENANT, dryRun);
migrateQueue(dryRun);
}
protected void migrateQueue(boolean dryRun) {
if (!dryRun){
log.info("🔁 Starting restoring queue...");
flowRepository.findAllWithSourceForAllTenants().forEach(flow -> {
try {
flowQueue.emit(flow);
} catch (QueueException e) {
log.warn("Unable to send the flow {} to the queue", flow.uid(), e);
}
});
}
}
}

View File

@@ -11,7 +11,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "namespace",
description = "handle namespaces",
description = "Manage namespaces",
mixinStandardHelpOptions = true,
subcommands = {
NamespaceFilesCommand.class,

View File

@@ -9,7 +9,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "files",
description = "handle namespace files",
description = "Manage namespace files",
mixinStandardHelpOptions = true,
subcommands = {
NamespaceFilesUpdateCommand.class,

View File

@@ -17,21 +17,21 @@ import java.util.List;
@CommandLine.Command(
name = "update",
description = "update namespace files",
description = "Update namespace files",
mixinStandardHelpOptions = true
)
@Slf4j
public class NamespaceFilesUpdateCommand extends AbstractApiCommand {
@CommandLine.Parameters(index = "0", description = "the namespace to update")
@CommandLine.Parameters(index = "0", description = "The namespace to update")
public String namespace;
@CommandLine.Parameters(index = "1", description = "the local directory containing files for current namespace")
@CommandLine.Parameters(index = "1", description = "The local directory containing files for current namespace")
public Path from;
@CommandLine.Parameters(index = "2", description = "the remote namespace path to upload files to", defaultValue = "/")
@CommandLine.Parameters(index = "2", description = "The remote namespace path to upload files to", defaultValue = "/")
public String to;
@CommandLine.Option(names = {"--delete"}, negatable = true, description = "if missing should be deleted")
@CommandLine.Option(names = {"--delete"}, negatable = true, description = "Whether missing should be deleted")
public boolean delete = false;
private static final String KESTRA_IGNORE_FILE = ".kestraignore";

View File

@@ -9,7 +9,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "kv",
description = "handle KV Store",
description = "Manage KV Store",
mixinStandardHelpOptions = true,
subcommands = {
KvUpdateCommand.class,

View File

@@ -18,28 +18,28 @@ import java.time.Duration;
@CommandLine.Command(
name = "update",
description = "update value for a KV Store key",
description = "Update value for a KV Store key",
mixinStandardHelpOptions = true
)
@Slf4j
public class KvUpdateCommand extends AbstractApiCommand {
@CommandLine.Parameters(index = "0", description = "the namespace to update")
@CommandLine.Parameters(index = "0", description = "The namespace to update")
public String namespace;
@CommandLine.Parameters(index = "1", description = "the key to update")
@CommandLine.Parameters(index = "1", description = "The key to update")
public String key;
@CommandLine.Parameters(index = "2", description = "the value to assign to the key. If the value is an object, it must be in JSON format. If the value must be read from file, use -f parameter.")
@CommandLine.Parameters(index = "2", description = "The value to assign to the key. If the value is an object, it must be in JSON format. If the value must be read from file, use -f parameter.")
public String value;
@Option(names = {"-e", "--expiration"}, description = "the duration after which the key should expire.")
@Option(names = {"-e", "--expiration"}, description = "The duration after which the key should expire.")
public String expiration;
@Option(names = {"-t", "--type"}, description = "the type of the value. Optional and useful to override the deduced type (eg. numbers, booleans or JSON as full string). Valid values: ${COMPLETION-CANDIDATES}.")
@Option(names = {"-t", "--type"}, description = "The type of the value. Optional and useful to override the deduced type (eg. numbers, booleans or JSON as full string). Valid values: ${COMPLETION-CANDIDATES}.")
public Type type;
@Option(names = {"-f", "--file-value"}, description = "the file from which to read the value to set. If this is provided, it will take precedence over any specified value.")
@Option(names = {"-f", "--file-value"}, description = "The file from which to read the value to set. If this is provided, it will take precedence over any specified value.")
public Path fileValue;
@Override

View File

@@ -1,31 +1,37 @@
package io.kestra.cli.commands.plugins;
import io.micronaut.configuration.picocli.PicocliRunner;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import io.kestra.cli.AbstractCommand;
import io.kestra.cli.App;
import picocli.CommandLine;
import io.micronaut.configuration.picocli.PicocliRunner;
import lombok.SneakyThrows;
import picocli.CommandLine.Command;
@CommandLine.Command(
@Command(
name = "plugins",
description = "handle plugins",
description = "Manage plugins",
mixinStandardHelpOptions = true,
subcommands = {
PluginInstallCommand.class,
PluginUninstallCommand.class,
PluginListCommand.class,
PluginDocCommand.class
PluginDocCommand.class,
PluginSearchCommand.class
}
)
@Slf4j
public class PluginCommand extends AbstractCommand {
@SneakyThrows
@Override
public Integer call() throws Exception {
super.call();
PicocliRunner.call(App.class, "plugins", "--help");
PicocliRunner.call(App.class, "plugins", "--help");
return 0;
}
@Override
protected boolean loadExternalPlugins() {
return false;
}
}

View File

@@ -1,9 +1,8 @@
package io.kestra.cli.commands.plugins;
import com.google.common.base.Charsets;
import com.google.common.io.Files;
import io.kestra.cli.AbstractCommand;
import io.kestra.core.docs.DocumentationGenerator;
import io.kestra.core.docs.JsonSchemaGenerator;
import io.kestra.core.plugins.PluginRegistry;
import io.kestra.core.plugins.RegisteredPlugin;
import io.kestra.core.serializers.JacksonMapper;
@@ -21,13 +20,13 @@ import java.util.List;
@CommandLine.Command(
name = "doc",
description = "write documentation for all plugins currently installed"
description = "Generate documentation for all plugins currently installed"
)
public class PluginDocCommand extends AbstractCommand {
@Inject
private ApplicationContext applicationContext;
@CommandLine.Parameters(index = "0", description = "Path to write documentations files")
@CommandLine.Parameters(index = "0", description = "Path to write documentation files")
private Path output = Paths.get(System.getProperty("user.dir"), "docs");
@CommandLine.Option(names = {"--core"}, description = "Also write core tasks docs files")
@@ -36,7 +35,7 @@ public class PluginDocCommand extends AbstractCommand {
@CommandLine.Option(names = {"--icons"}, description = "Also write icon for each task")
private boolean icons = false;
@CommandLine.Option(names = {"--schema"}, description = "Also write json schema for each task")
@CommandLine.Option(names = {"--schema"}, description = "Also write JSON Schema for each task")
private boolean schema = false;
@Override
@@ -44,56 +43,70 @@ public class PluginDocCommand extends AbstractCommand {
super.call();
DocumentationGenerator documentationGenerator = applicationContext.getBean(DocumentationGenerator.class);
List<RegisteredPlugin> plugins = core ? pluginRegistry().plugins() : pluginRegistry().externalPlugins();
PluginRegistry registry = pluginRegistryProvider.get();
List<RegisteredPlugin> plugins = core ? registry.plugins() : registry.externalPlugins();
boolean hasFailures = false;
for (RegisteredPlugin registeredPlugin : plugins) {
documentationGenerator
.generate(registeredPlugin)
.forEach(s -> {
File file = Paths.get(output.toAbsolutePath().toString(), s.getPath()).toFile();
try {
documentationGenerator
.generate(registeredPlugin)
.forEach(s -> {
File file = Paths.get(output.toAbsolutePath().toString(), s.getPath()).toFile();
if (!file.getParentFile().exists()) {
//noinspection ResultOfMethodCallIgnored
file.getParentFile().mkdirs();
}
try {
com.google.common.io.Files
.asCharSink(
file,
Charsets.UTF_8
).write(s.getBody());
stdOut("Generate doc in: {0}", file);
if (s.getIcon() != null && this.icons) {
File iconFile = new File(
file.getParent(),
file.getName().substring(0, file.getName().lastIndexOf(".")) + ".svg"
);
com.google.common.io.Files
.asByteSink(iconFile)
.write(Base64.getDecoder().decode(s.getIcon().getBytes(StandardCharsets.UTF_8)));
stdOut("Generate icon in: {0}", iconFile);
if (!file.getParentFile().exists()) {
//noinspection ResultOfMethodCallIgnored
file.getParentFile().mkdirs();
}
if (this.schema && s.getSchema() != null) {
File jsonSchemaFile = new File(
file.getParent(),
file.getName().substring(0, file.getName().lastIndexOf(".")) + ".json"
);
try {
Files
.asCharSink(
file,
StandardCharsets.UTF_8
).write(s.getBody());
stdOut("Generate doc in: {0}", file);
com.google.common.io.Files
.asByteSink(jsonSchemaFile)
.write(JacksonMapper.ofJson().writeValueAsBytes(s.getSchema()));
stdOut("Generate json schema in: {0}", jsonSchemaFile);
if (s.getIcon() != null && this.icons) {
File iconFile = new File(
file.getParent(),
file.getName().substring(0, file.getName().lastIndexOf(".")) + ".svg"
);
Files
.asByteSink(iconFile)
.write(Base64.getDecoder().decode(s.getIcon().getBytes(StandardCharsets.UTF_8)));
stdOut("Generate icon in: {0}", iconFile);
}
if (this.schema && s.getSchema() != null) {
File jsonSchemaFile = new File(
file.getParent(),
file.getName().substring(0, file.getName().lastIndexOf(".")) + ".json"
);
Files
.asByteSink(jsonSchemaFile)
.write(JacksonMapper.ofJson().writeValueAsBytes(s.getSchema()));
stdOut("Generate json schema in: {0}", jsonSchemaFile);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
);
);
} catch (Error e) {
stdErr("Failure to generate documentation for plugin {0}: {1}", registeredPlugin.name(), e);
hasFailures = true;
}
}
return 0;
return hasFailures ? 1 : 0;
}
/** {@inheritDoc} **/
@Override
protected boolean isPluginManagerEnabled() {
return false;
}
}

View File

@@ -1,100 +1,133 @@
package io.kestra.cli.commands.plugins;
import io.kestra.core.contexts.MavenPluginRepositoryConfig;
import io.kestra.core.exceptions.KestraRuntimeException;
import io.kestra.core.plugins.LocalPluginManager;
import io.kestra.core.plugins.MavenPluginDownloader;
import io.kestra.core.plugins.PluginArtifact;
import io.kestra.core.plugins.PluginCatalogService;
import io.kestra.core.plugins.PluginManager;
import io.micronaut.http.client.HttpClient;
import io.micronaut.http.client.annotation.Client;
import io.micronaut.http.uri.UriBuilder;
import org.apache.commons.io.FilenameUtils;
import io.kestra.cli.AbstractCommand;
import io.kestra.cli.plugins.PluginDownloader;
import io.kestra.cli.plugins.RepositoryConfig;
import io.kestra.core.utils.IdUtils;
import org.apache.http.client.utils.URIBuilder;
import jakarta.inject.Provider;
import picocli.CommandLine;
import java.net.URI;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import jakarta.inject.Inject;
import picocli.CommandLine.Command;
import picocli.CommandLine.Parameters;
import picocli.CommandLine.Option;
import picocli.CommandLine.Spec;
import static io.kestra.core.utils.Rethrow.throwConsumer;
@CommandLine.Command(
@Command(
name = "install",
description = "install a plugin"
description = "Install plugins"
)
public class PluginInstallCommand extends AbstractCommand {
@CommandLine.Parameters(index = "0..*", description = "the plugins to install")
@Option(names = {"--locally"}, description = "Specifies if plugins must be installed locally. If set to false the installation depends on your Kestra configuration.")
boolean locally = true;
@Option(names = {"--all"}, description = "Install all available plugins")
boolean all = false;
@Parameters(index = "0..*", description = "Plugins to install. Represented as Maven artifact coordinates (i.e., <groupId>:<artifactId>:(<version>|LATEST)")
List<String> dependencies = new ArrayList<>();
@CommandLine.Option(names = {"--repositories"}, description = "url to additional maven repositories")
@Option(names = {"--repositories"}, description = "URL to additional Maven repositories")
private URI[] repositories;
@CommandLine.Spec
@Spec
CommandLine.Model.CommandSpec spec;
@Inject
private PluginDownloader pluginDownloader;
Provider<MavenPluginDownloader> mavenPluginRepositoryProvider;
@Inject
Provider<PluginCatalogService> pluginCatalogService;
@Override
public Integer call() throws Exception {
super.call();
if (this.pluginsPath == null) {
if (this.locally && this.pluginsPath == null) {
throw new CommandLine.ParameterException(this.spec.commandLine(), "Missing required options '--plugins' " +
"or environment variable 'KESTRA_PLUGINS_PATH"
);
}
if (!pluginsPath.toFile().exists()) {
if (!pluginsPath.toFile().mkdir()) {
throw new RuntimeException("Cannot create directory: " + pluginsPath.toFile().getAbsolutePath());
}
}
List<MavenPluginRepositoryConfig> repositoryConfigs = List.of();
if (repositories != null) {
Arrays.stream(repositories)
.forEach(throwConsumer(s -> {
URIBuilder uriBuilder = new URIBuilder(s);
RepositoryConfig.RepositoryConfigBuilder builder = RepositoryConfig.builder()
repositoryConfigs = Arrays.stream(repositories)
.map(uri -> {
MavenPluginRepositoryConfig.MavenPluginRepositoryConfigBuilder builder = MavenPluginRepositoryConfig
.builder()
.id(IdUtils.create());
if (uriBuilder.getUserInfo() != null) {
int index = uriBuilder.getUserInfo().indexOf(":");
builder.basicAuth(new RepositoryConfig.BasicAuth(
uriBuilder.getUserInfo().substring(0, index),
uriBuilder.getUserInfo().substring(index + 1)
String userInfo = uri.getUserInfo();
if (userInfo != null) {
String[] userInfoParts = userInfo.split(":");
builder = builder.basicAuth(new MavenPluginRepositoryConfig.BasicAuth(
userInfoParts[0],
userInfoParts[1]
));
uriBuilder.setUserInfo(null);
}
builder.url(uriBuilder.build().toString());
pluginDownloader.addRepository(builder.build());
}));
builder.url(UriBuilder.of(uri).userInfo(null).build().toString());
return builder.build();
}).toList();
}
List<URL> resolveUrl = pluginDownloader.resolve(dependencies);
stdOut("Resolved Plugin(s) with {0}", resolveUrl);
for (URL url: resolveUrl) {
Files.copy(
Paths.get(url.toURI()),
Paths.get(pluginsPath.toString(), FilenameUtils.getName(url.toString())),
StandardCopyOption.REPLACE_EXISTING
);
if (all) {
PluginCatalogService service = pluginCatalogService.get();
dependencies = service.get().stream().map(Objects::toString).toList();
}
stdOut("Successfully installed plugins {0} into {1}", dependencies, pluginsPath);
if (dependencies.isEmpty()) {
stdErr("Error: No plugin to install.");
return CommandLine.ExitCode.OK;
}
return 0;
final List<PluginArtifact> pluginArtifacts;
try {
pluginArtifacts = dependencies.stream().map(PluginArtifact::fromCoordinates).toList();
} catch (IllegalArgumentException e) {
stdErr(e.getMessage());
return CommandLine.ExitCode.USAGE;
}
try (final PluginManager pluginManager = getPluginManager()) {
List<PluginArtifact> installed;
if (all) {
installed = new ArrayList<>(pluginArtifacts.size());
for (PluginArtifact pluginArtifact : pluginArtifacts) {
try {
installed.add(pluginManager.install(pluginArtifact, repositoryConfigs, false, pluginsPath));
} catch (KestraRuntimeException e) {
String cause = e.getCause() != null ? e.getCause().getMessage() : e.getMessage();
stdErr("Failed to install plugin {0}. Cause: {1}", pluginArtifact, cause);
}
}
} else {
installed = pluginManager.install(pluginArtifacts, repositoryConfigs, false, pluginsPath);
}
List<URI> uris = installed.stream().map(PluginArtifact::uri).toList();
stdOut("Successfully installed plugins {0} into {1}", dependencies, uris);
return CommandLine.ExitCode.OK;
}
}
private PluginManager getPluginManager() {
return locally ? new LocalPluginManager(mavenPluginRepositoryProvider.get()) : this.pluginManagerProvider.get();
}
@Override

View File

@@ -1,22 +1,31 @@
package io.kestra.cli.commands.plugins;
import io.kestra.cli.AbstractCommand;
import io.kestra.core.plugins.PluginRegistry;
import io.kestra.core.plugins.RegisteredPlugin;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
import picocli.CommandLine.Spec;
import java.util.List;
@CommandLine.Command(
@Command(
name = "list",
description = "list all plugins already installed"
description = "List all plugins already installed"
)
public class PluginListCommand extends AbstractCommand {
@CommandLine.Spec
@Spec
CommandLine.Model.CommandSpec spec;
@CommandLine.Option(names = {"--core"}, description = "Also write core tasks plugins")
@Option(names = {"--core"}, description = "Also write core tasks plugins")
private boolean core = false;
@Inject
private PluginRegistry registry;
@Override
public Integer call() throws Exception {
super.call();
@@ -26,8 +35,9 @@ public class PluginListCommand extends AbstractCommand {
"or environment variable 'KESTRA_PLUGINS_PATH"
);
}
List<RegisteredPlugin> plugins = core ? pluginRegistry().plugins() : pluginRegistry().externalPlugins();
List<RegisteredPlugin> plugins = core ? registry.plugins() : registry.externalPlugins();
plugins.forEach(registeredPlugin -> stdOut(registeredPlugin.toString()));
return 0;

View File

@@ -0,0 +1,149 @@
package io.kestra.cli.commands.plugins;
import io.kestra.cli.AbstractCommand;
import io.micronaut.core.type.Argument;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.client.HttpClient;
import io.micronaut.http.client.annotation.Client;
import jakarta.inject.Inject;
import picocli.CommandLine.Command;
import picocli.CommandLine.Parameters;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.List;
@Command(
name = "search",
description = "Search for available Kestra plugins"
)
public class PluginSearchCommand extends AbstractCommand {
@Inject
@Client("api")
private HttpClient httpClient;
private static final ObjectMapper MAPPER = new ObjectMapper();
private static final char SPACE = ' ';
@Parameters(index = "0", description = "Search term (optional)", defaultValue = "")
private String searchTerm;
@Override
public Integer call() throws Exception {
super.call();
try {
JsonNode root = fetchPlugins();
List<PluginInfo> plugins = findPlugins(root);
printResults(plugins);
return 0;
} catch (Exception e) {
stdOut("Error processing plugins: {0}", e.getMessage());
return 1;
}
}
private JsonNode fetchPlugins() throws Exception {
String response = httpClient.toBlocking()
.retrieve(
HttpRequest.GET("/v1/plugins")
.header("Accept", "application/json")
);
return MAPPER.readTree(response);
}
private List<PluginInfo> findPlugins(JsonNode root) {
String searchTermLower = searchTerm.toLowerCase();
List<PluginInfo> plugins = new ArrayList<>();
for (JsonNode plugin : root) {
if (matchesSearch(plugin, searchTermLower)) {
plugins.add(new PluginInfo(
plugin.path("name").asText(),
plugin.path("title").asText(),
plugin.path("group").asText(),
plugin.path("version").asText("")
));
}
}
plugins.sort((p1, p2) -> p1.name.compareToIgnoreCase(p2.name));
return plugins;
}
private boolean matchesSearch(JsonNode plugin, String term) {
if (term.isEmpty()) {
return true;
}
return plugin.path("name").asText().toLowerCase().contains(term) ||
plugin.path("title").asText().toLowerCase().contains(term) ||
plugin.path("group").asText().toLowerCase().contains(term);
}
private void printResults(List<PluginInfo> plugins) {
if (plugins.isEmpty()) {
stdOut("No plugins found{0}",
searchTerm.isEmpty() ? "" : " matching '" + searchTerm + "'");
return;
}
stdOut("\nFound {0} plugins{1}",
plugins.size(),
searchTerm.isEmpty() ? "" : " matching '" + searchTerm + "'"
);
printPluginsTable(plugins);
}
private void printPluginsTable(List<PluginInfo> plugins) {
int maxName = 4, maxTitle = 5, maxGroup = 5;
for (PluginInfo plugin : plugins) {
maxName = Math.max(maxName, plugin.name.length());
maxTitle = Math.max(maxTitle, plugin.title.length());
maxGroup = Math.max(maxGroup, plugin.group.length());
}
StringBuilder namePad = new StringBuilder(maxName);
StringBuilder titlePad = new StringBuilder(maxTitle);
StringBuilder groupPad = new StringBuilder(maxGroup);
stdOut("");
printRow(namePad, titlePad, groupPad, "NAME", "TITLE", "GROUP", "VERSION",
maxName, maxTitle, maxGroup);
for (PluginInfo plugin : plugins) {
printRow(namePad, titlePad, groupPad, plugin.name, plugin.title, plugin.group, plugin.version,
maxName, maxTitle, maxGroup);
}
stdOut("");
}
private void printRow(StringBuilder namePad, StringBuilder titlePad, StringBuilder groupPad,
String name, String title, String group, String version,
int maxName, int maxTitle, int maxGroup) {
stdOut("{0} {1} {2} {3}",
pad(namePad, name, maxName),
pad(titlePad, title, maxTitle),
pad(groupPad, group, maxGroup),
version
);
}
private String pad(StringBuilder sb, String str, int length) {
sb.setLength(0);
sb.append(str);
while (sb.length() < length) {
sb.append(SPACE);
}
return sb.toString();
}
private record PluginInfo(String name, String title, String group, String version) {}
@Override
protected boolean loadExternalPlugins() {
return false;
}
}

View File

@@ -0,0 +1,69 @@
package io.kestra.cli.commands.plugins;
import io.kestra.cli.AbstractCommand;
import io.kestra.core.plugins.LocalPluginManager;
import io.kestra.core.plugins.MavenPluginDownloader;
import io.kestra.core.plugins.PluginArtifact;
import io.kestra.core.plugins.PluginManager;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import picocli.CommandLine;
import picocli.CommandLine.Parameters;
import picocli.CommandLine.Spec;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
@CommandLine.Command(
name = "uninstall",
description = "Uninstall plugins"
)
public class PluginUninstallCommand extends AbstractCommand {
@Parameters(index = "0..*", description = "The plugins to uninstall. Represented as Maven artifact coordinates (i.e., <groupId>:<artifactId>:(<version>|LATEST)")
List<String> dependencies = new ArrayList<>();
@Spec
CommandLine.Model.CommandSpec spec;
@Inject
Provider<MavenPluginDownloader> mavenPluginRepositoryProvider;
@Override
public Integer call() throws Exception {
super.call();
List<PluginArtifact> pluginArtifacts;
try {
pluginArtifacts = dependencies.stream().map(PluginArtifact::fromCoordinates).toList();
} catch (IllegalArgumentException e) {
stdErr(e.getMessage());
return CommandLine.ExitCode.USAGE;
}
final PluginManager pluginManager;
// If a PLUGIN_PATH is provided, then use the LocalPluginManager
if (pluginsPath != null) {
pluginManager = new LocalPluginManager(mavenPluginRepositoryProvider.get());
} else {
// Otherwise, we delegate to the configured plugin-manager.
pluginManager = this.pluginManagerProvider.get();
}
List<PluginArtifact> uninstalled = pluginManager.uninstall(
pluginArtifacts,
false,
pluginsPath
);
List<URI> uris = uninstalled.stream().map(PluginArtifact::uri).toList();
stdOut("Successfully uninstalled plugins {0} from {1}", dependencies, uris);
return CommandLine.ExitCode.OK;
}
@Override
protected boolean loadExternalPlugins() {
return false;
}
}

View File

@@ -1,12 +1,20 @@
package io.kestra.cli.commands.servers;
import io.kestra.cli.AbstractCommand;
import io.kestra.core.contexts.KestraContext;
import jakarta.annotation.PostConstruct;
import picocli.CommandLine;
abstract public class AbstractServerCommand extends AbstractCommand implements ServerCommandInterface {
@CommandLine.Option(names = {"--port"}, description = "the port to bind")
@CommandLine.Option(names = {"--port"}, description = "The port to bind")
Integer serverPort;
@Override
public Integer call() throws Exception {
this.shutdownHook(true, () -> KestraContext.getContext().shutdown());
return super.call();
}
protected static int defaultWorkerThread() {
return Runtime.getRuntime().availableProcessors() * 4;
}

View File

@@ -1,7 +1,6 @@
package io.kestra.cli.commands.servers;
import com.google.common.collect.ImmutableMap;
import io.kestra.core.contexts.KestraContext;
import io.kestra.core.models.ServerType;
import io.kestra.core.runners.ExecutorInterface;
import io.kestra.core.services.SkipExecutionService;
@@ -9,7 +8,6 @@ import io.kestra.core.services.StartExecutorService;
import io.kestra.core.utils.Await;
import io.micronaut.context.ApplicationContext;
import jakarta.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
import java.util.Collections;
@@ -18,9 +16,8 @@ import java.util.Map;
@CommandLine.Command(
name = "executor",
description = "start an executor"
description = "Start the Kestra executor"
)
@Slf4j
public class ExecutorCommand extends AbstractServerCommand {
@Inject
private ApplicationContext applicationContext;
@@ -31,22 +28,22 @@ public class ExecutorCommand extends AbstractServerCommand {
@Inject
private StartExecutorService startExecutorService;
@CommandLine.Option(names = {"--skip-executions"}, split=",", description = "a list of execution identifiers to skip, separated by a coma; for troubleshooting purpose only")
@CommandLine.Option(names = {"--skip-executions"}, split=",", description = "The list of execution identifiers to skip, separated by a coma; for troubleshooting purpose only")
private List<String> skipExecutions = Collections.emptyList();
@CommandLine.Option(names = {"--skip-flows"}, split=",", description = "a list of flow identifiers (tenant|namespace|flowId) to skip, separated by a coma; for troubleshooting purpose only")
@CommandLine.Option(names = {"--skip-flows"}, split=",", description = "The list of flow identifiers (tenant|namespace|flowId) to skip, separated by a coma; for troubleshooting purpose only")
private List<String> skipFlows = Collections.emptyList();
@CommandLine.Option(names = {"--skip-namespaces"}, split=",", description = "a list of namespace identifiers (tenant|namespace) to skip, separated by a coma; for troubleshooting purpose only")
@CommandLine.Option(names = {"--skip-namespaces"}, split=",", description = "The list of namespace identifiers (tenant|namespace) to skip, separated by a coma; for troubleshooting purpose only")
private List<String> skipNamespaces = Collections.emptyList();
@CommandLine.Option(names = {"--skip-tenants"}, split=",", description = "a list of tenants to skip, separated by a coma; for troubleshooting purpose only")
@CommandLine.Option(names = {"--skip-tenants"}, split=",", description = "The list of tenants to skip, separated by a coma; for troubleshooting purpose only")
private List<String> skipTenants = Collections.emptyList();
@CommandLine.Option(names = {"--start-executors"}, split=",", description = "a list of Kafka Stream executors to start, separated by a command. Use it only with the Kafka queue, for debugging purpose.")
@CommandLine.Option(names = {"--start-executors"}, split=",", description = "The list of Kafka Stream executors to start, separated by a command. Use it only with the Kafka queue, for debugging purpose.")
private List<String> startExecutors = Collections.emptyList();
@CommandLine.Option(names = {"--not-start-executors"}, split=",", description = "a list of Kafka Stream executors to not start, separated by a command. Use it only with the Kafka queue, for debugging purpose.")
@CommandLine.Option(names = {"--not-start-executors"}, split=",", description = "The list of Kafka Stream executors to not start, separated by a command. Use it only with the Kafka queue, for debugging purpose.")
private List<String> notStartExecutors = Collections.emptyList();
@SuppressWarnings("unused")
@@ -66,13 +63,10 @@ public class ExecutorCommand extends AbstractServerCommand {
this.startExecutorService.applyOptions(startExecutors, notStartExecutors);
super.call();
this.shutdownHook(() -> KestraContext.getContext().shutdown());
ExecutorInterface executorService = applicationContext.getBean(ExecutorInterface.class);
executorService.run();
log.info("Executor started");
Await.until(() -> !this.applicationContext.isRunning());
return 0;

View File

@@ -1,22 +1,19 @@
package io.kestra.cli.commands.servers;
import com.google.common.collect.ImmutableMap;
import io.kestra.core.contexts.KestraContext;
import io.kestra.core.models.ServerType;
import io.kestra.core.runners.IndexerInterface;
import io.kestra.core.utils.Await;
import io.micronaut.context.ApplicationContext;
import jakarta.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
import java.util.Map;
@CommandLine.Command(
name = "indexer",
description = "start an indexer"
description = "Start the Kestra indexer"
)
@Slf4j
public class IndexerCommand extends AbstractServerCommand {
@Inject
private ApplicationContext applicationContext;
@@ -31,13 +28,10 @@ public class IndexerCommand extends AbstractServerCommand {
@Override
public Integer call() throws Exception {
super.call();
this.shutdownHook(() -> KestraContext.getContext().shutdown());
IndexerInterface indexer = applicationContext.getBean(IndexerInterface.class);
indexer.run();
log.info("Indexer started");
Await.until(() -> !this.applicationContext.isRunning());
return 0;

View File

@@ -12,7 +12,7 @@ import java.util.Map;
@CommandLine.Command(
name = "local",
description = "start a local server"
description = "Start the local development server"
)
public class LocalCommand extends StandAloneCommand {
// @FIXME: Keep it for bug in micronaut that need to have inject on top level command to inject on abstract classe

View File

@@ -1,7 +1,6 @@
package io.kestra.cli.commands.servers;
import com.google.common.collect.ImmutableMap;
import io.kestra.core.contexts.KestraContext;
import io.kestra.core.models.ServerType;
import io.kestra.core.schedulers.AbstractScheduler;
import io.kestra.core.utils.Await;
@@ -14,7 +13,7 @@ import java.util.Map;
@CommandLine.Command(
name = "scheduler",
description = "start an scheduler"
description = "Start the Kestra scheduler"
)
@Slf4j
public class SchedulerCommand extends AbstractServerCommand {
@@ -31,12 +30,10 @@ public class SchedulerCommand extends AbstractServerCommand {
@Override
public Integer call() throws Exception {
super.call();
this.shutdownHook(() -> KestraContext.getContext().shutdown());
AbstractScheduler scheduler = applicationContext.getBean(AbstractScheduler.class);
scheduler.run();
log.info("Scheduler started");
Await.until(() -> !this.applicationContext.isRunning());
return 0;

View File

@@ -9,7 +9,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "server",
description = "handle servers",
description = "Manage servers",
mixinStandardHelpOptions = true,
subcommands = {
ExecutorCommand.class,

View File

@@ -12,7 +12,6 @@ import io.kestra.core.utils.Await;
import io.micronaut.context.ApplicationContext;
import jakarta.annotation.Nullable;
import jakarta.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
import java.io.File;
@@ -23,9 +22,8 @@ import java.util.Map;
@CommandLine.Command(
name = "standalone",
description = "start a standalone server"
description = "Start the standalone all-in-one server"
)
@Slf4j
public class StandAloneCommand extends AbstractServerCommand {
@CommandLine.Spec
CommandLine.Model.CommandSpec spec;
@@ -46,7 +44,7 @@ public class StandAloneCommand extends AbstractServerCommand {
@CommandLine.Option(names = {"-f", "--flow-path"}, description = "the flow path containing flow to inject at startup (when running with a memory flow repository)")
private File flowPath;
@CommandLine.Option(names = {"--worker-thread"}, description = "the number of worker threads, defaults to two times the number of available processors. Set it to 0 to avoid starting a worker.")
@CommandLine.Option(names = {"--worker-thread"}, description = "the number of worker threads, defaults to four times the number of available processors. Set it to 0 to avoid starting a worker.")
private int workerThread = defaultWorkerThread();
@CommandLine.Option(names = {"--skip-executions"}, split=",", description = "a list of execution identifiers to skip, separated by a coma; for troubleshooting purpose only")
@@ -91,16 +89,16 @@ public class StandAloneCommand extends AbstractServerCommand {
this.skipExecutionService.setSkipFlows(skipFlows);
this.skipExecutionService.setSkipNamespaces(skipNamespaces);
this.skipExecutionService.setSkipTenants(skipTenants);
this.startExecutorService.applyOptions(startExecutors, notStartExecutors);
KestraContext.getContext().injectWorkerConfigs(workerThread, null);
super.call();
this.shutdownHook(() -> KestraContext.getContext().shutdown());
if (flowPath != null) {
try {
LocalFlowRepositoryLoader localFlowRepositoryLoader = applicationContext.getBean(LocalFlowRepositoryLoader.class);
localFlowRepositoryLoader.load(this.flowPath);
localFlowRepositoryLoader.load(null, this.flowPath);
} catch (IOException e) {
throw new CommandLine.ParameterException(this.spec.commandLine(), "Invalid flow path", e);
}
@@ -124,8 +122,6 @@ public class StandAloneCommand extends AbstractServerCommand {
fileWatcher.startListeningFromConfig();
}
this.shutdownHook(standAloneRunner::close);
Await.until(() -> !this.applicationContext.isRunning());
return 0;

View File

@@ -1,9 +1,7 @@
package io.kestra.cli.commands.servers;
import com.google.common.collect.ImmutableMap;
import io.kestra.core.contexts.KestraContext;
import io.kestra.core.models.ServerType;
import io.kestra.core.runners.ExecutorInterface;
import io.kestra.core.runners.IndexerInterface;
import io.kestra.core.utils.Await;
import io.kestra.core.utils.ExecutorsUtils;
@@ -18,7 +16,7 @@ import java.util.concurrent.ExecutorService;
@CommandLine.Command(
name = "webserver",
description = "start the webserver"
description = "Start the Kestra webserver"
)
@Slf4j
public class WebServerCommand extends AbstractServerCommand {
@@ -57,20 +55,11 @@ public class WebServerCommand extends AbstractServerCommand {
log.info("Starting an embedded indexer, this can be disabled by using `--no-indexer`.");
poolExecutor = executorsUtils.cachedThreadPool("webserver-indexer");
poolExecutor.execute(applicationContext.getBean(IndexerInterface.class));
shutdownHook(false, () -> poolExecutor.shutdown());
}
log.info("Webserver started");
this.shutdownHook(() -> {
this.close();
KestraContext.getContext().shutdown();
});
Await.until(() -> !this.applicationContext.isRunning());
return 0;
}
private void close() {
if (this.poolExecutor != null) {
this.poolExecutor.shutdown();
}
}
}

View File

@@ -7,7 +7,6 @@ import io.kestra.core.runners.Worker;
import io.kestra.core.utils.Await;
import io.micronaut.context.ApplicationContext;
import jakarta.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
import picocli.CommandLine.Option;
@@ -16,18 +15,17 @@ import java.util.UUID;
@CommandLine.Command(
name = "worker",
description = "start a worker"
description = "Start the Kestra worker"
)
@Slf4j
public class WorkerCommand extends AbstractServerCommand {
@Inject
private ApplicationContext applicationContext;
@Option(names = {"-t", "--thread"}, description = "the max number of worker threads, defaults to two times the number of available processors")
@Option(names = {"-t", "--thread"}, description = "The max number of worker threads, defaults to four times the number of available processors")
private int thread = defaultWorkerThread();
@Option(names = {"-g", "--worker-group"}, description = "the worker group key, must match the regex [a-zA-Z0-9_-]+ (EE only)")
@Option(names = {"-g", "--worker-group"}, description = "The worker group key, must match the regex [a-zA-Z0-9_-]+ (EE only)")
private String workerGroupKey = null;
@SuppressWarnings("unused")
@@ -39,8 +37,11 @@ public class WorkerCommand extends AbstractServerCommand {
@Override
public Integer call() throws Exception {
KestraContext.getContext().injectWorkerConfigs(thread, workerGroupKey);
super.call();
this.shutdownHook(() -> KestraContext.getContext().shutdown());
if (this.workerGroupKey != null && !this.workerGroupKey.matches("[a-zA-Z0-9_-]+")) {
throw new IllegalArgumentException("The --worker-group option must match the [a-zA-Z0-9_-]+ pattern");
}
@@ -52,13 +53,6 @@ public class WorkerCommand extends AbstractServerCommand {
worker.run();
if (this.workerGroupKey != null) {
log.info("Worker started with {} thread(s) in group '{}'", this.thread, this.workerGroupKey);
}
else {
log.info("Worker started with {} thread(s)", this.thread);
}
Await.until(() -> !this.applicationContext.isRunning());
return 0;

View File

@@ -2,6 +2,7 @@ package io.kestra.cli.commands.sys;
import io.kestra.cli.AbstractCommand;
import io.kestra.core.models.flows.Flow;
import io.kestra.core.models.flows.GenericFlow;
import io.kestra.core.repositories.FlowRepositoryInterface;
import io.micronaut.context.ApplicationContext;
import jakarta.inject.Inject;
@@ -9,10 +10,11 @@ import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
import java.util.List;
import java.util.Objects;
@CommandLine.Command(
name = "reindex",
description = "reindex all records of a type: read them from the database then update them",
description = "Reindex all records of a type: read them from the database then update them",
mixinStandardHelpOptions = true
)
@Slf4j
@@ -33,8 +35,8 @@ public class ReindexCommand extends AbstractCommand {
List<Flow> allFlow = flowRepository.findAllForAllTenants();
allFlow.stream()
.map(flow -> flowRepository.findByIdWithSource(flow.getTenantId(), flow.getNamespace(), flow.getId()).orElse(null))
.filter(flow -> flow != null)
.forEach(flow -> flowRepository.update(flow.toFlow(), flow.toFlow(), flow.getSource(), flow.toFlow()));
.filter(Objects::nonNull)
.forEach(flow -> flowRepository.update(GenericFlow.of(flow), flow));
stdOut("Successfully reindex " + allFlow.size() + " flow(s).");
}

View File

@@ -10,7 +10,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "sys",
description = "handle systems maintenance",
description = "Manage system maintenance mode",
mixinStandardHelpOptions = true,
subcommands = {
ReindexCommand.class,

View File

@@ -1,6 +1,5 @@
package io.kestra.cli.commands.sys.database;
import ch.qos.logback.classic.Level;
import io.kestra.cli.AbstractCommand;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;

View File

@@ -11,7 +11,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "template",
description = "handle templates",
description = "Manage templates",
mixinStandardHelpOptions = true,
subcommands = {
TemplateNamespaceCommand.class,

View File

@@ -19,7 +19,7 @@ import java.nio.file.Path;
@CommandLine.Command(
name = "export",
description = "export templates to a zip file",
description = "Export templates to a ZIP file",
mixinStandardHelpOptions = true
)
@Slf4j
@@ -31,10 +31,10 @@ public class TemplateExportCommand extends AbstractApiCommand {
@Inject
private ApplicationContext applicationContext;
@CommandLine.Option(names = {"--namespace"}, description = "the namespace of templates to export")
@CommandLine.Option(names = {"--namespace"}, description = "The namespace of templates to export")
public String namespace;
@CommandLine.Parameters(index = "0", description = "the directory to export the file to")
@CommandLine.Parameters(index = "0", description = "The directory to export the file to")
public Path directory;
@Override

View File

@@ -4,7 +4,6 @@ import io.kestra.cli.AbstractValidateCommand;
import io.kestra.core.models.templates.Template;
import io.kestra.core.models.templates.TemplateEnabled;
import io.kestra.core.models.validations.ModelValidator;
import io.kestra.core.serializers.YamlParser;
import jakarta.inject.Inject;
import picocli.CommandLine;
@@ -12,12 +11,10 @@ import java.util.Collections;
@CommandLine.Command(
name = "validate",
description = "validate a template"
description = "Validate a template"
)
@TemplateEnabled
public class TemplateValidateCommand extends AbstractValidateCommand {
@Inject
private YamlParser yamlParser;
@Inject
private ModelValidator modelValidator;
@@ -26,7 +23,6 @@ public class TemplateValidateCommand extends AbstractValidateCommand {
public Integer call() throws Exception {
return this.call(
Template.class,
yamlParser,
modelValidator,
(Object object) -> {
Template template = (Template) object;

View File

@@ -10,7 +10,7 @@ import picocli.CommandLine;
@CommandLine.Command(
name = "namespace",
description = "handle namespace templates",
description = "Manage namespace templates",
mixinStandardHelpOptions = true,
subcommands = {
TemplateNamespaceUpdateCommand.class,

View File

@@ -10,7 +10,6 @@ import io.micronaut.http.HttpRequest;
import io.micronaut.http.MutableHttpRequest;
import io.micronaut.http.client.exceptions.HttpClientResponseException;
import io.micronaut.http.client.netty.DefaultHttpClient;
import jakarta.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import picocli.CommandLine;
@@ -21,14 +20,12 @@ import jakarta.validation.ConstraintViolationException;
@CommandLine.Command(
name = "update",
description = "handle namespace templates",
description = "Update namespace templates",
mixinStandardHelpOptions = true
)
@Slf4j
@TemplateEnabled
public class TemplateNamespaceUpdateCommand extends AbstractServiceNamespaceUpdateCommand {
@Inject
public YamlParser yamlParser;
@Override
public Integer call() throws Exception {
@@ -38,7 +35,7 @@ public class TemplateNamespaceUpdateCommand extends AbstractServiceNamespaceUpda
List<Template> templates = files
.filter(Files::isRegularFile)
.filter(YamlParser::isValidExtension)
.map(path -> yamlParser.parse(path.toFile(), Template.class))
.map(path -> YamlParser.parse(path.toFile(), Template.class))
.toList();
if (templates.isEmpty()) {

View File

@@ -1,153 +0,0 @@
package io.kestra.cli.plugins;
import com.google.common.collect.ImmutableList;
import io.micronaut.context.annotation.Value;
import io.micronaut.core.annotation.Nullable;
import jakarta.inject.Inject;
import jakarta.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
import org.eclipse.aether.impl.DefaultServiceLocator;
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.resolution.*;
import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
import org.eclipse.aether.spi.connector.transport.TransporterFactory;
import org.eclipse.aether.transport.file.FileTransporterFactory;
import org.eclipse.aether.transport.http.HttpTransporterFactory;
import org.eclipse.aether.util.repository.AuthenticationBuilder;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Singleton
@Slf4j
public class PluginDownloader {
private final List<RepositoryConfig> repositoryConfigs;
private final RepositorySystem system;
private final RepositorySystemSession session;
@Inject
public PluginDownloader(
List<RepositoryConfig> repositoryConfigs,
@Nullable @Value("${kestra.plugins.local-repository-path}") String localRepositoryPath
) {
this.repositoryConfigs = repositoryConfigs;
this.system = repositorySystem();
this.session = repositorySystemSession(system, localRepositoryPath);
}
public void addRepository(RepositoryConfig repositoryConfig) {
this.repositoryConfigs.add(repositoryConfig);
}
public List<URL> resolve(List<String> dependencies) throws MalformedURLException, ArtifactResolutionException, VersionRangeResolutionException {
List<RemoteRepository> repositories = remoteRepositories();
List<ArtifactResult> artifactResults = resolveArtifacts(repositories, dependencies);
List<URL> localUrls = resolveUrls(artifactResults);
log.debug("Resolved Plugin {} with {}", dependencies, localUrls);
return localUrls;
}
private List<RemoteRepository> remoteRepositories() {
return repositoryConfigs
.stream()
.map(repositoryConfig -> {
var build = new RemoteRepository.Builder(
repositoryConfig.getId(),
"default",
repositoryConfig.getUrl()
);
if (repositoryConfig.getBasicAuth() != null) {
var authenticationBuilder = new AuthenticationBuilder();
authenticationBuilder.addUsername(repositoryConfig.getBasicAuth().getUsername());
authenticationBuilder.addPassword(repositoryConfig.getBasicAuth().getPassword());
build.setAuthentication(authenticationBuilder.build());
}
return build.build();
})
.toList();
}
private static RepositorySystem repositorySystem() {
DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator();
locator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class);
locator.addService(TransporterFactory.class, FileTransporterFactory.class);
locator.addService(TransporterFactory.class, HttpTransporterFactory.class);
return locator.getService(RepositorySystem.class);
}
private RepositorySystemSession repositorySystemSession(RepositorySystem system, String localRepositoryPath) {
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
if (localRepositoryPath == null) {
try {
final String tempDirectory = Files.createTempDirectory(this.getClass().getSimpleName().toLowerCase())
.toAbsolutePath()
.toString();
localRepositoryPath = tempDirectory;
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
try {
FileUtils.deleteDirectory(new File(tempDirectory));
} catch (IOException e) {
throw new RuntimeException(e);
}
}));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
LocalRepository localRepo = new LocalRepository(localRepositoryPath);
session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo));
return session;
}
private List<ArtifactResult> resolveArtifacts(List<RemoteRepository> repositories, List<String> dependencies) throws ArtifactResolutionException, VersionRangeResolutionException {
List<ArtifactResult> results = new ArrayList<>(dependencies.size());
for (String dependency: dependencies) {
var artifact = new DefaultArtifact(dependency);
var version = system.resolveVersionRange(session, new VersionRangeRequest(artifact, repositories, null));
var artifactRequest = new ArtifactRequest(
new DefaultArtifact(artifact.getGroupId(), artifact.getArtifactId(), "jar", version.getHighestVersion().toString()),
repositories,
null
);
var artifactResult = system.resolveArtifact(session, artifactRequest);
results.add(artifactResult);
}
return results;
}
private List<URL> resolveUrls(List<ArtifactResult> artifactResults) throws MalformedURLException {
ImmutableList.Builder<URL> urls = ImmutableList.builder();
for (ArtifactResult artifactResult : artifactResults) {
URL url;
url = artifactResult.getArtifact().getFile().toPath().toUri().toURL();
urls.add(url);
}
return urls.build();
}
}

View File

@@ -1,30 +0,0 @@
package io.kestra.cli.plugins;
import io.micronaut.context.annotation.EachProperty;
import io.micronaut.context.annotation.Parameter;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
@EachProperty("kestra.plugins.repositories")
@Getter
@AllArgsConstructor
@Builder
public class RepositoryConfig {
String id;
String url;
BasicAuth basicAuth;
@Getter
@AllArgsConstructor
public static class BasicAuth {
private String username;
private String password;
}
public RepositoryConfig(@Parameter String id) {
this.id = id;
}
}

View File

@@ -1,21 +1,23 @@
package io.kestra.cli.services;
import io.kestra.core.models.flows.Flow;
import io.kestra.core.exceptions.FlowProcessingException;
import io.kestra.core.models.flows.FlowInterface;
import io.kestra.core.models.flows.FlowWithPath;
import io.kestra.core.models.flows.FlowWithSource;
import io.kestra.core.models.flows.GenericFlow;
import io.kestra.core.models.validations.ModelValidator;
import io.kestra.core.repositories.FlowRepositoryInterface;
import io.kestra.core.serializers.YamlParser;
import io.kestra.core.services.FlowListenersInterface;
import io.kestra.core.services.PluginDefaultService;
import io.micronaut.context.annotation.Requires;
import io.micronaut.context.annotation.Value;
import io.micronaut.scheduling.io.watch.FileWatchConfiguration;
import jakarta.inject.Inject;
import jakarta.annotation.Nullable;
import jakarta.inject.Singleton;
import jakarta.validation.ConstraintViolationException;
import lombok.extern.slf4j.Slf4j;
import javax.annotation.Nullable;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.*;
@@ -37,7 +39,7 @@ public class FileChangedEventListener {
private FlowRepositoryInterface flowRepositoryInterface;
@Inject
private YamlParser yamlParser;
private PluginDefaultService pluginDefaultService;
@Inject
private ModelValidator modelValidator;
@@ -55,7 +57,6 @@ public class FileChangedEventListener {
private boolean isStarted = false;
@Inject
public FileChangedEventListener(@Nullable FileWatchConfiguration fileWatchConfiguration, @Nullable WatchService watchService) {
this.fileWatchConfiguration = fileWatchConfiguration;
@@ -72,7 +73,7 @@ public class FileChangedEventListener {
// Init existing flows not already in files
flowListeners.listen(flows -> {
if (!isStarted) {
for (FlowWithSource flow : flows) {
for (FlowInterface flow : flows) {
if (this.flows.stream().noneMatch(flowWithPath -> flowWithPath.uidWithoutRevision().equals(flow.uidWithoutRevision()))) {
flowToFile(flow, this.buildPath(flow));
this.flows.add(FlowWithPath.of(flow, this.buildPath(flow).toString()));
@@ -107,7 +108,6 @@ public class FileChangedEventListener {
} else {
log.info("File watching is disabled.");
}
}
public void startListening(List<Path> paths) throws IOException, InterruptedException {
@@ -118,60 +118,64 @@ public class FileChangedEventListener {
WatchKey key;
while ((key = watchService.take()) != null) {
for (WatchEvent<?> watchEvent : key.pollEvents()) {
WatchEvent.Kind<?> kind = watchEvent.kind();
Path entry = (Path) watchEvent.context();
try {
WatchEvent.Kind<?> kind = watchEvent.kind();
Path entry = (Path) watchEvent.context();
if (entry.toString().endsWith(".yml") || entry.toString().endsWith(".yaml")) {
if (entry.toString().endsWith(".yml") || entry.toString().endsWith(".yaml")) {
if (kind == StandardWatchEventKinds.ENTRY_CREATE || kind == StandardWatchEventKinds.ENTRY_MODIFY) {
if (kind == StandardWatchEventKinds.ENTRY_CREATE || kind == StandardWatchEventKinds.ENTRY_MODIFY) {
Path filePath = ((Path) key.watchable()).resolve(entry);
if (Files.isDirectory(filePath)) {
loadFlowsFromFolder(filePath);
} else {
Path filePath = ((Path) key.watchable()).resolve(entry);
if (Files.isDirectory(filePath)) {
loadFlowsFromFolder(filePath);
} else {
try {
String content = Files.readString(filePath, Charset.defaultCharset());
try {
String content = Files.readString(filePath, Charset.defaultCharset());
Optional<Flow> flow = parseFlow(content, entry);
if (flow.isPresent()) {
if (kind == StandardWatchEventKinds.ENTRY_MODIFY) {
// Check if we already have a file with the given path
if (flows.stream().anyMatch(flowWithPath -> flowWithPath.getPath().equals(filePath.toString()))) {
Optional<FlowWithPath> previous = flows.stream().filter(flowWithPath -> flowWithPath.getPath().equals(filePath.toString())).findFirst();
// Check if Flow from file has id/namespace updated
if (previous.isPresent() && !previous.get().uidWithoutRevision().equals(flow.get().uidWithoutRevision())) {
flows.removeIf(flowWithPath -> flowWithPath.getPath().equals(filePath.toString()));
flowFilesManager.deleteFlow(previous.get().getTenantId(), previous.get().getNamespace(), previous.get().getId());
Optional<FlowWithSource> flow = parseFlow(content, entry);
if (flow.isPresent()) {
if (kind == StandardWatchEventKinds.ENTRY_MODIFY) {
// Check if we already have a file with the given path
if (flows.stream().anyMatch(flowWithPath -> flowWithPath.getPath().equals(filePath.toString()))) {
Optional<FlowWithPath> previous = flows.stream().filter(flowWithPath -> flowWithPath.getPath().equals(filePath.toString())).findFirst();
// Check if Flow from file has id/namespace updated
if (previous.isPresent() && !previous.get().uidWithoutRevision().equals(flow.get().uidWithoutRevision())) {
flows.removeIf(flowWithPath -> flowWithPath.getPath().equals(filePath.toString()));
flowFilesManager.deleteFlow(previous.get().getTenantId(), previous.get().getNamespace(), previous.get().getId());
flows.add(FlowWithPath.of(flow.get(), filePath.toString()));
}
} else {
flows.add(FlowWithPath.of(flow.get(), filePath.toString()));
}
} else {
flows.add(FlowWithPath.of(flow.get(), filePath.toString()));
}
} else {
flows.add(FlowWithPath.of(flow.get(), filePath.toString()));
flowFilesManager.createOrUpdateFlow(GenericFlow.fromYaml(tenantId, content));
log.info("Flow {} from file {} has been created or modified", flow.get().getId(), entry);
}
flowFilesManager.createOrUpdateFlow(flow.get(), content);
log.info("Flow {} from file {} has been created or modified", flow.get().getId(), entry);
} catch (NoSuchFileException e) {
log.error("File not found: {}", entry, e);
} catch (IOException e) {
log.error("Error reading file: {}", entry, e);
}
} catch (NoSuchFileException e) {
log.error("File not found: {}", entry, e);
} catch (IOException e) {
log.error("Error reading file: {}", entry, e);
}
} else {
Path filePath = ((Path) key.watchable()).resolve(entry);
flows.stream()
.filter(flow -> flow.getPath().equals(filePath.toString()))
.findFirst()
.ifPresent(flowWithPath -> {
flowFilesManager.deleteFlow(flowWithPath.getTenantId(), flowWithPath.getNamespace(), flowWithPath.getId());
this.flows.removeIf(fwp -> fwp.uidWithoutRevision().equals(flowWithPath.uidWithoutRevision()));
});
}
} else {
Path filePath = ((Path) key.watchable()).resolve(entry);
flows.stream()
.filter(flow -> flow.getPath().equals(filePath.toString()))
.findFirst()
.ifPresent(flowWithPath -> {
flowFilesManager.deleteFlow(flowWithPath.getTenantId(), flowWithPath.getNamespace(), flowWithPath.getId());
this.flows.removeIf(fwp -> fwp.uidWithoutRevision().equals(flowWithPath.uidWithoutRevision()));
});
}
} catch (Exception e) {
log.error("Unexpected error while watching flows", e);
}
}
key.reset();
@@ -200,11 +204,11 @@ public class FileChangedEventListener {
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if (file.toString().endsWith(".yml") || file.toString().endsWith(".yaml")) {
String content = Files.readString(file, Charset.defaultCharset());
Optional<Flow> flow = parseFlow(content, file);
Optional<FlowWithSource> flow = parseFlow(content, file);
if (flow.isPresent() && flows.stream().noneMatch(flowWithPath -> flowWithPath.uidWithoutRevision().equals(flow.get().uidWithoutRevision()))) {
flows.add(FlowWithPath.of(flow.get(), file.toString()));
flowFilesManager.createOrUpdateFlow(flow.get(), content);
flowFilesManager.createOrUpdateFlow(GenericFlow.fromYaml(tenantId, content));
}
}
return FileVisitResult.CONTINUE;
@@ -216,26 +220,25 @@ public class FileChangedEventListener {
}
}
private void flowToFile(FlowWithSource flow, Path path) {
private void flowToFile(FlowInterface flow, Path path) {
Path defaultPath = path != null ? path : this.buildPath(flow);
try {
Files.writeString(defaultPath, flow.getSource());
Files.writeString(defaultPath, flow.source());
log.info("Flow {} has been written to file {}", flow.getId(), defaultPath);
} catch (IOException e) {
log.error("Error writing file: {}", defaultPath, e);
}
}
private Optional<Flow> parseFlow(String content, Path entry) {
private Optional<FlowWithSource> parseFlow(String content, Path entry) {
try {
Flow flow = yamlParser.parse(content, Flow.class);
FlowWithSource flow = pluginDefaultService.parseFlowWithAllDefaults(tenantId, content, false);
modelValidator.validate(flow);
return Optional.of(flow);
} catch (ConstraintViolationException e) {
} catch (ConstraintViolationException | FlowProcessingException e) {
log.warn("Error while parsing flow: {}", entry, e);
}
return Optional.empty();
}
@@ -251,7 +254,7 @@ public class FileChangedEventListener {
}
}
private Path buildPath(Flow flow) {
private Path buildPath(FlowInterface flow) {
return fileWatchConfiguration.getPaths().getFirst().resolve(flow.uidWithoutRevision() + ".yml");
}
}

View File

@@ -1,11 +1,11 @@
package io.kestra.cli.services;
import io.kestra.core.models.flows.Flow;
import io.kestra.core.models.flows.FlowWithSource;
import io.kestra.core.models.flows.GenericFlow;
public interface FlowFilesManager {
FlowWithSource createOrUpdateFlow(Flow flow, String content);
FlowWithSource createOrUpdateFlow(GenericFlow flow);
void deleteFlow(FlowWithSource toDelete);

View File

@@ -1,34 +1,34 @@
package io.kestra.cli.services;
import io.kestra.core.models.flows.Flow;
import io.kestra.core.models.flows.FlowWithSource;
import io.kestra.core.models.flows.GenericFlow;
import io.kestra.core.repositories.FlowRepositoryInterface;
import io.micronaut.context.annotation.Requires;
import lombok.extern.slf4j.Slf4j;
@Requires(property = "micronaut.io.watch.enabled", value = "true")
@Slf4j
public class LocalFlowFileWatcher implements FlowFilesManager {
private FlowRepositoryInterface flowRepositoryInterface;
private final FlowRepositoryInterface flowRepository;
public LocalFlowFileWatcher(FlowRepositoryInterface flowRepositoryInterface) {
this.flowRepositoryInterface = flowRepositoryInterface;
public LocalFlowFileWatcher(FlowRepositoryInterface flowRepository) {
this.flowRepository = flowRepository;
}
public FlowWithSource createOrUpdateFlow(Flow flow, String content) {
return flowRepositoryInterface.findById(null, flow.getNamespace(), flow.getId())
.map(previous -> flowRepositoryInterface.update(flow, previous, content, flow))
.orElseGet(() -> flowRepositoryInterface.create(flow, content, flow));
@Override
public FlowWithSource createOrUpdateFlow(final GenericFlow flow) {
return flowRepository.findById(flow.getTenantId(), flow.getNamespace(), flow.getId())
.map(previous -> flowRepository.update(flow, previous))
.orElseGet(() -> flowRepository.create(flow));
}
@Override
public void deleteFlow(FlowWithSource toDelete) {
flowRepositoryInterface.findByIdWithSource(toDelete.getTenantId(), toDelete.getNamespace(), toDelete.getId()).ifPresent(flowRepositoryInterface::delete);
log.error("Flow {} has been deleted", toDelete.getId());
flowRepository.findByIdWithSource(toDelete.getTenantId(), toDelete.getNamespace(), toDelete.getId()).ifPresent(flowRepository::delete);
log.info("Flow {} has been deleted", toDelete.getId());
}
@Override
public void deleteFlow(String tenantId, String namespace, String id) {
flowRepositoryInterface.findByIdWithSource(tenantId, namespace, id).ifPresent(flowRepositoryInterface::delete);
log.error("Flow {} has been deleted", id);
flowRepository.findByIdWithSource(tenantId, namespace, id).ifPresent(flowRepository::delete);
log.info("Flow {} has been deleted", id);
}
}

View File

@@ -1,6 +1,9 @@
micronaut:
application:
name: kestra
# Disable Micronaut Open Telemetry
otel:
enabled: false
router:
static-resources:
swagger:
@@ -12,6 +15,9 @@ micronaut:
static:
paths: classpath:static
mapping: /static/**
root:
paths: classpath:root
mapping: /**
server:
max-request-size: 10GB
multipart:
@@ -23,11 +29,11 @@ micronaut:
netty:
max-chunk-size: 10MB
max-header-size: 32768 # increased from the default of 8k
responses:
file:
cache-seconds: 86400
cache-control:
public: true
responses:
file:
cache-seconds: 86400
cache-control:
public: true
# Access log configuration, see https://docs.micronaut.io/latest/guide/index.html#accessLogger
access-logger:
@@ -37,6 +43,7 @@ micronaut:
exclusions:
- /ui/.+
- /health
- /health/.+
- /prometheus
http-version: HTTP_1_1
caches:
@@ -70,6 +77,13 @@ micronaut:
type: scheduled
core-pool-size: 1
# Disable OpenTelemetry metrics by default, users that need it must enable it and configure the collector URL.
metrics:
export:
otlp:
enabled: false
# url: http://localhost:4318/v1/metrics
jackson:
serialization:
writeDatesAsTimestamps: false
@@ -127,13 +141,18 @@ kestra:
jdbc:
queues:
min-poll-interval: 25ms
max-poll-interval: 1000ms
poll-switch-interval: 5s
max-poll-interval: 500ms
poll-switch-interval: 60s
cleaner:
initial-delay: 1h
fixed-delay: 1h
retention: 7d
types:
- type : io.kestra.core.models.executions.LogEntry
retention: 1h
- type: io.kestra.core.models.executions.MetricEntry
retention: 1h
plugins:
repositories:
@@ -152,13 +171,16 @@ kestra:
values:
recoverMissedSchedules: ALL
variables:
env-vars-prefix: KESTRA_
env-vars-prefix: ENV_
cache-enabled: true
cache-size: 1000
metrics:
prefix: kestra
traces:
root: DISABLED
server:
basic-auth:
enabled: false
@@ -176,13 +198,18 @@ kestra:
liveness:
enabled: true
# The expected time between liveness probe.
interval: 5s
interval: 10s
# The timeout used to detect service failures.
timeout: 45s
timeout: 1m
# The time to wait before executing a liveness probe.
initialDelay: 45s
initialDelay: 1m
# The expected time between service heartbeats.
heartbeatInterval: 3s
service:
purge:
initial-delay: 1h
fixed-delay: 1d
retention: 30d
anonymous-usage-report:
enabled: true
uri: https://api.kestra.io/v1/reports/usages
@@ -193,3 +220,12 @@ kestra:
prefixes:
- system.
- internal.
otel:
exclusions:
- /ping
- /metrics
- /health
- /env
- /prometheus
propagators: tracecontext, baggage

View File

@@ -13,8 +13,7 @@ import picocli.CommandLine;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
class AppTest {
@@ -26,7 +25,7 @@ class AppTest {
try (ApplicationContext ctx = ApplicationContext.run(Environment.CLI, Environment.TEST)) {
PicocliRunner.call(App.class, ctx, "--help");
assertThat(out.toString(), containsString("kestra"));
assertThat(out.toString()).contains("kestra");
}
}
@@ -42,7 +41,23 @@ class AppTest {
new CommandLine(App.class, new MicronautFactory(ctx)).execute(args);
assertTrue(ctx.getProperty("kestra.server-type", ServerType.class).isEmpty());
assertThat(out.toString(), startsWith("Usage: kestra server " + serverType));
assertThat(out.toString()).startsWith("Usage: kestra server " + serverType);
}
}
@Test
void missingRequiredParamsPrintHelpInsteadOfException() {
final ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setErr(new PrintStream(out));
final String[] argsWithMissingParams = new String[]{"flow", "namespace", "update"};
try (ApplicationContext ctx = App.applicationContext(App.class, argsWithMissingParams)) {
new CommandLine(App.class, new MicronautFactory(ctx)).execute(argsWithMissingParams);
assertThat(out.toString()).startsWith("Missing required parameters: ");
assertThat(out.toString()).contains("Usage: kestra flow namespace update ");
assertThat(out.toString()).doesNotContain("MissingParameterException: ");
}
}
}

View File

@@ -8,8 +8,7 @@ import org.junit.jupiter.api.Test;
import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.assertj.core.api.Assertions.assertThat;
class ServerCommandValidatorTest {
@@ -40,8 +39,8 @@ class ServerCommandValidatorTest {
.start()
);
final Throwable rootException = getRootException(exception);
assertThat(rootException.getClass(), is(ServerCommandValidator.ServerCommandException.class));
assertThat(rootException.getMessage(), is("Incomplete server configuration - missing required properties"));
assertThat(rootException.getClass()).isEqualTo(ServerCommandValidator.ServerCommandException.class);
assertThat(rootException.getMessage()).isEqualTo("Incomplete server configuration - missing required properties");
}
private Throwable getRootException(Throwable exception) {

View File

@@ -4,12 +4,14 @@ import io.micronaut.configuration.picocli.PicocliRunner;
import io.micronaut.context.ApplicationContext;
import io.micronaut.context.env.Environment;
import org.junit.jupiter.api.Test;
import org.yaml.snakeyaml.Yaml;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.StringContains.containsString;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.AssertionsForClassTypes.catchThrowable;
class ConfigPropertiesCommandTest {
@Test
@@ -20,8 +22,52 @@ class ConfigPropertiesCommandTest {
try (ApplicationContext ctx = ApplicationContext.run(Environment.CLI, Environment.TEST)) {
PicocliRunner.call(ConfigPropertiesCommand.class, ctx);
assertThat(out.toString(), containsString("activeEnvironments:"));
assertThat(out.toString(), containsString("- test"));
assertThat(out.toString()).contains("activeEnvironments:");
assertThat(out.toString()).contains("- test");
}
}
@Test
void shouldOutputCustomEnvironment() {
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out));
try (ApplicationContext ctx = ApplicationContext.run(Environment.CLI, "custom-env")) {
PicocliRunner.call(ConfigPropertiesCommand.class, ctx);
assertThat(out.toString()).contains("activeEnvironments:");
assertThat(out.toString()).contains("- custom-env");
}
}
@Test
void shouldReturnZeroOnSuccess() throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out));
try (ApplicationContext ctx = ApplicationContext.run(Environment.CLI, Environment.TEST)) {
ConfigPropertiesCommand cmd = ctx.createBean(ConfigPropertiesCommand.class);
int result = cmd.call();
assertThat(result).isZero();
}
}
@Test
void shouldOutputValidYaml() {
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setOut(new PrintStream(out));
try (ApplicationContext ctx = ApplicationContext.run(Environment.CLI, Environment.TEST)) {
PicocliRunner.call(ConfigPropertiesCommand.class, ctx);
String output = out.toString();
Yaml yaml = new Yaml();
Throwable thrown = catchThrowable(() -> {
Map<?, ?> parsed = yaml.load(output);
assertThat(parsed).isInstanceOf(Map.class);
});
assertThat(thrown).isNull();
}
}
}

View File

@@ -5,17 +5,16 @@ import io.micronaut.context.ApplicationContext;
import io.micronaut.context.env.Environment;
import io.micronaut.runtime.server.EmbeddedServer;
import org.junit.jupiter.api.Test;
import org.junitpioneer.jupiter.RetryingTest;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.net.URL;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.StringContains.containsString;
import static org.assertj.core.api.Assertions.assertThat;
class FlowCreateOrUpdateCommandTest {
@Test
@RetryingTest(5) // flaky on CI but cannot be reproduced even with 100 repetitions
void runWithDelete() {
URL directory = FlowCreateOrUpdateCommandTest.class.getClassLoader().getResource("flows");
ByteArrayOutputStream out = new ByteArrayOutputStream();
@@ -37,7 +36,7 @@ class FlowCreateOrUpdateCommandTest {
};
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(out.toString(), containsString("4 flow(s)"));
assertThat(out.toString()).contains("4 flow(s)");
out.reset();
args = new String[]{
@@ -52,7 +51,7 @@ class FlowCreateOrUpdateCommandTest {
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
// 2 delete + 1 update
assertThat(out.toString(), containsString("4 flow(s)"));
assertThat(out.toString()).contains("4 flow(s)");
}
}
@@ -79,7 +78,7 @@ class FlowCreateOrUpdateCommandTest {
};
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(out.toString(), containsString("4 flow(s)"));
assertThat(out.toString()).contains("4 flow(s)");
out.reset();
// no "delete" arg should behave as no-delete
@@ -92,7 +91,7 @@ class FlowCreateOrUpdateCommandTest {
};
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(out.toString(), containsString("1 flow(s)"));
assertThat(out.toString()).contains("1 flow(s)");
out.reset();
args = new String[]{
@@ -105,7 +104,7 @@ class FlowCreateOrUpdateCommandTest {
};
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(out.toString(), containsString("1 flow(s)"));
assertThat(out.toString()).contains("1 flow(s)");
}
}
@@ -130,8 +129,8 @@ class FlowCreateOrUpdateCommandTest {
};
Integer call = PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(call, is(0));
assertThat(out.toString(), containsString("1 flow(s)"));
assertThat(call).isZero();
assertThat(out.toString()).contains("1 flow(s)");
}
}
}

View File

@@ -9,9 +9,7 @@ import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.net.URL;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.StringContains.containsString;
import static org.assertj.core.api.Assertions.assertThat;
class FlowDotCommandTest {
@Test
@@ -26,8 +24,8 @@ class FlowDotCommandTest {
};
Integer call = PicocliRunner.call(FlowDotCommand.class, ctx, args);
assertThat(call, is(0));
assertThat(out.toString(), containsString("\"root.date\"[shape=box,label=\"date\"];"));
assertThat(call).isZero();
assertThat(out.toString()).contains("\"root.date\"[shape=box];");
}
}
}

View File

@@ -7,8 +7,7 @@ import org.junit.jupiter.api.Test;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.assertj.core.api.Assertions.assertThat;
class FlowExpandCommandTest {
@SuppressWarnings("deprecation")
@@ -23,22 +22,20 @@ class FlowExpandCommandTest {
};
Integer call = PicocliRunner.call(FlowExpandCommand.class, ctx, args);
assertThat(call, is(0));
assertThat(out.toString(), is(
"id: include\n" +
"namespace: io.kestra.cli\n" +
"\n" +
"# The list of tasks\n" +
"tasks:\n" +
"- id: t1\n" +
" type: io.kestra.plugin.core.debug.Return\n" +
" format: \"Lorem ipsum dolor sit amet\"\n" +
"- id: t2\n" +
" type: io.kestra.plugin.core.debug.Return\n" +
" format: |\n" +
" Lorem ipsum dolor sit amet\n" +
" Lorem ipsum dolor sit amet\n"
));
assertThat(call).isZero();
assertThat(out.toString()).isEqualTo("id: include\n" +
"namespace: io.kestra.cli\n" +
"\n" +
"# The list of tasks\n" +
"tasks:\n" +
"- id: t1\n" +
" type: io.kestra.plugin.core.debug.Return\n" +
" format: \"Lorem ipsum dolor sit amet\"\n" +
"- id: t2\n" +
" type: io.kestra.plugin.core.debug.Return\n" +
" format: |\n" +
" Lorem ipsum dolor sit amet\n" +
" Lorem ipsum dolor sit amet\n");
}
}
}

View File

@@ -14,10 +14,7 @@ import java.io.PrintStream;
import java.net.URL;
import java.util.zip.ZipFile;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.StringContains.containsString;
import static org.assertj.core.api.Assertions.assertThat;
class FlowExportCommandTest {
@Test
@@ -32,6 +29,8 @@ class FlowExportCommandTest {
// we use the update command to add flows to extract
String[] updateArgs = {
"--plugins",
"/tmp", // pass this arg because it can cause failure
"--server",
embeddedServer.getURL().toString(),
"--user",
@@ -40,10 +39,12 @@ class FlowExportCommandTest {
directory.getPath(),
};
PicocliRunner.call(FlowNamespaceUpdateCommand.class, ctx, updateArgs);
assertThat(out.toString(), containsString("3 flow(s)"));
assertThat(out.toString()).contains("3 flow(s)");
// then we export them
String[] exportArgs = {
"--plugins",
"/tmp", // pass this arg because it can cause failure
"--server",
embeddedServer.getURL().toString(),
"--user",
@@ -54,11 +55,11 @@ class FlowExportCommandTest {
};
PicocliRunner.call(FlowExportCommand.class, ctx, exportArgs);
File file = new File("/tmp/flows.zip");
assertThat(file.exists(), is(true));
assertThat(file.exists()).isTrue();
ZipFile zipFile = new ZipFile(file);
// When launching the test in a suite, there is 4 flows but when lauching individualy there is only 3
assertThat(zipFile.stream().count(), greaterThanOrEqualTo(3L));
assertThat(zipFile.stream().count()).isGreaterThanOrEqualTo(3L);
file.delete();
}

View File

@@ -10,9 +10,7 @@ import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.net.URL;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.StringContains.containsString;
import static org.assertj.core.api.Assertions.assertThat;
class FlowUpdatesCommandTest {
@Test
@@ -28,6 +26,8 @@ class FlowUpdatesCommandTest {
embeddedServer.start();
String[] args = {
"--plugins",
"/tmp", // pass this arg because it can cause failure
"--server",
embeddedServer.getURL().toString(),
"--user",
@@ -37,10 +37,12 @@ class FlowUpdatesCommandTest {
};
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(out.toString(), containsString("successfully updated !"));
assertThat(out.toString()).contains("successfully updated !");
out.reset();
args = new String[]{
"--plugins",
"/tmp", // pass this arg because it can cause failure
"--server",
embeddedServer.getURL().toString(),
"--user",
@@ -52,7 +54,7 @@ class FlowUpdatesCommandTest {
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
// 2 delete + 1 update
assertThat(out.toString(), containsString("successfully updated !"));
assertThat(out.toString()).contains("successfully updated !");
}
}
@@ -70,6 +72,8 @@ class FlowUpdatesCommandTest {
embeddedServer.start();
String[] args = {
"--plugins",
"/tmp", // pass this arg because it can cause failure
"--server",
embeddedServer.getURL().toString(),
"--user",
@@ -79,11 +83,13 @@ class FlowUpdatesCommandTest {
};
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(out.toString(), containsString("4 flow(s)"));
assertThat(out.toString()).contains("4 flow(s)");
out.reset();
// no "delete" arg should behave as no-delete
args = new String[]{
"--plugins",
"/tmp", // pass this arg because it can cause failure
"--server",
embeddedServer.getURL().toString(),
"--user",
@@ -92,10 +98,12 @@ class FlowUpdatesCommandTest {
};
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(out.toString(), containsString("1 flow(s)"));
assertThat(out.toString()).contains("1 flow(s)");
out.reset();
args = new String[]{
"--plugins",
"/tmp", // pass this arg because it can cause failure
"--server",
embeddedServer.getURL().toString(),
"--user",
@@ -105,7 +113,36 @@ class FlowUpdatesCommandTest {
};
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(out.toString(), containsString("1 flow(s)"));
assertThat(out.toString()).contains("1 flow(s)");
}
}
@Test
void invalidWithNamespace() {
URL directory = FlowUpdatesCommandTest.class.getClassLoader().getResource("flows");
ByteArrayOutputStream out = new ByteArrayOutputStream();
System.setErr(new PrintStream(out));
try (ApplicationContext ctx = ApplicationContext.run(Environment.CLI, Environment.TEST)) {
EmbeddedServer embeddedServer = ctx.getBean(EmbeddedServer.class);
embeddedServer.start();
String[] args = {
"--plugins",
"/tmp", // pass this arg because it can cause failure
"--server",
embeddedServer.getURL().toString(),
"--user",
"myuser:pass:word",
"--namespace",
"io.kestra.cli",
"--delete",
directory.getPath(),
};
PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(out.toString()).contains("Invalid entity: flow.namespace: main_io.kestra.outsider_quattro_-1 - flow namespace is invalid");
}
}
@@ -121,6 +158,8 @@ class FlowUpdatesCommandTest {
embeddedServer.start();
String[] args = {
"--plugins",
"/tmp", // pass this arg because it can cause failure
"--server",
embeddedServer.getURL().toString(),
"--user",
@@ -130,8 +169,8 @@ class FlowUpdatesCommandTest {
};
Integer call = PicocliRunner.call(FlowUpdatesCommand.class, ctx, args);
assertThat(call, is(0));
assertThat(out.toString(), containsString("1 flow(s)"));
assertThat(call).isZero();
assertThat(out.toString()).contains("1 flow(s)");
}
}
}

View File

@@ -7,9 +7,7 @@ import org.junit.jupiter.api.Test;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.StringContains.containsString;
import static org.assertj.core.api.Assertions.assertThat;
class FlowValidateCommandTest {
@Test
@@ -24,8 +22,8 @@ class FlowValidateCommandTest {
};
Integer call = PicocliRunner.call(FlowValidateCommand.class, ctx, args);
assertThat(call, is(0));
assertThat(out.toString(), containsString("✓ - io.kestra.cli / include"));
assertThat(call).isZero();
assertThat(out.toString()).contains("✓ - io.kestra.cli / include");
}
}
@@ -41,10 +39,10 @@ class FlowValidateCommandTest {
};
Integer call = PicocliRunner.call(FlowValidateCommand.class, ctx, args);
assertThat(call, is(0));
assertThat(out.toString(), containsString("✓ - system / warning"));
assertThat(out.toString(), containsString("⚠ - tasks[0] is deprecated"));
assertThat(out.toString(), containsString(" - io.kestra.core.tasks.log.Log is replaced by io.kestra.plugin.core.log.Log"));
assertThat(call).isZero();
assertThat(out.toString()).contains("✓ - system / warning");
assertThat(out.toString()).contains("⚠ - tasks[0] is deprecated");
assertThat(out.toString()).contains(" - io.kestra.core.tasks.log.Log is replaced by io.kestra.plugin.core.log.Log");
}
}
}

Some files were not shown because too many files have changed in this diff Show More