Our system is all managed by Gitlab Premium.
Release when ready. Via CI/CD process. Code review from Dev, signoff (approval button on merge request) from Product via Gitlab Review Apps.
This can result in multiple releases a day.
No release branches - everything off main (a la trunkbaseddevelopment.com)