Continuous Integration

Continuous integration (CI) is a software engineering practice in which isolated changes are immediately tested and reported on when they are added to a larger code base. Each check-in is then verified by an automated build, allowing teams to detect problems early. The goal of CI is to provide rapid feedback so that if a defect is introduced into the code base, it can be identified and corrected as soon as possible. By integrating regularly, you can detect errors quickly, and locate them more easily. The purpose is to find problems quickly, solve them and deliver more rapidly. CI is a best practice for software development and is guided by a set of key principles.

Continuous integration has evolved since its conception. It is certainly a buzzword du jour in software development today, but there are many misconceptions surrounding the topic.  Originally, a daily build was the standard. Now, the usual rule is for each team member to submit work on a daily and often multiple times per day and for a build to be conducted with each significant change.

When used properly, continuous integration provides various benefits, such as constant feedback on the status of the software. Because CI detects deficiencies early on in development, defects are typically smaller, less complex and easier to resolve.

Several best practices of CI include:

  • Staging builds
  • Build Automation
  • Automated Deployment
  • Self-Testing Builds
  • Maintain a single source repository
  • Testing in a Clone of Production
  • Keep the build fast
  • Committing code frequently
  • Using a dedicated integration build machine
  • Fast builds
  • Test in a clone of the production environment
  • Test Result Availability
  • Categorizing developer tests
  • Using continuous feedback mechanisms
  • Revision Control
  • Code Consolidation
  • Build Availability

Continuous Integration brings multiple benefits to your organization:

  • Say goodbye to long and tense integrations
  • Increase visibility which enables greater communication
  • Catch issues fast and nip them in the bud
  • Spend less time debugging and more time adding features
  • Proceed in the confidence you’re building on a solid foundation
  • Stop waiting to find out if your code’s going to work
  • Reduce integration problems allowing you to deliver software more rapidly

Continuous Deployment

Continuous Deployment is closely related to Continuous Integration and refers to the release into production of software that passes the automated tests. Continuous deployment is the next step of continuous delivery. By adopting both Continuous Integration and Continuous Deployment, you not only reduce risks and catch bugs quickly, but also move rapidly to working software. With low-risk releases, you can quickly adapt to business requirements and user needs. This allows for greater collaboration between ops and delivery, fuelling real change in your organisation, and turning your release process into a business advantage. Continuous deployment should be the goal of most companies that are not constrained by regulatory or other requirements.

Also read: Continuous Integration with Hudson-Selenium