When I was originaly working on this there were very few options. CI/CD wasn't really a thing. We were all writing our own tools for the task. Now you have tools like Travis CI, Visual Studio Team Services, Jenkins, Gulp, and many many others I have no real need to be writing my own at this point :-). In fact this homepage has been developed using Gulp

I am working on a website release system based loosely on a system that we used to use on the first student run web server at my University.

The idea of this system is to allow someone to have a mirror of a live website to develop on rather than working directly with the live server. The Makelive system then provides you with the commands to upload completed files/directories/trees to the live server automatically. However it also ties in with source code control systems, allowing you to either automatically check in changes before uploading or refuse to upload until you do so, along with automatic tagging of the current revision as "LIVE". It is all OO Perl making use of CPAN modules such as VCS to allow the flexibility to the user of any source control system they wish (CVS/RCS/etc.) and Class Factory systems allowing you to configure which type of upload method you wish to use for a particular site, or even specific directory (FTP/SCP/cp/etc.). Most of the uploading and configuration system is in place, although its a little delayed by the fact that the VCS modules are still in early revisions themselves. I hope to be able to place all or perhaps part of the system on CPAN once it is complete.