This checklist is the repo source of truth for cutting a release.
Before bumping versions:
DoneDo not cut a release while release-blocking issues remain open.
Version markers that must stay aligned:
.envbackend/app/core/config.pybackend/app/__init__.pyfrontend/package.jsondocker-compose.ymlinstall-trishul-snmp-suite.shdocs/changelog.mdIf the release changes packaging or startup behavior, also review:
Dockerfiledocs/installation_guide.mddocs/development_setup.mddocs/migration_to_trishul_snmp_suite.mdAdd a new section to changelog.md with:
Run the full test suite from the repo root:
.venv/bin/python -m pytest backend/ -q
Expected result: the full backend suite passes. Do not pin release docs to a fixed pass count because the suite grows over time.
Run the backend coverage gate:
.venv/bin/python scripts/check_backend_coverage.py
Build the frontend and verify it compiles cleanly:
npm --prefix frontend run build
For packaging or deployment changes, also build and verify the container:
docker build -t trishul-snmp-suite-local:rc .
Before publish, validate these flows in a local runtime built from the release candidate:
Dashboard loads status and counters; live connection indicator stays onlineSimulator starts, serves a local walk target, appends live activity updatesWalk & Parse returns expected data from the local responderTraps starts a listener and records one received event live in the tableMIB Manager uploads a MIB file and reloads; status reflects the new moduleSettings save and metadata panels load correctly/api/meta, /api/health, and /docs respond correctly/api/ws accepts an authenticated connectionCreate a version tag on the release commit and push it to trigger the CI release workflow:
git tag v<VERSION> <commit-sha>
git push origin v<VERSION>
HEAD if HEAD has moved past it..github/workflows/release.yml will create the GitHub release automatically once the tag is pushed.Image publishing is automatic. After the release commit is pushed to main,
GitHub Actions runs .github/workflows/ghcr-publish.yml and publishes:
ghcr.io/<owner>/trishul-snmp-suite:latestghcr.io/<owner>/trishul-snmp-suite:${APP_VERSION}Multi-architecture manifest for linux/amd64 and linux/arm64.
Before calling the release complete, verify the workflow run succeeded and the expected tags are available.
Before shipping a public cut:
install-trishul-snmp-suite.sh up on a clean hostup-local from a local checkoutAfter the publish completes:
/api/meta returns the release versionSettings metadata show the same version