Reinventing Quality

ERROR: Content Element with uid "6730" and type "dce_dceuid16" has no rendering definition!

Doing it Right - Using Docker Containers to Build Mature Jenkins CI Environment

I want to tell the audience about my latest practice on the project, and talk about the thing I have learned on using Docker to build Continuous Integration environment on Jenkins.
Docker is a popular buzz-word, but still it is stays in the shade for the big part of QA engineers and Software Developers. It explains with a little higher entry level for understanding, how this software and process (containerization) actually works. It is something that is hard to understand without trying it on your own.
I had plenty of time to try and use, and I have successfully implemented a working solution for our project. I suppose that most of the problems, that people usually encounter, would be similar to mine, so it would be a pleasure to talk about, how to actually starting using it right, and make profit for your project. Also QA Managers and Delivery Managers will know about plenty of benefits that Docker can deliver to your project.

Here are the benefits of Dockerized Jenkins that I have found:

  1. Scripted configuration with Jenkins and Jenkins plugins versioning.
  2. Versioning of Java, chrome and firefox browsers, maven, node.js, cucumber other runtime environment elements.
  3. All tests will run in fully isolated autonomous runtimes - should result in less false negatives bugs.
  4. Builds can run in new Jenkins slave(s) which will spin up in seconds and be always fresh and clean. - you don't have to find installation and version differences anymore while trying to identify an issue.
  5. Jenkins Master initial configuration can be rebuilt in a few minutes and the rest settings can be reconfigured fully in up to 30 min. from scratch (depending of the ability to recreate jobs settings from scripts) - ability to recreate everything from scratch if master config is lost\damaged\broken.
  6. All configuration would be saved in repo - everything is tracked.
  7. Saving server resources - docker env can run in single powerful node, and the images are usually tiny, also external slaves are not needed (except maybe only OSX at this time).
  8. Configuration files will allow to other team members recreate their local copies of Test\Development environment in minutes.

Ruslan Strazhnyk, Severalnines AB

I have more than 10 years of experience in IT area including 8 years in QA Automation. I am working as a contractor from Ukraine. My key experience is in scripting and automated testing, both front-end and back-end. I have good knowledge of networking and databases, expert level in Continuous Integration.
I have worked on the many companies/projects already some of them are: Cisco Ironport, Anoto Inc., Maven Research, nCryptedCloud, Indigitus, Solano CI.
I have worked with Cloud-based systems and projects, know a lot of good approaches for Test Automation that could be used almost on any project.

My current project is Severalnines AB, which is Swedish startup that allows to create various Database Clusters in a few minutes by a few clicks.
I am responsible for the QA on Severalnines, while also building set of automated e2e tests.
I also contribute to build-up of Continuous Integration and  Continuous Deployment on the project, using tools like Jenkins, DigitalOcean API and Docker.