Well I am using most of the time mina deploy or capistrano. Mina is pretty simple so I guess capistrano would fit better for you.
There are several recipies for capistrano, so you can make complex deploy and build tasks.
I am using it for several wordpress projects. It checks out the repository, make a new version, run composer install, npm install, gulp build and even db sync over wp:cli .
You can also include some kind of CI like travis-ci, CircleCi etc.
So you can make something like
before 'deploy' do
ci.verify
end
it will run the tests and if successfull deploy to your vps, run the build steps etc.