If your concern is that the same code should be deployed to multiple environments, I suggest to create a Azure DevOps Pipeline with multiple stages, one each to deploy to Development, Staging and Production environments.
When a commit is done to the release branch, the Pipeline will stick to the commit for its lifetime i.e. while performing a Build and Deployment in each Stage. So, you can be rest assured that the same code is going to all environments.
Bottom line: Build will run for Deployment to each Environment so that a new value of the Environment Variable is picked up. Using Variable Groups is what I would recommend. However, since the Pipeline is attached to the commit, each of these Environment-Builds will Build using the same Source Code / Commit.