Posts

Showing posts from November, 2015

Types of CI Engines

Image
The CI engines are available in three flavours: On-premise, Hosted (cloud based) and hybrid CI engines. We'll have a look at each type of CI engine one by one. On-premise CI Engines On-premise engines can be deployed on corporate servers. Entire engine and the slaves are within corporate network, protected by firewalls. This type of setup is suitable for large corporations or security-obsessed institutions. Advantages : Being deployed on company servers, only one time charges for licenses/software need to be paid. It offers options of web interface as well as command line interface. It can work with public as well as private repositories. It also offer complete control over configuration and usage, as per requirements. Disadvantages : Being in-house, requires provisions for resources, maintenance and upgrades etc. Hosted CI Engines Cloud hosted engines are the CI engines provided by third party companies as a service, which provide all the infrastructure to be readil...

CI Engines

Image
We covered Continuous Distribution in the second part of this series. In this part, let's have a look at what CI engines typically offer. Typical features of CI engines Access to popular online code repositories Most of the engines support online code repositories like GitHub, BitBucket etc. along with traditional repositories based on CVS, SVN and mercurial. XML based build/distribution/deployment pipeline description They provide an easy mechanism to specify build specifics, generally in XML format. Build triggers, schedulers Build triggers and other notifications are generally provided using web-hooks so that when fresh code is checked in, a build is automatically triggered. More traditional build scheduling is also supported by most of the engines. Automated build and testing Build is started automatically once a code check-in is detected. Post a successful build, automated tests are started. Many engines also offer headless browser testing for the project which of...

Continuous Distribution and Deployment

Image
In previous post, we discussed about Continuous Integration, its evolution, CI best practices and the advantages it offers to the developer community as well as to the consumers. In this part, we will discuss Continuous Distribution and Deployment. Continuous distribution (a.k.a. delivery) can be defined as a practice of keeping code base deployable at any point by making sure application passes all automated tests and is ready to push into production or making package available for developers to download.   Once the production build is done and tested, the artifacts are ready for deployment. In case where the end product is a package (e.g. a tar archive or an executable), it is uploaded to a public repository where all stakeholders can then obtain it from that repository. In cloud computing scenario, the end product could be a service which can be deployed to cloud. These services then can be consumed by others. How to deliver these artifacts, how to deploy them, where ...