Enable Continuous Integration with DevOps
Modern agile development requires embracing the Continuous Integration (CI) process at the inception of development. The Continuous Integration process leverages DevOps skills to plan an automated software build, and test environment using tools like Jenkins. The benefit to companies in adopting Continuous Integration is a reliable and high-quality work-product all the time, and especially after every sprint and release milestone. Succeeding with Continuous Integration requires planning and automating various phases of software development. Zymr offers companies a solid Continuous Integration DevOps practice to build or enhance their CI process. Zymr leverages tools like Jenkins for Continous Integration extensively. Continuous Integration processes manage the full life-cycle of building software and testing in an automated fashion. Starting with source code, Continuous Integration process comprises: (a) Source Code control system (such as Github), (b) software branching process (such as GitFlow) (c) automated code review process (using tools like Gerrit, Code Collaborator), (d) software build automation (using tools like Jenkins, Maven), (e) automated code integrity testing (using tools like Coverity, SonarQube), (f) automated unit testing (using tools like xUnit, Protractor, Karma), (g) automated regression testing (using tools like Robot, Selenium, PyTest), and (f) automated DevOps testing (using Docker, Chef, Puppet).
Our Continuous Integration Practice
Planning the Continuous Integration Process
Companies that leverage the Continuous Integration pipeline strategy for their cloud applications can expect to control their software development lifecycle from the get go. Continuous Integration planning requires the standardization of software development norms, such as source code control system, protocol for branching, coding standards, build manifests, code review practice, unit testing, documentation, development environment, etc. A Continuous Delivery (CD) DevOps engine can be built using a Continuous Integration (CI) strategy that leverages automated build processes, using tools like Jenkins, and cleansing them through automated test environments, using tools like Robot, PyTest, Selenium, Appium, Protractor, Karma, etc. While CI automation is prefered, it is not a prerequisite for CD automation. Continuous Delivery planning starts with the goals of the cloud application, especially scalability, data security, performance, availability and costs. Use of public, private or hybrid cloud deployments can be planned based on many of these criteria. The result from this phase is a solid Continuous Delivery DevOps plan, and spikes to choose the right toolchain and processes.
Building the Continuous Integration Pipeline
Once a plan is in place, great emphasis should be laid on automating Continuous Integration Orchestration. Decisions should be made early to figure out if containers, like Docker, should be used. If so, it is wise to start using Docker as early as possible in dev and test environments, and developing standards and automated processes for software builds and software unit/system testing. Jenkins has become the de facto standard for Continuous Integration automation. Continuous Integration DevOps string a robust pipeline for automated software builds, running them through a series of code quality checkers and archiving the artifacts from this process for the next phase of Continuous Integration. The artifacts from build phase are now pushed to trigger automated build validation and various automated testing cycle – functional, user-acceptance, stress, performance, scalability, etc.
Feeding the Continuous Delivery Pipeline
Continuous Integration, if well designed and executed, lends itself beautifully to building a Continuous Delivery pipeline – known in the industry as CI/CD. Many of the same DevOps tools, like Jenkins, Docker, Chef, Puppet, Python, etc. can be used to push qualified build artifacts to test, staging or production environments. When the full CI/CD pipeline is automated, it makes it feasible to accelerate the build and deploy cycle for cloud applications. Many startups and large companies alike see business value in automating the full CI/CD pipeline.