Azure Devops, multiple on-prem environments, variables per environment
You can create a Release Pipeline with a stage for every environment.
On each stage you can copy files, etc. and run tests against the environment.
If the test/stage succeeds, the pipeline goes ahead to the next stage.
Between the stages, you can configure that an authorized person has to approve the next step.
The screenshot below is a release pipeline of one of my little side projects.