Background: Having used Jenkins in previous roles, I knew the power that it can give us for many aspects within the SDLC. Our main goals for using Jenkins were to speed up build and deployment into our staging environments, test code automatically, including integration tests, and provide added functionality with systems such as Sonarqube.
Goals: Accelerate development to improve our Air Quality System.
"Jenkins has made managing deployments and checking quality so much easier. It definitely ROCKS!"
Solution & Results: We now have Jenkins deployed within our secure cloud environment. It is currently running on one host, although we are going to be spinning up worker nodes very soon.
We’ve linked Jenkins with our Github repo, AWS account, and Sonarqube to provide a complete pipeline that tests, builds, and pushes code to our docker repository.
We’ve brought in AWS plugins, which give us access to AWS services via our keys, allowing us to push our code in a number of ways, either directly to beanstalk or as a docker container in ECR. And it’s all easily done with Jenkinsfiles and written with the plugins.
We have three environments within our cloud: two testing and one production. Our alpha testing environment is being continuously pushed to use Jenkins, furthering our capability to continuous integration and continuous deployment.
We’ve been able to separate build lines and produce multiple versions for all our products. It’s been so good, another team in our company is looking to use the same model for their stuff.
Key capabilities included:
The docker and AWS integration was a lifesaver with Jenkins. It’s really enabled us to streamline our deployment and has allowed us to use private repositories, which we can then use for deploying into our different environments.
The integration of Jenkins into Github with Jenkinsfiles was also a big plus as it allowed the developers to quickly set up CI for a new project without knowing how to navigate the Jenkins UI and work in the Groovy DSL, which we are accustomed to. This has dramatically improved how quickly we can set up projects and the speed of deployment.
The AWS plugin, which provides the 'withAWS' function in Jenkinsfile, has made key management and access management insanely easy and allows us to control through AWS IAM policies.
The code testing and build process has been a significant bonus to the development team, and we are now looking to further the deployment with automated tagging in our repository with Jenkins.
And we experienced great results:
Improved build quality, with fewer fails in QA
Improved test quality: developers are much more aware of test coverage
Development cycles take less time getting to QA