Thanks for your interest in contributing! Here's what you need to know.
├── cmd/
│ └── binarylane-cloud-controller-manager/ # Main application
├── pkg/
│ ├── binarylane/ # Generated BinaryLane API client
│ └── cloud/ # Cloud provider implementation
├── charts/
│ └── binarylane-cloud-controller-manager/ # Helm chart
├── deploy/
│ └── kubernetes/ # Kubernetes manifests
├── scripts/ # Deployment and testing scripts
├── Dockerfile
├── Makefile
└── go.mod
- Go 1.25+
- Docker (for building container images)
- kubectl (for E2E testing)
- BinaryLane API token (for E2E testing)
make build # Build the binary
make docker-build # Build the Docker imagemake test # Run unit tests
make coverage # Run tests with coverage
make lint # Run lintingThe test workflow checks:
- Code formatting with
gofmt - Code analysis with
go vet - Generated files are up to date
- Tests pass with race detector enabled
- Test coverage is tracked
The BinaryLane API client is auto-generated from the OpenAPI spec. If you need to update it:
go generate ./...This fetches the latest OpenAPI spec and regenerates the type-safe client code.
E2E tests deploy a real Kubernetes cluster on BinaryLane and verify the CCM works:
export BINARYLANE_API_TOKEN="your-token"
./scripts/deploy-cluster.shWhen you're done testing:
./scripts/delete-cluster.shThe deploy script handles:
- Creating BinaryLane servers (or reusing existing ones)
- Installing Kubernetes with kubeadm
- Deploying the cloud controller manager
- Validating cluster health
- Fork the repo and create a feature branch
- Make your changes
- Run tests locally:
make test lint - Commit and push
- Open a pull request with a clear description
- Follow standard Go conventions
- Run
gofmtbefore committing - Generated files should not be manually edited