Thank you for your interest in contributing to HyperShift! HyperShift enables running multiple OpenShift control planes as lightweight, cost-effective hosted clusters. Your contributions help improve this critical infrastructure technology.
The following guidelines will help ensure a smooth contribution process for both contributors and maintainers.
-
Keep changes focused: Scope commits to one thing and keep them minimal. Separate refactoring from logic changes, and save additional improvements for separate PRs.
-
Test your changes: Run
make pre-committo update dependencies, build code, verify formatting, and run tests. This prevents CI failures on your PR. -
Review before submitting: Look at your changes from a reviewer's perspective and explain anything that might not be immediately clear in your PR description.
-
Use proper commit format:
- Write commit subjects in imperative mood (e.g., "Fix bug" not "Fixed bug")
- Follow conventional commit format and include "Why" and "How" in commit messages
Tip: Install pre-commit hooks
Install
pre-committo automatically catch issues before committing. This helps catch spelling mistakes, formatting issues, and test failures early in your development process.
-
For small changes (under 200 lines): Create your change and submit a pull request directly.
-
For larger changes (200+ lines): Get feedback on your approach first by opening a GitHub issue or posting in the #project-hypershift Slack channel. This prevents situations where large changes get declined after significant work.
-
Write a clear PR title: Prefix with your Jira ticket number (e.g., "OCPBUGS-12345: Fix memory leak in controller"). See example PR.
-
Explain the value: Always describe how your change improves the project in the PR description.
This project uses Prow and GitHub Actions for CI. Lightweight checks (linting, unit tests, verification) run automatically on pushes and pull requests. E2E tests that consume real cloud infrastructure only run after a reviewer grants /lgtm, to avoid unnecessary resource usage on work-in-progress PRs.
Adding CI targets: When you add a new make target to verify-parallel or any other CI-facing Makefile target, you must also add it to the corresponding GitHub Actions workflow (e.g., .github/workflows/verify-reusable.yaml for verify targets, or as a new "reusable" target). GitHub Actions provide fast feedback on PRs; Prow runs heavier e2e tests. Targets that only exist in the Makefile without a matching GH Actions step will not run in CI.
See hack/github-actions-runner/README.md for details.
Useful Prow commands:
/test <job-name>- Run a specific CI job/test all- Run all CI jobs/retest- Re-run failed CI jobs/retest-required- Re-run failed required CI jobs/pipeline required- Trigger all second-phase CI jobs (e2e tests gated behind/lgtm)/label tide/merge-method-squash- Squash commits on merge (useful for PRs with multiple related commits)
approved- From an approver via/approvelgtm- From a reviewer via/lgtmjira/valid-reference- PR title contains a valid Jira ticket reference (or NO-JIRA if no associated issue) Note: NO-JIRA should be used sparingly. Please have a Jira issue associated with your PR whenever possible.area/*- Area label (e.g.,area/documentation,area/control-plane)verified- QA verification passed (for more information refer to the documentation)
Conditionally required:
jira/valid-bug- Required for bug fixesbackport-risk-assessed- Required for backports
Note: Release Information
This repository contains code for both the HyperShift Operator and Control Plane Operator (part of OCP payload), which may have different release cadences.
After using /auto-cc to assign reviewers and /assign for approvers, you have complete autonomy to adjust these assignments as needed. You are responsible for ensuring your PR has appropriate reviewers and an approver.
Once reviewers and approvers are correctly assigned, they become responsible for the review and approval process:
- Reviewers are expected to review the PR or hand it over to another reviewer if unable to do so (using
/un-ccthemselves and/cca replacement) - Approvers are expected to eventually approve the PR (using
/approve) or reassign to another approver if unable (using/unassignthemselves and/assigna replacement) - Using holds: Both reviewers and approvers can use
/lgtmor/approvetogether with/holdto transparently set a blocking condition for merging while already approving. For example:/hold until open discussion is resolved. Anyone can/unholdwhen ready.
Use these Prow commands to manage assignments:
- Adjusting reviewers: Use
/un-cc @reviewerto remove unsuitable reviewers, then run/auto-ccagain for new suggestions - Adjusting approvers: Use
/unassign @approverto remove and/assign @approverto add approvers
Common scenarios:
-
Auto-assigned reviewers are not suitable:
- Use
/un-cc @reviewerto remove them - Run
/auto-ccagain for different suggestions
- Use
-
Approver was also selected as reviewer:
- Use
/un-cc @approverto remove the approver from reviewers - Run
/auto-ccagain to get additional reviewers
- Use
-
Need to change the approver:
- Use
/unassign @current-approver - Use
/assign @new-approver
- Use
Remember: If the openshift-ci assistant assigns unsuitable reviewers or approvers, don't hesitate to adjust the assignments. Being proactive helps ensure your PR gets timely and appropriate review.
The HyperShift team operates an Agentic Software Development Life Cycle (ASDLC) that integrates AI agents into the development workflow. Agents can assist with issue analysis, implementation, code review, and CI triage using reusable skills and knowledge bases.
See docs/content/how-to/agentic-sdlc.md for the full framework, available building blocks, and how to use them in your workflow.