Skip to content

Contributing ​

Code of Conduct ​

All members of the project community must abide by the SAP Open Source Code of Conduct. Only by respecting each other can we develop a productive, collaborative community.

Engaging in Our Project ​

We use GitHub to manage reviews of pull requests.

  • If you are a new contributor, see Steps to Contribute.
  • Before implementing your change, create an issue describing the problem or enhancement. Note that you are willing to work on it.
  • The team will review the issue and decide whether it should be implemented as a pull request. If approved, they will assign the issue to you.

Steps to Contribute ​

Claim an issue first by commenting that you want to work on it — this prevents duplicated effort from multiple contributors.

If you have questions about an issue, comment on it and a maintainer will clarify.

Contributing Code or Documentation ​

Contributions must be licensed under the Apache 2.0 License.

Due to legal reasons, contributors must accept a Developer Certificate of Origin (DCO) when they create their first pull request. This is handled automatically during submission. SAP uses the standard DCO text of the Linux Foundation.

Commit Guidelines ​

  • Sign off all commits: git commit -s
  • Use type(scope): short description style (e.g. feat(controller): add dry-run support)
  • Do not add Co-authored-by trailers unless explicitly requested.

Development Setup ​

Prerequisites ​

  • Go 1.26+
  • make
  • Access to a Kubernetes cluster (or envtest for unit tests)

Running Tests ​

bash
# Download required Kubernetes binaries for envtest
make setup-envtest

# Create test.env with credentials (see below)
touch internal/controller/test.env

# Run controller integration tests
make controller-test

internal/controller/test.env fields:

VariableDescription
GITHUB_TOKENPAT with org-admin scope
GITHUB_INTEGRATION_IDGitHub App ID
GITHUB_CLIENT_IDGitHub App client ID
GITHUB_CLIENT_SECRETGitHub App client secret
GITHUB_PRIVATE_KEYGitHub App private key (PEM)
ORGANIZATIONTarget GitHub organization for testing

Code Quality ​

bash
make fmt        # Format code
make vet        # Static analysis
make lint       # golangci-lint
make build      # Compile manager binary

CRD Changes ​

After modifying any _types.go file:

bash
make manifests generate
make verify-manifests

E2E Tests ​

bash
make e2e            # Full flow: up + install + test (requires k3d)
make e2e-down       # Tear down k3d cluster
make e2e-github-cleanup  # Remove e2e-created teams via PAT

Issues and Planning ​

We follow a shared issue lifecycle across all cloudoperators repositories. See the Issue Lifecycle documentation for the full process.

Quick links:

Released under the Apache 2.0 License.