One other option is the use of gates on Azure release pipelines. Here, it is possible to specify one or more conditions that have to be met before a release is allowed to be deployed to a specific environment. Gates can also be part of an extension, such as the SonarCloud extension that has been discussed before.
Gates can be added by selecting any stage in a release pipeline and editing the pre-deployment conditions. After enabling gates, one or more gates can be added. The following screenshot of a release pipeline shows how to disallow the deployment of any build of insufficient quality to an environment:
The use of deployment approves and gates are not mutually exclusive, so a mix of both can be used.