* You have Go 1.12.5 installed on your local host/development machine.
* You have Docker installed on your local host/development machine. Docker is required for building zfs-driver container images and to push them into a Kubernetes cluster for testing.
* You have `kubectl` installed. For running integration tests, you can create a Minikube cluster on local host/development machine. Don't worry if you don't have access to the Kubernetes cluster, raising a PR with the zfs-localpv repository will run integration tests for your changes against a Minikube cluster.
## Initial Setup
### Fork in the cloud
1. Visit https://github.com/openebs/zfs-localpv
2. Click `Fork` button (top right) to establish a cloud-based fork.
Always start with creating a new branch from develop to work on a new feature or bugfix. Your branch name should have the format XX-descriptive where XX is the issue number you are working on followed by some descriptive text. For example:
Switched to a new branch '1234-fix-developer-docs'
```
Happy Hacking!
### Building and Testing your changes
* run `make` in the top directory. It will:
* Build the binary.
* Build the docker image with the binary.
* Test your changes
* setup the ZFS POOL on the nodes, check Setup in [readme](../README.md).
* Integration tests are written in ginkgo and run against a minikube cluster. Minikube cluster should be running so as to execute the tests. To install minikube follow the doc [here](https://kubernetes.io/docs/tasks/tools/install-minikube/).
*`sudo -E env "PATH=$PATH" make ci` execute the integration tests
### Keep your branch in sync
[Rebasing](https://git-scm.com/docs/git-rebase) is very import to keep your branch in sync with the changes being made by others and to avoid huge merge conflicts while raising your Pull Requests. You will always have to rebase before raising the PR.
While you rebase your changes, you must resolve any conflicts that might arise and build and test your changes using the above steps.
## Submission
### Create a pull request
Before you raise the Pull Requests, ensure you have reviewed the checklist in the [CONTRIBUTING GUIDE](../CONTRIBUTING.md):
- Ensure that you have re-based your changes with the upstream using the steps above.
- Ensure that you have added the required unit tests for the bug fixes or new feature that you have introduced.
- Ensure your commits history is clean with proper header and descriptions.
Go to the [openebs/zfs-localpv github](https://github.com/openebs/zfs-localpv) and follow the Open Pull Request link to raise your PR from your development branch.