Skip to content

Raising a Pull Request

We welcome active contributions from the community. This document details out the things-to-be-done in order for us to consider a PR for review. Contributors should follow the guidelines mentioned in this document to minimize the time it takes to get the PR reviewed.

00-Prerequisites

In order to make code contributions you must setup your development environment. Follow the Prepare Dev Environment Guide for detailed instructions.

01-Raise an Issue

For every pull-request, it is mandatory to raise an Issue which should describe the problem in detail. We have created a few categories, each having its own dedicated template.

03-Prepare Code Changes

  • It is not recommended to create a branch on the main repository for raising pull-requests. Instead you must fork the etcd-druid repository and create a branch in the fork. You can follow the detailed instructions on how to fork a repository and set it up for contributions.

  • Ensure that you follow the coding guidelines while introducing new code.

  • If you are making changes to the API then please read Changing-API documentation.

  • If you are introducing new go mod dependencies then please read Dependency Management documentation.

  • If you are introducing a new Etcd cluster component then please read Add new Cluster Component documentation.

  • For guidance on testing, follow the detailed instructions here.

  • Before you submit your PR, please ensure that the following is done:

    • Run make check which will do the following:

      • Runs make format - this target will ensure a common formatting of the code and ordering of imports across all source files.
      • Runs make manifests - this target will re-generate manifests if there are any changes in the API.
      • Only when the above targets have run without errorrs, then make check will be run linters against the code. The rules for the linter are configured here.
    • Ensure that all the tests pass by running the following make targets:

      • make test-unit - this target will run all unit tests.
      • make test-integration - this target will run all integration tests (controller level tests) using envtest framework.
      • make ci-e2e-kind or any of its variants - these targets will run etcd-druid e2e tests.

      !!! warning Please ensure that after introduction of new code the code coverage does not reduce. An increase in code coverage is always welcome.

  • If you add new features, make sure that you create relevant documentation under /docs.

04-Raise a pull request

  • Create Work In Progress [WIP] pull requests only if you need a clarification or an explicit review before you can continue your work item.
  • Ensure that you have rebased your fork's development branch with upstream main/master branch.
  • Squash all commits into a minimal number of commits.
  • Fill in the PR template with appropriate details and provide the link to the Issue for which a PR has been raised.
  • If your patch is not getting reviewed, or you need a specific person to review it, you can @-reply a reviewer asking for a review in the pull request or a comment.

05-Post review

  • If a reviewer requires you to change your commit(s), please test the changes again.
  • Amend the affected commit(s) and force push onto your branch.
  • Set respective comments in your GitHub review as resolved.
  • Create a general PR comment to notify the reviewers that your amendments are ready for another round of review.

06-Merging a pull request

  • Merge can only be done if the PR has approvals from atleast 2 reviewers.
  • Add an appropriate release note detailing what is introduced as part of this PR.
  • Before merging the PR, ensure that you squash and then merge.
EU and German government funding logos

Funded by the European Union – NextGenerationEU.

The views and opinions expressed are solely those of the author(s) and do not necessarily reflect the views of the European Union or the European Commission. Neither the European Union nor the European Commission can be held responsible for them.