I agree with you so much, I even removed the push step and have Gitlab CI do it for me:
I'm using it to deploy my own site (which happens to be subscription, but that isn't required): https://metaluna.io/
How do you upload files without WebDAV? As far as I know, there's no API.
BTW I'm not sure if it still exists, but they had a lifetime supporter account, where you can get a lifetime subscription for $100 in Bitcoin. I got it to support the effort, though I don't really use it, but a bunch of Terabytes of bandwidth and 50 GB of hosting space won't go to waste.
This uses their official CLI RubyGem along with the token you can get through the web interface.