Skip to content

Commit 2863d03

Browse files
committed
chore(version): update to version 'v0.4.4'.
2 parents 5e5cb9d + 7da73d9 commit 2863d03

File tree

71 files changed

+8824
-3240
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+8824
-3240
lines changed

.github/workflows/codeql-analysis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ jobs:
5050

5151
# Set up JDK
5252
- name: Set up JDK
53-
uses: actions/setup-java@v2
53+
uses: actions/setup-java@v3
5454
with:
5555
distribution: 'adopt'
5656
java-version: 11

.github/workflows/main.yml

+10-6
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ jobs:
6868
6969
# JDK
7070
- name: Set up JDK
71-
uses: actions/setup-java@v2
71+
uses: actions/setup-java@v3
7272
with:
7373
distribution: 'adopt'
7474
java-version: 11
@@ -88,7 +88,7 @@ jobs:
8888
./gradlew check jacoco --no-daemon
8989
9090
# Codecov
91-
- uses: codecov/codecov-action@v2
91+
- uses: codecov/codecov-action@v3
9292
with:
9393
token: ${{ secrets.CODECOV_TOKEN }}
9494

@@ -98,13 +98,13 @@ jobs:
9898

9999
# Upload artifacts
100100
- name: Upload jar
101-
uses: actions/upload-artifact@v2
101+
uses: actions/upload-artifact@v3
102102
with:
103103
name: jar
104104
path: build/libs/
105105

106106
- name: Upload Executable
107-
uses: actions/upload-artifact@v2
107+
uses: actions/upload-artifact@v3
108108
with:
109109
name: exe
110110
path: build/executable/
@@ -130,7 +130,7 @@ jobs:
130130
plugins: ""
131131
packages: ""
132132
- name: "-full"
133-
plugins: io.kestra.storage:storage-gcs:LATEST io.kestra.storage:storage-minio:LATEST io.kestra.plugin:plugin-aws:LATEST io.kestra.plugin:plugin-compress:LATEST io.kestra.plugin:plugin-crypto:LATEST io.kestra.plugin:plugin-debezium-mysql:LATEST io.kestra.plugin:plugin-debezium-postgres:LATEST io.kestra.plugin:plugin-elasticsearch:LATEST io.kestra.plugin:plugin-fs:LATEST io.kestra.plugin:plugin-gcp:LATEST io.kestra.plugin:plugin-googleworkspace:LATEST io.kestra.plugin:plugin-jdbc-clickhouse:LATEST io.kestra.plugin:plugin-jdbc-mysql:LATEST io.kestra.plugin:plugin-jdbc-oracle: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-vertica:LATEST io.kestra.plugin:plugin-jdbc-vectorwise:LATEST io.kestra.plugin:plugin-kafka:LATEST io.kestra.plugin:plugin-kubernetes:LATEST io.kestra.plugin:plugin-mongodb:LATEST io.kestra.plugin:plugin-notifications:LATEST io.kestra.plugin:plugin-script-groovy:LATEST io.kestra.plugin:plugin-script-jython:LATEST io.kestra.plugin:plugin-script-nashorn:LATEST io.kestra.plugin:plugin-serdes:LATEST io.kestra.plugin:plugin-singer:LATEST io.kestra.plugin:plugin-spark:LATEST
133+
plugins: io.kestra.storage:storage-azure:LATEST io.kestra.storage:storage-gcs:LATEST io.kestra.storage:storage-minio:LATEST io.kestra.plugin:plugin-aws:LATEST io.kestra.plugin:plugin-azure:LATEST io.kestra.plugin:plugin-cassandra:LATEST io.kestra.plugin:plugin-compress:LATEST io.kestra.plugin:plugin-crypto:LATEST io.kestra.plugin:plugin-dbt:LATEST io.kestra.plugin:plugin-debezium-mysql:LATEST io.kestra.plugin:plugin-debezium-postgres:LATEST io.kestra.plugin:plugin-debezium-sqlserver:LATEST io.kestra.plugin:plugin-elasticsearch:LATEST io.kestra.plugin:plugin-fs:LATEST io.kestra.plugin:plugin-gcp:LATEST io.kestra.plugin:plugin-googleworkspace:LATEST io.kestra.plugin:plugin-jdbc-clickhouse:LATEST io.kestra.plugin:plugin-jdbc-mysql:LATEST io.kestra.plugin:plugin-jdbc-oracle: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-vertica:LATEST io.kestra.plugin:plugin-jdbc-vectorwise:LATEST io.kestra.plugin:plugin-kafka:LATEST io.kestra.plugin:plugin-kubernetes:LATEST io.kestra.plugin:plugin-mongodb:LATEST io.kestra.plugin:plugin-mqtt:LATEST io.kestra.plugin:plugin-notifications:LATEST io.kestra.plugin:plugin-script-groovy:LATEST io.kestra.plugin:plugin-script-jython:LATEST io.kestra.plugin:plugin-script-nashorn:LATEST io.kestra.plugin:plugin-serdes:LATEST io.kestra.plugin:plugin-singer:LATEST io.kestra.plugin:plugin-spark:LATEST
134134
packages: python3-pip python3-wheel python3-setuptools python3-virtualenv nodejs curl wait-for-it zip unzip
135135
steps:
136136
- uses: actions/checkout@v2
@@ -154,7 +154,11 @@ jobs:
154154
if [[ $TAG = "master" ]]
155155
then
156156
echo ::set-output name=tag::latest
157-
echo ::set-output name=plugins::
157+
echo ::set-output name=plugins::${{ matrix.image.plugins }}
158+
elif [[ $TAG == v* ]]
159+
then
160+
echo ::set-output name=tag::${TAG}
161+
echo ::set-output name=plugins::${{ matrix.image.plugins }}
158162
else
159163
echo ::set-output name=tag::${TAG}
160164
echo ::set-output name=plugins::--repositories=https://s01.oss.sonatype.org/content/repositories/snapshots ${{ matrix.image.plugins }}

