Thank you for your interest in contributing to the AMD Network Device Plugin for Kubernetes! We welcome contributions from the community and appreciate your efforts to help improve this project.
- How We Accept Contributions
- Getting Started
- Development Setup
- Making Changes
- Submitting Pull Requests
- Code Review Process
- Additional Resources
- License
We warmly accept external contributions from the community. Below is an overview of how our contribution process works.
-
Submit a Pull Request Fork the repository, make your changes, and submit a pull request with a clear description.
-
Internal Review Our team reviews the PR and may request changes. We run internal validation and testing to ensure quality and compatibility.
-
Cherry-Pick & Integration Once approved, contributions are cherry-picked into our internal development branch for final integration.
-
Release The contribution is included in the next public release.
This workflow helps us:
- Maintain code quality and consistency
- Ensure compatibility with internal development branches
- Perform thorough testing before release
- Protect our internal development pipeline
- Credit community contributors in release notes
Before you begin, ensure you have:
- Git 2.25+
- Go 1.23+ (see
.go-versionorgo.mod) - Docker (for container builds and testing)
- Kubernetes familiarity
- Make
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/<your-username>/k8s-network-device-plugin.git cd k8s-network-device-plugin
-
Add the upstream repository:
git remote add upstream https://github.com/ROCm/k8s-network-device-plugin.git
-
Fetch the latest changes:
git fetch upstream main
# Build the device plugin binary
make build
# Build Docker image
make image
# Run tests
make test
# Generate code coverage
make coverage# Install dependencies
go mod download
# Run linting
make lint
# Format code
make fmt- Create a feature or fix branch from
main - Keep changes focused and minimal
- Follow existing coding and naming conventions
- Add or update tests when applicable
-
Run tests locally
make test make lint -
Update documentation if user-facing behavior changes
-
Add tests for new features or bug fixes
-
Format code
make fmt gofmt -s -w . -
Use clear commit messages
feature: Add RDMA health monitoring - Implement RDMA device health checks - Add metrics export - Include tests Closes #123
When opening a PR, include:
- A clear and descriptive title
- Explanation of what and why
- References to related issues (if any)
- Notes on testing performed
- Automated checks run via GitHub Actions
- Maintainer review for correctness, quality, tests, and documentation
- Feedback may be requested
- Approval and merge once all concerns are addressed
- Kubernetes Device Plugin Documentation
- Go Code Review Comments
- Effective Go
- SR-IOV Network Device Plugin
By contributing to this project, you agree that your contributions will be licensed under the Apache License 2.0. See the LICENSE file for details.
Thank you for contributing! We’re excited to see what you build.
For questions, please open an issue or start a discussion on GitHub.