Guidance supports online sales growth of its retail customers with high-quality and innovative commerce solutions built using DevOps practices and CloudBees Jenkins solutions
Improve the security, flexibility, and scalability of build and deployment processes across all projects for dozens of customers
Use the CloudBees Jenkins Platform to increase automation and standardize on CI and CD practices
» Hundreds of hours saved per project
» Quality improved by eliminating hard-to-detect bugs
» Market differentiation achieved
» CloudBees® Jenkins Platform™
Recently, Guidance has been building on its successful track record, laying the groundwork for a DevOps transformation by adopting continuous integration practices with the CloudBees Jenkins platform.
“CloudBees Jenkins acts as a hub at the center of our development, testing and hosting practices,” says Grig Gheorghiu, vice president of DevOps at Guidance.
“It has enabled Guidance to add more and more automated tests to our pipeline — including functional tests, static analysis, load tests, and security tests — throughout development and in production. Our clients look to us for best practices as well as for the quality and care we put into our work, and the level of testing that we can perform automatically for our clients with Jenkins is a significant differentiator for us.”
CHALLENGE: TRANSITION FROM SIMPLE DEPLOYMENT MANAGEMENT TO CI AND CD
For several years, Guidance had been using Capistrano and Webistrano to manage deployments for the numerous concurrent projects its teams were working on any given time. While these tools were adequate for a certain period of time, they were not well suited to support the transition to continuous integration (CI) and continuous delivery (CD) that Gheorghiu envisioned as VP of DevOps. “Webistrano is a deployment tool, not a continuous integration and delivery tool,” he notes. “Our objective was to standardize on a set of tools and best practices to ensure that we had repeatable processes for development, deployment, maintenance and monitoring. We wanted a solution that has a vibrant ecosystem and that is being actively developed and used by a large community of users.”
As it standardized on best practices and tools for CI and CD, Guidance sought increased automation while improving the security, flexibility and scalability of build and deployment processes. “We have several dozen projects running at the same time, each with its own requirements from the customer. As the head of DevOps, I am responsible for making sure that testing, deployment and all facets of development are automated as much as possible,” Gheorghiu explains. “From a security perspective, we need to isolate each project and assign permissions based on roles. With so many projects ongoing at once, we also need our infrastructure to be scalable and provide the flexibility to run a wide variety of tests in different environments.”
SOLUTION: STANDARDIZE AND AUTOMATE BUILD, TEST AND DEPLOYMENT PROCESSES
Guidance used the CloudBees Jenkins Platform – Enterprise Edition to formalize a consistent set of CI best practices and to automate build, test and deployment processes.
Gheorghiu and his team used CloudBees Jenkins Operations Center to streamline the set up process for their initial Jenkins infrastructure. “It’s nice to know that when we need to scale and add either new masters or new agent nodes we can do it easily through Jenkins Operations Center,” he notes.
To begin the transition to CI and CD, Guidance began using Jenkins on a single project and gradually extended its use across projects and environments. “We first started our transformation with the development environment and then added staging. When we saw that it was working well, we moved on to deploying to production,” says Gheorghiu.
The Guidance team used several plugins provided with the CloudBees Jenkins Platform to tailor their Jenkins deployment for enterprise use.
They used the Role-based Access Control (RBAC) plugin with the Folders plugin to securely manage access control to Jenkins jobs and keep each customer’s project separate from the others. “With Webistrano’s rudimentary access control, once we added a user added to a project, they could do whatever they wanted within that project including deploy,” says Gheorghiu. “With the Role-based Access Control plugin, we set up fine grained access rights based each an individual’s role. For example a project manager can see the results of tests, but they cannot modify or kick off jobs, because that’s not their responsibility. Tech leads, in contrast, can modify the jobs and run them, whereas developers can run them but not modify them. CloudBees support engineers helped us link Role-Based Access Control to our LDAP server.”
Guidance is using the Pipeline Plugin to better orchestrate sophisticated build pipelines for its three principle environments. “We have one pipeline for development, one for staging, and one for production,” says Gheorghiu. “For each of those pipelines, the tech leads decide which automated tests will be run. For example, we may not run load tests in development, or we may only run optimization tests in production.”
Guidance is applying its technical expertise to seamlessly integrate CloudBees Jenkins with other technologies. Gheorghiu’s group is integrating Docker into their CI pipeline to enable automated testing with a myriad of testing tools, including Selenium for functional tests, Gatling for load tests, Sitespeed.io for site optimization and performance tests, and PhantomJS for browser-based unit tests. “In our setup, we use Docker containers to execute jobs on our Jenkins master and agent nodes. So, when a tech lead wants to use a particular testing tool, we don’t need to worry about installing all the dependencies on every single slave and the master; instead we can just use a container. That’s a big win for us.”
In addition to tests, Guidance has automated numerous other manual tasks with Jenkins. “Any tool a developer runs from the command line can be automated by putting it inside our pipeline. Day-to-day tasks such as invalidating a cache, which previously required opening a ticket and waiting for someone on the Ops team to do, are now run through CloudBees Jenkins Platform, saving everybody time,” says Gheorghiu.
To date Guidance has transitioned about half of its ongoing projects to CloudBees Jenkins Platform, and all new projects use CI with CloudBees Jenkins as well.
As Guidance continues to adopt DevOps practices, CloudBees Jenkins is helping to bridge the gap that often separates development and operations teams. Gheorghiu concludes, “Our team collaborates very closely with all the tech leads on the development side and with the operations team. For the tech leads, Jenkins provides greater visibility into each project. And the operations team is excited about using Jenkins to add more automated testing in our production environment.”
Hundreds of hours saved per project.
“If we had a tester running Selenium tests manually it would take them a couple of hours per release,” says Gheorghiu. “Over the lifetime of a project we save tens or even hundreds of hours by using CloudBees Jenkins Platform to replace manual tests with automated tests.”
Quality improved by eliminating hard-to-detect bugs.
“Running extensive automated tests with CloudBees Jenkins Platform has enabled us to find bugs that we probably wouldn’t have found otherwise,” says Gheorghiu. “For example, our automated PhantomJS tests uncovered a subtle regression with social media buttons that a human tester wouldn’t typically notice. Our automated tests give us a higher comfort level that everything is working as it should.”
Market differentiation achieved.
“All of our customers want reliable websites and they want to know that the code has been tested as much as possible,” says Gheorghiu. “The battery of tests we run automatically is a way for Guidance to distinguish ourselves. With CloudBees Jenkins Platform, we can tell our customers, ‘Yes, of course we can do that for you,’ and offer services that are valuable and meaningful for our merchant clients.”