Continuous Integration

From BC$ MobileTV Wiki
Revision as of 15:59, 21 September 2015 by Joe (Talk | contribs)

Jump to: navigation, search

Continuous Integration (commonly abbreviated CI) is the process of deploying, distributing, testing, updating, managing and monitoring versions of code running as a cohesive system.

Continuous Delivery

Continuous Delivery (CD) is a software engineering approach in which teams keep producing valuable software in short cycles and ensure that the software can be reliably released at any time. It is used in software development to automate and improve the process of software delivery. Techniques such as Automated Testing and Continuous Integration (CI) allow software to be developed to a high standard and easily packaged and deployed to test environments, resulting in the ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead. CD builds on CI by adding the regular deployments to production as part of the process, however CD is not a requirement of CI. CD as a software development technique was one of the assumptions of "extreme programming", but at an enterprise level has developed into a discipline of its own, with job descriptions for roles such as "Buildmaster" calling for CD skills as mandatory.


Containers in software engineering & deployment are like Intermodal Containers (i.e. ocean/sea shipping freight containers that can be lifted and stacked on top of one another safely & securely on a Boat, while also able to be pulled by Trucks or Trains due to adherance to particular standards) invented to simplify global trade, only, rather than hold physical objects, these Containers are designed to keep applications and their runtime components together. They accomplish this by combining lightweight application isolation with an "image"-based deployment method, providing autonomy for applications by packaging the apps with the libraries and other binaries on which they depend. This avoids conflicts between apps that otherwise rely on key components of the underlying host operating system.





Docker is essentially a Continuous Integration & Deployment (Delivery) solution designed for the Cloud and Distributed Systems. It differs from standard Virtualization and Provisioning solutions in that each virtualized application includes not only the application - which may be only 10s of MB - and the necessary binaries and libraries, but also an entire guest operating system - which may weigh 10s of GB; however, in Docker, the Docker Engine container comprises just the application and its dependencies. It runs as an isolated process in userspace on the host operating system, sharing the kernel with other containers. Thus, it enjoys the resource isolation and allocation benefits of VMs but is much more portable and efficient.




Travis CI

  • Travis CI: (Cloud-hosted Continuous Integration Software-As-A-Service; tight coupling & integration to GitHub)



Jenkins evolved from the creator (and much of the core team) of the Hudson project/community after the Oracle acquisition of Java. It is considered to be the next generation of Hudson, despite the fact that a faction of the original team stuck with Hudson or became Oracle employees and continue to support Hudson day-to-day. That said, Jenkins is quickly supplanting its parent project, with quicker development, more plugins and becoming recognized as the de facto Continuous Integration tool/service, especially for Enterprise Java projects.





Configuration Management



External Links


  1. Open Container Project -- How cloud giants are joining forces against lock-in and fragmentation:
  2. What’s in a container? You don’t know, and that’s a problem:
  3. :
  4. Enterprise Containers 101 with Red Hat platform architect, Langdon White:
  5. Docker Enterprise Adoption (INFOGRAPHIC):
  6. Docker and Its Challenges for Enterprise IT:
  7. Docker – Clean Up After Yourself!:
  8. Do I Need OpenStack If I Use Docker?:
  9. 5 Key Benefits of Docker -- CI, Version Control, Portability, Isolation and Security:
  10. Docker Security - More than Meets the Eye: (lots of security problems with user-contributed and even sample Docker container images)
  11. Docker and IBM Bluemix Containers Reference Sheet:
  12. Hudson downloads:
  13. Local Hudson deployment: http://localhost:8805 (typical deploy location)
  14. New version of JRebel for NetBeans Plugin 6.1.0:
  15. wikipedia: Chef (software)
  16. wikipedia: Puppet (software)

See Also

SVN | CVS | Testing | Maven | Ant | Agile | Cloud Computing