Thank you for your interest in contributing to OpsPortal! This guide covers everything you need to get started.
Clone all repositories into a shared parent directory:
mkdir opsportal-dev && cd opsportal-dev
git clone https://github.com/polprog-tech/OpsPortal.git
git clone https://github.com/polprog-tech/ReleasePilot.git
git clone https://github.com/polprog-tech/ReleaseBoard.git
pip3 install -e "./ReleasePilot[all]"
pip3 install -e ./ReleaseBoard
pip3 install -e ./OpsPortalVerify the installation:
opsportal versioncd OpsPortal
cp scripts/pre-commit .git/hooks/pre-commit && chmod +x .git/hooks/pre-commitpytest # all tests
pytest -v # verbose
pytest tests/test_security.py # specific file
pytest tests/test_security.py::TestCSP # specific classTests follow the GIVEN/WHEN/THEN docstring pattern (see existing tests for examples).
ruff check src/ tests/Include: expected vs actual behavior, opsportal.yaml (redacted), Python/OS version, steps to reproduce.
- Branch from
main - Make changes + add tests
- Run
pytestandruff check src/ tests/ - Open PR with clear description
Conventional Commits: feat:, fix:, docs:, test:, refactor:, chore:
See LICENSE.