Skip to content

Latest commit

 

History

History
161 lines (106 loc) · 4.7 KB

CONTRIBUTING.adoc

File metadata and controls

161 lines (106 loc) · 4.7 KB

How to contribute to Rudder

Rudder is open to all kinds of contribution:

  • Bug reports and fixes

  • Documentation

  • Features ideas

  • New features

If you want to contribute, the best way to start is to come and chat with us on chat.rudder.io.

Note
Large contributions on Rudder may require a CLA/CCLA.

Documentation contribution

Just click on the "Edit page" button, and open a pull request directly from Github’s interface!

Development workflow

We maintain several Rudder major/minor versions in separate branches.

  • branches/rudder/6.2 is Rudder 6.2, from which 6.2 patch releases will be tagged

  • branches/rudder/7.1 is Rudder 7.0, major 7, minor 0, from which 7.0 patch releases will be tagged

  • branches/rudder/7.1 is Rudder 7.1, major 7, minor 1, from which 7.1 patch releases will be tagged

  • branches/rudder/7.2 is Rudder 7.2, major 7, minor 2, from which 7.2 releases will be tagged

  • master is the next Rudder version, not branched yet

Note
Some tooling repositories only have a master branch.

All bug fixes should be done in the oldest relevant branch (i.e. affected and still maintained). Version status is visible on https://docs.rudder.io/version. Don’t hesitate to ask us on the chat room if you are unsure about which branch you should work on.

We have an internal CI platform running Jenkins, integrated to Github pull requests. CI configuration is mostly done trough Jenkinsfile files in the repositories.

Issue tracker

We do not use Github’s issue tracking but an external issue tracker hosted on https://issues.rudder.io.

Every change in one of the Rudder repositories must be linked to an issue in this tool, except for documentation fixes that can be contributed directly on Github.

Development tooling (rudder-dev)

Installation

To ease the use of a separate issue tracker and maintenance of several branches of Rudder, we have developed a dedicated tooling.

To download rudder-dev:

wget https://repository.rudder.io/tools/rudder-dev

It is a shell script you can put somewhere is your PATH. You can then update it with

rudder-dev update

(it will remind you to do so regularly).

Setup

At its first start, rudder-dev will create its configuration script in ~/.rudder-dev. You need to edit it to provide your Github and bug tracker token:

[default]
## Uncomment and set your own values
## To manage your tokens, click here https://github.com/settings/tokens
github_token =
## Redmine personal access token, (create one here http://issues.rudder.io/my/account)
redmine_token =

Usage

rudder-dev --help

For more information.

Development environments

Rudder test framework (rtf)

The rtf tool allows automated setup of multi-node environment using vagrant. Follow the docs in the rudder-tests repo to install and configure it.

It is also used for continuous integration and release testing.

Scala

Follow these instructions to setup a development’s environment with IntelliJ allowing you to test your changes.

Rust

Follow the dedicated doc.

F#

Follow the dedicated doc.

Shell

Install and use shellcheck, it is used in our test script to lint shell scripts, and gives good advice during development.

Generate fake data

You may want to generate plenty of inventories to test Rudder, without the need of having a lot of VMs. The script inventory-generation in rudder-tools creates the data for inventories creation and reports sending, and the way to create said inventories based on templates. Data are sufficiently differents to tests different cases (hostnames autoincrementing RUDDERTEST<X>, public/private keys autogenerated, software versions randomized, OS randomized, IP randomized).

Usage

To create data to generate 500 inventories

inventory-generation --data 500

It will create folder data with one subfolder for each fake node

To generate inventories based on the data

inventory-generation -g

This will generate the inventories based on the data in folder data, and sign and compress them, and store the resulting files in inventories folder. You can send them to the Rudder server by copying them to /var/rudder/inventories/incoming

To generate inventories based on the data with a specific template

inventory-generation --template Injection-template.ocs -g

Purge the generated data (the generated inventories are not purged)

inventory-generation -w