Skip to content

Latest commit

 

History

History
118 lines (84 loc) · 3 KB

File metadata and controls

118 lines (84 loc) · 3 KB

Contributing to openvox-operator

Thanks for your interest in contributing! This document covers the basics for getting started.

Getting Started

Prerequisites

  • Go 1.26+
  • Docker or Podman
  • Helm 3
  • A Kubernetes cluster (Docker Desktop, kind, or minikube)
  • golangci-lint

Clone and Build

git clone https://github.com/slauger/openvox-operator.git
cd openvox-operator
make build

Run Tests

make test          # Unit tests
make lint          # Linting
make helm-lint     # Helm chart linting
make ci            # All CI checks (lint, test, vet, helm-lint, check-manifests)

Local Development

Build all container images and deploy to your local cluster:

make local-deploy

Deploy a stack for testing:

make local-stack

E2E Tests

E2E tests use Chainsaw and require a running cluster:

make e2e

Development Workflow

  1. Fork the repository
  2. Create a feature branch from develop (feat/my-feature or fix/my-fix)
  3. Make your changes
  4. Run make ci to verify everything passes
  5. Commit with a descriptive message following Conventional Commits
  6. Open a pull request against develop

Branching

  • develop is the main development branch - all PRs target develop
  • main is the release branch - only receives merges from develop
  • Branch naming: feat/<topic>, fix/<topic>, ci/<topic>, docs/<topic>
git fetch origin develop
git checkout -b feat/my-feature origin/develop

Commit Messages

We follow Conventional Commits. Semantic-release uses these to determine version bumps automatically.

feat: add new feature           # minor version bump
fix: resolve bug in controller  # patch version bump
docs: update README
ci: add workflow for E2E tests
chore: update dependencies
refactor: simplify reconcile loop
test: add unit tests for helpers

Code Generation

After modifying CRD types in api/v1alpha1/:

make generate manifests

This regenerates CRD manifests, deepcopy methods, and copies CRDs into the Helm chart. Always commit the generated files. Run make check-manifests before opening a PR to verify nothing is out of date.

Project Structure

api/v1alpha1/              CRD type definitions
cmd/                       Entrypoints (operator, ENC, autosign, report, mock)
internal/controller/       Reconcilers
charts/                    Helm charts (openvox-operator, openvox-stack)
config/crd/bases/          Generated CRD manifests
tests/e2e/                 Chainsaw E2E tests
images/                    Containerfiles
docs/                      Documentation

Reporting Issues

License

By contributing, you agree that your contributions will be licensed under the Apache License 2.0.