description |
---|
Step-by-step guide on the different repositories that you need to submit a PR to, when creating a new integration. |
When contributing to our open-source code by creating your own RudderStack integration, this guide will help you ensure that you have completed the required steps. It will also help you make sure that your integration code will fit with our pre-existing code base without any issues.
For your integration to be reviewed and considered, there are three repositories that you must contribute to:
Repository | Link | Description |
---|---|---|
RudderStack Transformer
|
GitHub Repo<b></b> |
Responsible for transforming the standard RudderStack payload from the source into the required payload format needed for a given downstream destination. |
Control Plane Lite
|
GitHub Repo<b></b> |
Responsible for gathering the required configuration details that will be specific to each user, i.e. API keys, event mappings, metrics, etc. |
RudderStack Documentation
|
<b></b>GitHub Repo<b></b> |
Includes the relevant instructions on setting up, configuring, and using the integration you have created. |
For each of the three repositories listed above, it is necessary to fork each one and clone them to your local machine. Ensure that you are updating your local repositories regularly to limit any merge conflicts. It is important to create a branch with a descriptive name and ensure that your commit messages are clear.
When you are ready to create a pull request, follow the steps below:
- Push your changes to your remote origin.
- Then, go to the RudderStack's repository and click on New pull request.
- Click the link the says Compare across forks.
- Change the Head Repository to be your forked repository and change Compare to be the associated branch name.
- Make any necessary title or descriptions changes. Add any tags such as WIP (work in progress), etc. to help add clarity on what is needed.
- Finally, click on Create pull request.
{% hint style="success" %}
Repeat the steps above for each of the repositories - rudder-transformer
, config-generator
, and rudderstack-docs
.
{% endhint %}
{% hint style="warning" %} To contribute to this project, we need you to sign to Contributor License Agreement (“CLA”) for the first commit you make. By agreeing to the CLA, ****we can add you to list of approved contributors and review the changes proposed by you. {% endhint %}
The rudder-transformer
repository is responsible for transforming __the source payload into the required payload for the downstream destination. This is where the bulk of the code will need to be written. Therefore, the following should be considered when contributing to this repository.
- There is a big emphasis on formatting the code to match current project structure. If there are any questions or issues regarding this, reach out to our team; see Contact Us section below.
- Include any
eslint
logic in the top of the file. - Include test cases that cover around 80% code coverage.
The config-generator
repository allows the user to upload the necessary settings needed for configuring the integration. Follow the pre-existing structure to the best of your ability and reach out to us with any questions or concerns.
Note the following when creating the Control Plane:
- Your documentation should be in the
.md
format - Include proper
regex
validation rules for all of the text input fields. - The icon file must be an
svg
.
The rudderstack-docs
repository houses all the relevant documentation for instructing the users on using the integration you have created. Remember to be thorough with your documentation to avoid confusion and any errors. Although we will review the documentation and get in touch with you in case of any clarification, it will certainly be very helpful to ensure clear, concise steps on setting up, configuring, and using your integration.
{% hint style="warning" %} Do not include screenshots. We will include them after merging the changes. {% endhint %}
For more information on any of the sections in this guide, feel free to contact us ****or start a conversation on our Slack channel.