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.