Contribute to our open-source community.

You can contribute to Kestra in many ways depending on your skills and interests. The issues with the label good first issue are a great place to start and get familiar with the codebase. Follow this link to see good first issues.

Build a plugin

Check out our Plugin Developer Guide for instructions on how to build a new plugin.

Contribute to the documentation

We love documentation contributions. To contribute to the documentation, make sure to fork the docs repository and create a pull request with your changes.

Documentation structure

If your changes relate to a specific Kestra edition or are valid only since a specific release, you can add the following fields to the front matter of your markdown file:

markdown
---
title: My new page for a +0.18.0 feature
editions: ["OSS", "EE"]
version: ">= 0.18.0"
---

Build the documentation locally

The following dependencies are required to build Kestra docs locally:

  • Node 14+ and npm
  • an IDE

To start contributing:

  • Fork the repository
  • Clone the fork on your workstation:
shell
$ git clone [email protected]:{YOUR_USERNAME}/docs.git
$ cd docs

Use the following commands to serve the docs locally:

shell
# install dependencies
$ npm install

# serve with hot reload at localhost:3001
$ npm run dev

# to generate static pages
$ npm run generate

# making a production build
$ npm run build

Write a blog post

You can contribute an article about how you use Kestra to our blog. Email [email protected] to start the collaboration. And if you wrote a post mentioning Kestra on your personal blog, we'd be happy to feature it in our community section.


Other ways to show support


Build Kestra locally

Requirements

The following dependencies are required to build Kestra locally:

  • Java 21+
  • Node 14+ and npm
  • 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 [email protected]:{YOUR_USERNAME}/kestra.git
$ cd kestra

Backend development

The backend is built using 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 module kestra.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: Intellij Idea Configuration
    • MICRONAUT_ENVIRONMENTS: can be set any string and will load a custom configuration file in cli/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.
  • If you encounter JavaScript memory heap out error during startup, configure NODE_OPTIONS environment variable with some large value.
    • Example NODE_OPTIONS: --max-old-space-size=4096 or NODE_OPTIONS: --max-old-space-size=8192 Intellij IDEA Configuration
  • You can also use the gradle task ./gradlew runStandalone that will run a standalone server with MICRONAUT_ENVIRONMENTS=override and plugins path local/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

Frontend development

Our front-end uses Vue.js with the version 18.18.0. The code is located in the /ui folder.

shell
$ npm install

Setup the configuration to connect to the backend

  • Create a file ui/.env.development.local with the content VITE_APP_API_URL=http://localhost:8080 (or your actual server URL).
  • Install the dependencies with npm install.
  • 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.
  • To avoid 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

Setup to work without building the backend from the source code

If you want to work on the frontend without having to install Java and everything to run the Kestra Application, you may only start a Kestra Docker container and connect the frontend to it.

To do so, you can first use the following docker compose file.

Save it as docker-compose.yml and run the following command:

shell
$ docker-compose up

This will start Kestra running with H2 as the database. In the above docker compose, we redirected the port 8080 to 8085 and 8081 to 8086. You can change it to any port you want.

Then, enter in the /ui folder, create a file ui/.env.development.local with the content VITE_APP_API_URL=http://localhost:8085 (if you did not use 8085 as the port for Kestra, remember to also change it here).

Finally, you can install the dependencies with npm install and serve the UI with hot reload at http://localhost:5173 using the command: npm run dev.

Plugin development

A documentation for developing a plugin can be found in the Plugin Documentation.


Code of Conduct

This project and everyone participating in it is governed by the

Kestra Code of Conduct.

By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].

When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project license.

Submit issues

To submit feature requests or report bugs, please open an issue on GitHub.

Reporting bugs

Bug reports help us make Kestra better for everyone. We provide a preconfigured template for bugs to make it very clear what information we need.

Please search within our already reported bugs before raising a new one to make sure you're not raising a duplicate.

Reporting security issues

Please do not create a public GitHub issue. If you've found a security issue, please email us directly at [email protected] instead of raising an issue.

Requesting new features

Use our issue templates when opening new issues. It contains a few essential questions that help us understand the problem you are looking to solve.

To see what has already been proposed by the community, you can look here.

Was this page helpful?