Hello @NAllred91 and thanks so much for your patience!
Your workflow as described isn’t easily possible today - you’d have to download a copy of your deploy and reupload it. It’s not easy to download a copy of the deploy directly and reliably without making quite a few API calls, and dealing with rate limits, and you basically wouldn’t want to do that in our CI. Maybe if you ran your own server and you didn’t mind a deploy taking Quite A While Even Though No Build Was Needed, you could do it, but there’s a better way!
Instead of using 3 sites, use one, and configure it like this:
- use our branch subdomains feature as explained here - this serves staging.example.com for you: [Support Guide] How to use Netlify’s branch deploy feature without Netlify DNS
- set the site’s production branch to a nonexistent one. I can do this for you if you have trouble doing it in our UI (it will be moderately complex to do this; I can talk you through it if you really want to but I can flip a single switch to change your production branchname to NOTACTUALLYUSED or something like that with 0 effort).
- Then, you can see your master branch as “master.example.com” using that same branch subdomain functionality
- Use our API (see details on usage to publish (at your production URL), one of the “pre-prod” builds. You’ll use this API call: https://open-api.netlify.com/#operation/restoreSiteDeploy . Note you can do this to ANY deploy from ANY branch on a site - doesn’t have to be the production branch, doesn’t even have to be a branch build - could be a PR build or something.
This isn’t what you asked for - but you came with a solution, so hopefully my alternative solution, achievable today, solves your problem ok If not, let me know why not and maybe I can help work around that!