Thanks for your interest in contributing. This guide explains how to work with the repo and submit changes.
- Fork the repository on GitHub.
- Clone your fork and add the upstream remote:
git clone git@github.com:YOUR_USERNAME/models-as-a-service.git cd models-as-a-service git remote add upstream https://github.com/opendatahub-io/models-as-a-service.git - Create a branch from
mainfor your work:git fetch upstream git checkout -b your-feature upstream/main
- Prerequisites: OpenShift cluster (4.19.9+),
kubectl/oc, and for full deployment see README. - Deploy locally: Use the unified script as in the Quick start, e.g.
./scripts/deploy.sh --operator-type odh. - MaaS API (Go): See maas-api/README.md for Go toolchain,
maketargets, and local API development.
- Push your branch to your fork and open a pull request against
main. - Use semantic PR titles so CI can accept the PR. Format:
type: subject(subject not starting with a capital).- Allowed types:
feat,fix,docs,style,refactor,perf,test,build,ci,chore,revert. - Examples:
feat: add TLS option for deploy script,fix: correct sourceNamespace for Kuadrant subscription,docs: update quickstart. - Draft/WIP PRs can use the
draftorwiplabel to skip title validation.
- Allowed types:
- Keep changes focused and ensure CI passes (see below).
- Address review feedback from OWNERS; maintainers will approve and merge when ready.
This project follows a Stream-Lake-Ocean release model. Code flows from active development (main) through quality-gated branches (stable, rhoai) to the downstream RHOAI repository. See the full details in docs/release-strategy.md.
| Area | Purpose |
|---|---|
scripts/ |
Deployment and install scripts (e.g. deploy.sh, deployment-helpers.sh, install-dependencies.sh) |
deployment/ |
Kustomize manifests (base, overlays, networking, components) |
maas-api/ |
Go API service (keys, tokens, tiers); see maas-api/README.md |
docs/ |
User and admin documentation (MkDocs); online docs |
test/ |
E2E and billing/smoke tests |
.github/workflows/ |
CI (build, PR title validation, MaaS API lint/build) |
- PR title: Must follow semantic format (
type: subject, subject not starting with a capital). Usedraft/wiplabel to bypass. - Kustomize: Manifests under
deployment/are validated withscripts/ci/validate-manifests.sh(kustomize build). - MaaS API (on
maas-api/**changes): Lint (golangci-lint), tests (make test), and image build.
Workflows requiring owner approval: Some CI workflows (e.g. those that run on infrastructure or deploy) require approval from an OWNERS approver before they can run. If your PR’s workflows are blocked, ping an owner in the PR to request approval. Before asking, validate that the workflow would succeed by running the same steps locally where possible (for example, the Prow-style E2E script below).
Run locally before pushing:
- Kustomize:
./scripts/ci/validate-manifests.sh(from repo root; requires kustomize 5.7.x). - MaaS API: from
maas-api/, runmake lintandmake test. - Full E2E (Prow-style):
./test/e2e/scripts/prow_run_smoke_test.sh(from repo root; requires OpenShift cluster and cluster-admin).
New functionality should include tests. Add or extend tests to cover your changes—for example, unit tests in maas-api/ or test/, or E2E coverage where appropriate. This section will be expanded with more detailed testing guidelines.
- Source: docs/content/ (MkDocs structure; see docs/README.md).
- Build/docs CI: See
.github/workflows/docs.yml. - When changing behavior or flags, update the deployment guide or the README as appropriate.
- Open an issue on GitHub for bugs or feature ideas.
- Deployment issues: See the deployment guide and README.
- Reviewers/approvers: Listed in OWNERS.