Thank you for your interest in contributing! This project is maintained by a single developer, but community contributions (bug fixes, features, documentation) are highly appreciated.
To keep things simple and avoid over-engineering, we follow a lightweight workflow.
-
Fork and Clone: Fork the repository and clone it locally:
git clone https://github.com/<your-username>/hcloud-operator.git cd hcloud-operator
-
Prerequisites:
- Go 1.25+
- Docker or Podman
kubectlandmake- A local Kubernetes cluster (like
kind) for testing.
-
Running Tests: Before submitting code, ensure all tests pass and code is properly formatted:
make fmt make vet make testOptional — real Hetzner E2E (creates and deletes a cheap
cx23server; requiresHCLOUD_TOKEN):export HCLOUD_TOKEN="your-hetzner-cloud-token" make test-e2e-real
This target uses the
e2e_realbuild tag and is not part of the defaultmake testgate. CI runs it onworkflow_dispatchor when theHCLOUD_TOKENrepository secret is configured (see.github/workflows/e2e-real.yaml). -
Testing Locally: You can run the operator locally against your Kubernetes cluster (ensure you have the
HCLOUD_TOKENexported in your environment):make install export HCLOUD_TOKEN="your-hetzner-cloud-token" make run
- Create a branch for your feature or fix (e.g.,
feat/add-volume-supportorfix/reconciler-bug). - Make your changes and write tests if applicable.
- Ensure
make test,make fmt, andmake vetsucceed. - Commit your changes. Please use conventional commit messages if possible (e.g.,
feat: ...,fix: ...). - Open a Pull Request against the
mainbranch. - The CI pipeline will automatically run tests to verify your changes.
Once the PR is reviewed and CI passes, it will be merged into main.
Thank you for your help in making this project better!