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.