We automatically deploy to a dev server when merging a pull request. Then at the end of the sprint we deploy to an acceptance server to allow our client to test it. As soon as the client approves the changes we deploy to production.
We are very careful with when we deploy to production. We only deploy to production in mornings and not on Fridays. This way when things break we can quickly fix them.