Kestra
Requirements
The following dependencies are required to build Kestra locally:
- Java 17+, Kestra runs on Java 11 but we hit a Java compiler bug fixed in Java 17
- Node 14+ and npm
- Python 3, pip and python venv
- Docker & Docker Compose
- an IDE (Intellij IDEA, Eclipse or VS Code)
To start contributing:
- Fork the repository
- Clone the fork on your workstation:
shell
$ git clone git@github.com:{YOUR_USERNAME}/kestra.git
$ cd kestra
Develop backend
The backend is made with Micronaut.
Open the cloned repository in your favorite IDE. In many IDEs, Gradle build will be detected and all dependencies will be downloaded.
You can also build it from a terminal using ./gradlew build
, the Gradle wrapper will download the right Gradle version to use.
- You may need to enable Java annotation processors since we are using it a lot.
- The main class is
io.kestra.cli.App
from modulekestra.cli.main
- Pass as program arguments the server you want to develop, for example
server standalone
will start a standalone Kestra server. - The Intellij Idea configuration can be found in screenshot below:
MICRONAUT_ENVIRONMENTS
: can be set any string and will load a custom configuration file incli/src/main/resources/application-{env}.yml
.KESTRA_PLUGINS_PATH
: is the path where you will save plugins as Jar and will be loaded during the startup process.
- You can also use the gradle task
./gradlew runStandalone
that will run a standalone server withMICRONAUT_ENVIRONMENTS=override
and plugins pathlocal/plugins
- The server start by default on port 8080 and is reachable on
http://localhost:8080
.
If you want to launch all tests, you need Python and some packages installed on your machine. On Ubuntu, you can install them with the following command:
shell
$ sudo apt install python3 pip python3-venv
$ python3 -m pip install virtualenv
Develop frontend
The frontend is made with Vue.js and located in the /ui
folder.
shell
# install dependencies
$ npm install
- Create a file
ui/.env.development.local
with the contentVITE_APP_API_URL=http://localhost:8080
(or your actual server URL). - You can serve the UI with hot reload at http://localhost:5173 using the command:
npm run dev
. For a production build, use:npm run build
. - If you have CORS restrictions when using the local development npm server, you need to configure the backend to allow the http://localhost:5173 origin in
cli/src/main/resources/application-override.yml
using the following addition to your kestra configuration YAML definition:
yaml
micronaut:
server:
cors:
enabled: true
configurations:
all:
allowedOrigins:
- http://localhost:5173
Develop plugins
A complete documentation for developing a plugin can be found in the Plugin Developer Guide.