I’ve been toying with something like that on GitLab myself, to automatically push a Laravel site after building it in GitLab CI.
What I do there is prepare the application (install Composer dependencies, compile assets) in the CI pipeline, and then push the files over FTP. The command line program
lftp works quite well for this. However, the original sync takes multiple hours because Laravel is big, FTP is slow and lftp is single threaded.
This is the bash script / command I use for this: https://gitlab.com/snippets/1947298
I’m more of a GitLab fan than GitHub, but I can imagine that you could use GitHub Actions to build something similar.