Dockerfile

+8-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,14 @@ ARG APT_PACKAGES=""
66
WORKDIR /app
77
COPY docker /
88

9-
RUN if [ -n "${APT_PACKAGES}" ]; then apt-get update -y; apt-get install -y --no-install-recommends ${APT_PACKAGES}; apt-get clean && rm -rf /var/lib/apt/lists/* /var/tmp/*; fi && \
10-
if [ -n "${KESTRA_PLUGINS}" ]; then /app/kestra plugins install ${KESTRA_PLUGINS}; fi
9+
RUN if [ -n "${APT_PACKAGES}" ]; then apt-get update -y; apt-get install -y --no-install-recommends ${APT_PACKAGES}; apt-get clean; rm -rf /var/lib/apt/lists/* /var/tmp/* /tmp/*; fi && \
10+
if [ -n "${KESTRA_PLUGINS}" ]; then /app/kestra plugins install ${KESTRA_PLUGINS}; rm -rf /tmp/*; fi
11+
12+
RUN groupadd kestra && \
13+
useradd -m -g kestra kestra && \
14+
chown -R kestra:kestra /app
15+
16+
USER kestra
1117

1218
ENTRYPOINT ["docker-entrypoint.sh"]
1319

README.md

+22-7
Original file line numberDiff line numberDiff line change
@@ -170,53 +170,68 @@ Kestra is built on [plugin systems](https://kestra.io/plugins/). You can find yo
170170
</tr>
171171
<tr>
172172
<td><a href="https://kestra.io/plugins/plugin-gcp#bigquery">Big Query</a></td>
173+
<td><a href="https://kestra.io/plugins/plugin-cassandra">Cassandra</a></td>
173174
<td><a href="https://kestra.io/plugins/plugin-serdes#csv">CSV</a></td>
175+
</tr>
176+
<tr>
174177
<td><a href="https://kestra.io/plugins/plugin-jdbc-clickhouse">ClickHouse</a></td>
178+
<td><a href="https://kestra.io/plugins/plugin-debezium-mysql">Debezium MYSQL</a></td>
179+
<td><a href="https://kestra.io/plugins/plugin-debezium-postgres">Debezium Postgres</a></td>
175180
</tr>
176181
<tr>
182+
<td><a href="https://kestra.io/plugins/plugin-debezium-sqlserver">Debezium Microsoft SQL Server</a></td>
183+
<td><a href="https://kestra.io/plugins/plugin-dbt">DBT</a></td>
177184
<td><a href="https://kestra.io/plugins/plugin-elasticsearch">ElasticSearch</a></td>
185+
</tr>
186+
<tr>
178187
<td><a href="https://kestra.io/plugins/plugin-notifications#mail">Email</a></td>
179188
<td><a href="https://kestra.io/plugins/plugin-gcp#gcs">Google Cloud Storage</a></td>
189+
<td><a href="https://kestra.io/plugins/plugin-googleworkspace#drive">Google Drive</a></td>
180190
</tr>
181191
<tr>
182-
<td><a href="https://kestra.io/plugins/plugin-googleworkspace#drive">Google Drive</a></td>
183192
<td><a href="https://kestra.io/plugins/plugin-googleworkspace#sheets">Google Sheets</a></td>
184193
<td><a href="https://kestra.io/plugins/plugin-scripts-groovy">Groovy</a></td>
194+
<td><a href="https://kestra.io/plugins/plugin-fs#http">Http</a></td>
185195
</tr>
186196
<tr>
187-
<td><a href="https://kestra.io/plugins/plugin-fs#http">Http</a></td>
188197
<td><a href="https://kestra.io/plugins/plugin-serdes#json">JSON</a></td>
189198
<td><a href="https://kestra.io/plugins/plugin-scripts-jython">Jython</a></td>
199+
<td><a href="https://kestra.io/plugins/plugin-kafka">Kafka</a></td>
190200
</tr>
191201
<tr>
192-
<td><a href="https://kestra.io/plugins/plugin-kafka">Kafka</a></td>
193202
<td><a href="https://kestra.io/plugins/plugin-kubernetes">Kubernetes</a></td>
194203
<td><a href="https://kestra.io/plugins/plugin-jdbc-sqlserver">Microsoft SQL Server</a></td>
204+
<td><a href="https://kestra.io/plugins/plugin-mongodb">MongoDb</a></td>
195205
</tr>
196206
<tr>
197-
<td><a href="https://kestra.io/plugins/plugin-mongodb">MongoDb</a></td>
198207
<td><a href="https://kestra.io/plugins/plugin-jdbc-mysql">MySQL</a></td>
199208
<td><a href="https://kestra.io/plugins/plugin-scripts-nashorn">Nashorn</a></td>
209+
<td><a href="https://kestra.io/plugins/core/tasks/scripts/io.kestra.core.tasks.scripts.Node">Node</a></td>
200210
</tr>
201211
<tr>
202-
<td><a href="https://kestra.io/plugins/core/tasks/scripts/io.kestra.core.tasks.scripts.Node">Node</a></td>
203212
<td><a href="https://kestra.io/plugins/plugin-crypto#openpgp">Open PGP</a></td>
204213
<td><a href="https://kestra.io/plugins/plugin-jdbc-oracle">Oracle</a></td>
214+
<td><a href="https://kestra.io/plugins/plugin-jdbc-postgres">Postgres</a></td>
205215
</tr>
206216
<tr>
207-
<td><a href="https://kestra.io/plugins/plugin-jdbc-postgres">Postgres</a></td>
208217
<td><a href="https://kestra.io/plugins/core/tasks/scripts/io.kestra.core.tasks.scripts.Python">Python</a></td>
209218
<td><a href="https://kestra.io/plugins/plugin-jdbc-redshift">Redshift</a></td>
219+
<td><a href="https://kestra.io/plugins/plugin-jdbc-snowflake">Snowflake</a></td>
210220
</tr>
211221
<tr>
212222
<td><a href="https://kestra.io/plugins/plugin-fs#sftp">SFTP</a></td>
213223
<td><a href="https://kestra.io/plugins/plugin-singer">Singer</a></td>
214224
<td><a href="https://kestra.io/plugins/plugin-notifications#slack">Slack</a></td>
215225
</tr>
216226
<tr>
227+
<td><a href="https://kestra.io/plugins/plugin-spark">Spark</a></td>
217228
<td><a href="https://kestra.io/plugins/plugin-jdbc-vectorwise">Vectorwise</a></td>
218229
<td><a href="https://kestra.io/plugins/plugin-jdbc-vertica">Vertica</a></td>
230+
</tr>
231+
<tr>
219232
<td><a href="https://kestra.io/plugins/plugin-serdes#xml">XML</a></td>
233+
<td></td>
234+
<td></td>
220235
</tr>
221236
</table>
222237

@@ -230,7 +245,7 @@ Join our community if you need help, want to chat or have any other questions fo
230245

231246
- [GitHub](https://github.com/kestra-io/kestra/discussions) - Discussion forums and updates from the Kestra team
232247
- [Twitter](https://twitter.com/kestra_io) - For all the latest Kestra news
233-
- [Discord](https://discord.gg/5RgZmkW) - Join the conversation! Get all the latest updates and chat to the devs
248+
- [Discord](https://discord.gg/NMG39WKGth) - Join the conversation! Get all the latest updates and chat to the devs
234249

235250

236251
## Roadmap

cli/src/main/java/io/kestra/cli/plugins/PluginDownloader.java

+12-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.common.collect.ImmutableList;
44
import io.micronaut.context.annotation.Value;
55
import lombok.extern.slf4j.Slf4j;
6+
import org.apache.commons.io.FileUtils;
67
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
78
import org.eclipse.aether.DefaultRepositorySystemSession;
89
import org.eclipse.aether.RepositorySystem;
@@ -103,10 +104,19 @@ private RepositorySystemSession repositorySystemSession(RepositorySystem system,
103104

104105
if (localRepositoryPath == null) {
105106
try {
106-
localRepositoryPath = Files.createTempDirectory(this.getClass().getSimpleName().toLowerCase())
107+
final String tempDirectory = Files.createTempDirectory(this.getClass().getSimpleName().toLowerCase())
107108
.toAbsolutePath()
108109
.toString();
109-
new File(localRepositoryPath).deleteOnExit();
110+
111+
localRepositoryPath = tempDirectory;
112+
113+
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
114+
try {
115+
FileUtils.deleteDirectory(new File(tempDirectory));
116+
} catch (IOException e) {
117+
throw new RuntimeException(e);
118+
}
119+
}));
110120
} catch (IOException e) {
111121
throw new RuntimeException(e);
112122
}

core/build.gradle

+5-5
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ dependencies {
2020

2121
// utils
2222
implementation group: 'net.jodah', name: 'failsafe', version: '2.4.4'
23-
implementation 'com.github.oshi:oshi-core:6.1.5'
23+
implementation 'com.github.oshi:oshi-core:6.1.6'
2424
implementation 'io.pebbletemplates:pebble:3.1.5'
2525

2626
// scheduler
@@ -33,10 +33,10 @@ dependencies {
3333
implementation 'com.github.docker-java:docker-java-transport-httpclient5:3.2.13'
3434

3535
// schema
36-
implementation group: 'com.github.victools', name: 'jsonschema-generator', version: '4.23.0'
37-
implementation group: 'com.github.victools', name: 'jsonschema-module-javax-validation', version: '4.23.0'
38-
implementation group: 'com.github.victools', name: 'jsonschema-module-jackson', version: '4.23.0'
39-
implementation group: 'com.github.victools', name: 'jsonschema-module-swagger-2', version: '4.23.0'
36+
implementation group: 'com.github.victools', name: 'jsonschema-generator', version: '4.24.2'
37+
implementation group: 'com.github.victools', name: 'jsonschema-module-javax-validation', version: '4.24.2'
38+
implementation group: 'com.github.victools', name: 'jsonschema-module-jackson', version: '4.24.2'
39+
implementation group: 'com.github.victools', name: 'jsonschema-module-swagger-2', version: '4.24.2'
4040

4141
// test
4242
testImplementation project(':repository-memory')

core/src/main/java/io/kestra/core/models/flows/Flow.java

+5
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ public boolean hasIgnoreMarker(final AnnotatedMember m) {
8181

8282
List<TaskDefault> taskDefaults;
8383

84+
@NotNull
85+
@Builder.Default
86+
boolean disabled = false;
87+
8488
@NotNull
8589
@Builder.Default
8690
boolean deleted = false;
@@ -312,6 +316,7 @@ public Flow toDeleted() {
312316
this.listeners,
313317
this.triggers,
314318
this.taskDefaults,
319+
this.disabled,
315320
true
316321
);
317322
}

core/src/main/java/io/kestra/core/models/flows/State.java

+17
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ public State(Type state, State actual) {
5252
this.histories.add(new History(this.current, Instant.now()));
5353
}
5454

55+
public static State of(Type state, List<History> histories) {
56+
State result = new State(state);
57+
58+
result.histories.removeIf(history -> true);
59+
result.histories.addAll(histories);
60+
61+
return result;
62+
}
63+
5564
public State withState(Type state) {
5665
if (this.current == state) {
5766
log.warn("Can't change state, already " + current);
@@ -91,6 +100,14 @@ public String humanDuration() {
91100
}
92101
}
93102

103+
public Instant maxDate() {
104+
if (this.histories.size() == 0) {
105+
return Instant.now();
106+
}
107+
108+
return this.histories.get(this.histories.size() - 1).getDate();
109+
}
110+
94111
@JsonIgnore
95112
public boolean isTerninated() {
96113
return this.current.isTerninated();

core/src/main/java/io/kestra/core/models/hierarchies/GraphCluster.java

+3-9
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
@Getter
1111
public class GraphCluster extends AbstractGraphTask {
1212
@JsonIgnore
13-
private Graph<AbstractGraphTask, Relation> graph = new Graph<>();
13+
private final Graph<AbstractGraphTask, Relation> graph = new Graph<>();
1414

1515
@JsonIgnore
16-
private GraphClusterRoot root;
16+
private final GraphClusterRoot root;
1717

1818
@JsonIgnore
19-
private GraphClusterEnd end;
19+
private final GraphClusterEnd end;
2020

2121
public GraphCluster() {
2222
super();
@@ -36,10 +36,4 @@ public GraphCluster(Task task, TaskRun taskRun, List<String> values, RelationTyp
3636
graph.addNode(this.root);
3737
graph.addNode(this.end);
3838
}
39-
40-
public GraphCluster(GraphCluster graphTask, TaskRun taskRun, List<String> values) {
41-
super(graphTask.getTask(), taskRun, values, graphTask.getRelationType());
42-
43-
this.graph = graphTask.graph;
44-
}
4539
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package io.kestra.core.models.tasks;
2+
3+
public interface DynamicTask {
4+
5+
}

core/src/main/java/io/kestra/core/models/tasks/Task.java

+6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import io.kestra.core.models.executions.TaskRun;
88
import io.kestra.core.models.tasks.retrys.AbstractRetry;
99
import io.kestra.core.runners.RunContext;
10+
import io.kestra.core.tasks.flows.Worker;
1011
import io.micronaut.core.annotation.Introspected;
1112
import lombok.Builder;
1213
import lombok.Getter;
@@ -108,4 +109,9 @@ public Optional<Task> findById(String id, RunContext runContext, TaskRun taskRun
108109
public boolean isFlowable() {
109110
return this instanceof FlowableTask;
110111
}
112+
113+
@JsonIgnore
114+
public boolean isSendToWorkerTask() {
115+
return !(this instanceof FlowableTask) || this instanceof Worker;
116+
}
111117
}

core/src/main/java/io/kestra/core/models/triggers/AbstractTrigger.java

+5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.kestra.core.models.conditions.Condition;
66
import io.micronaut.core.annotation.Introspected;
77
import io.swagger.v3.oas.annotations.media.Schema;
8+
import lombok.Builder;
89
import lombok.Getter;
910
import lombok.NoArgsConstructor;
1011
import lombok.experimental.SuperBuilder;
@@ -41,4 +42,8 @@ abstract public class AbstractTrigger {
4142
title = "List of Conditions in order to limit the flow trigger."
4243
)
4344
private List<Condition> conditions;
45+
46+
@NotNull
47+
@Builder.Default
48+
private boolean disabled = false;
4449
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.kestra.core.runners;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Value;
6+
7+
import java.time.Instant;
8+
import javax.validation.constraints.NotNull;
9+
10+
@Value
11+
@AllArgsConstructor
12+
@Builder
13+
public class ExecutionDelay {
14+
@NotNull
15+
String taskRunId;
16+
17+
@NotNull
18+
String executionId;
19+
20+
@NotNull
21+
Instant date;
22+
}

core/src/main/java/io/kestra/core/runners/Executor.java

+8
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class Executor {
2323
private final List<TaskRun> nexts = new ArrayList<>();
2424
private final List<WorkerTask> workerTasks = new ArrayList<>();
2525
private final List<WorkerTaskResult> workerTaskResults = new ArrayList<>();
26+
private final List<ExecutionDelay> executionDelays = new ArrayList<>();
2627
private WorkerTaskResult joined;
2728
private final List<WorkerTaskExecution> workerTaskExecutions = new ArrayList<>();
2829

@@ -78,6 +79,13 @@ public Executor withWorkerTaskResults(List<WorkerTaskResult> workerTaskResults,
7879
return this;
7980
}
8081

82+
public Executor withWorkerTaskDelays(List<ExecutionDelay> executionDelays, String from) {
83+
this.executionDelays.addAll(executionDelays);
84+
this.from.add(from);
85+
86+
return this;
87+
}
88+
8189
public Executor withWorkerTaskExecutions(List<WorkerTaskExecution> newExecutions, String from) {
8290
this.workerTaskExecutions.addAll(newExecutions);
8391
this.from.add(from);

0 commit comments

Comments
 (0)