Background: Someone, long ago, copied a Capistrano script to move WordPress stuff around. That was how we handled "deployment" at my company when I arrived. It worked sometimes, but when it broke, no one really knew how to fix it.
Let's face it: not all developers are admins. Not all admins are developers. Fortunately for my colleagues at the company, I've been bloody everything. I needed a solution that was as simple and frictionless as possible.
Goals: Push-to-deploy! No more manual awfulness!
"Without Jenkins, I could have probably made due with `bash` and `cron` in the background of things. But with Jenkins, everything was faster and better than that ever could've been." John Crafton, Sr. Software Architect
Without Jenkins, I could have probably made due with `bash` and `cron` in the background of things. But with Jenkins, everything was faster and better than that ever could've been.
Solution & Results: Initially, I faced an uphill struggle: not much stock was put in the "process" at my company in those days. Things improved pretty quickly, fortunately, once I could demonstrate just how easy I could make things on the team with Jenkins in place.
Jenkins declarative pipelines and Blue Ocean saved the day in my case. The ability to write a standardized Jenkinsfile, minimally customized (but in an "company-standardized" way), along with the slick and accessible visualization (as opposed to the clunky old Jenkins interface I came up with) made adoption easy. Immediately-available, scriptable plugins for relevant stuff (GitHub, Sonarqube, Slack) made my job of creating a manageable and useful build ecosystem easy, too!
Now, we have probably 60% of the organization's web presence set up for "push-to-deploy," and I am a happy, happy admin. There's even a repository which serves as a template for PtD for all new projects (regardless of their composition: WordPress, Nunjucks, node.js... whatever!); With just five steps, you're deployed to dev (clone, run setup script, add Jenkins webhook, commit script result, push)!
We turned to Jenkins, with its declarative "infrastructure as code" pipelines. Much-easier-on-the-eyes Blue Ocean interface made adoption swift and (mostly) painless for the team. Now, whenever Jenkins hiccups, everyone is messaging me to "get the Butler back!" Once you know that life, who would ever manually deploy again?!
Just recently, I've added Sonarqube to the mix, delivering on my promise to increase code quality by turning the Butler into Mordak the Refuser (if you don't pass the Sonar Quality Gate test, anyway).
Huzzah for our results, too.