Thank you for taking the time out to contribute to project Antrea!
This guide will walk you through the process of making your first commit and how to effectively get it merged upstream.
Before getting started, go through the following:
- Read and observe the code of conduct.
- Sign the CLA.
- Check out the Architecture document for the Antrea architecture and design.
- Set up necessary accounts.
- Set up your development environment
At minimum, you need the following accounts for effective participation:
- Github: Committing any change requires you to have a github account.
- Slack: Join the Kubernetes Slack and look for our #antrea channel.
- Google Group: Join our mailing list.
There are multiple ways in which you can contribute, either by contributing code in the form of new features or bug-fixes or non-code contributions like helping with code reviews, triaging of bugs, documentation updates, filing new issues or writing blogs/manuals etc.
In order to help you get your hands "dirty", there is a list of starter issues from which you can choose.
We welcome contributions from everyone but we can only accept them if you sign our Contributor License Agreement (CLA). If you would like to contribute and you have not signed it, our CLA-bot will walk you through the process when you open a Pull Request. For questions about the CLA process, see the FAQ or submit a question through the GitHub issue tracker.
Before picking up a task, go through the existing issues and make sure that your change is not already being worked on. If it does not exist, please create a new issue and discuss it with other members.
Help is always appreciated. If you find something that needs fixing, please file an issue here. Please ensure that the issue is self explanatory and has enough information for an assignee to get started.
- Fork your own copy of the repository to your GitHub account by clicking on
Fork
button on Antrea's GitHub repository. - Clone the forked repository on your local setup.
Add a remote upstream to track upstream Antrea repository.
git clone https://github.com/$user/antrea
Never push to upstream mastergit remote add upstream https://github.com/vmware-tanzu/antrea
git remote set-url --push upstream no_push
- Create a topic branch.
git checkout -b branchName
- Make changes and commit it locally.
git add <modifiedFile> git commit
- Update the "Unreleased" section of the CHANGELOG for any significant change that impacts users.
- Keeping branch in sync with upstream.
git checkout branchName git fetch upstream git rebase upstream/master
- Push local branch to your forked repository.
git push -f $remoteBranchName branchName
- Create a Pull request on GitHub.
Visit your fork at
https://github.com/vmware-tanzu/antrea
and clickCompare & Pull Request
button next to yourremoteBranchName
branch.
Once you have opened a Pull Request (PR), reviewers will be assigned to your PR and they may provide review comments which you need to address. Commit changes made in response to review comments to the same branch on your fork. Once a PR is ready to merge, squash any fix review feedback, typo and merged sorts of commits.
To make it easier for reviewers to review your PR, consider the following:
- Follow the golang coding conventions
- Follow git commit guidelines.
- Follow logging guidelines.
To build the Antrea Docker image together with all Antrea bits, you can simply do:
- Checkout your feature branch and
cd
into it. - Run
make
The second step will compile the Antrea code in a golang
container, and build
a Ubuntu 18.04
Docker image that includes all the generated binaries. Docker
must be installed on your local machine in advance.
Alternatively, you can build the Antrea code in your local Go environment. The
Antrea project uses the Go modules support which was introduced in Go 1.11. It
facilitates dependency tracking and no longer requires projects to live inside
the $GOPATH
.
To develop locally, you can follow these steps:
- Install Go 1.13
- Checkout your feature branch and
cd
into it. - To build all Go files and install them under
bin
, runmake bin
- To run all Go unit tests, run
make test-unit
In addition to the unit tests, we provide a suite of end-to-end tests, which require a running Kubernetes cluster. Instructions on how to run these tests, including how to setup a local Kubernetes cluster, can be found in test/e2e/README.md.
- Create a branch in your forked repo
git checkout -b revertName
- Sync the branch with upstream
git fetch upstream git rebase upstream/master
- Create a revert based on the SHA of the commit.
git revert SHA
- Push this new commit.
git push $remoteRevertName revertName
- Create a Pull Request on GitHub.
Visit your fork at
https://github.com/vmware-tanzu/antrea
and clickCompare & Pull Request
button next to yourremoteRevertName
branch.