Here's a little direct product endorsement for ya: I literally use Buddy for deployment on all my projects.
Buddy isn't just a deployment tool, we'll get to that, but it's something that Buddy does very well and definitely a reason you might look at picking it up yourself if you're looking around for a reliable, high-quality deployment service.
Here's my current setup:
- CSS-Tricks is WordPress site.
- The whole
wp-contentfolder is a private repository on GitHub.
- The hosting is on Flywheel, which gives me SFTP access to the server.
- When I push to the Master branch, Buddy automatically deploys the changed files over SFTP. This is fast because the fact it's only dealing with changed files.
The setup on Buddy for this is incredibly nice and simple and I've never once had any problems with it. You may want to look at zero-downtime deployments as well, where files are uploaded to a separate directory first and swapped out with the destination directories if the entire upload is successful.
And I don't just use this setup for CSS-Tricks but all my sites that need this kind of deployment.
But like I said, Buddy isn't just deployment. Buddy is all about pipelines. You (visually) configure a bunch of tasks that you want Buddy to do for you and the trigger that kicks it off. Pushing to Master is just one possible trigger, you can also kick them off manually or on a timer.
What tasks? Well, a common one would be running your tests. You know: Continuous Integration (CI) and Continuous Deployment (CD). You can tell Buddy to run whatever terminal commands you want (they'll spin up a Docker container for you), so however you run tests and get output will work just fine.
You could have it shoot you an email, hit some other web service, or run a build process.
Here's the actual tasks I run in my pipeline right now:
- Upload the files over SFTP
- Tell Cloudflare to purge all the cache on the site
- Send a message to a particular channel on Slack (also do that on failure)
It's so easy to set up it almost encourages doing more with your pipelines. I need to get some Cypress tests in there and I'd love to integrate an action to automatically optimize all images in the commits.