Previously, an entry was written on how to Install Capistrano 3, on Debian. Here is an alternate, quicker way, of installing Capistrano using RVM, on any flavour of Linux – authored by Omar Tamer.
Final component of the Continuous Integration and Deployment process using Capistrano and Jenkins, is …Jenkins. Jenkins is an open source Continuous Integration services tool, that allows users to define a set of tasks to be run either manually, or triggered by 3rd party applications.
This, and the following entry, are the main focus of this tutorial. Here you will learn how to create a Capistrano project, recipe – for deploying your application code, run tests, stop and restart the NodeJS server; and maintain roles. The assumptions are that git, npm and NodeJS are already installed on target servers, and your code is hosted in a git repository.
Prior to creating Jenkins jobs and Capistrano recipes you should prepare NodeJS dependencies and scripts. This article does not provide in-depth details about NodeJS.
Installing Jenkins on Debian is a trivial task – a package is available, through aptitude, and default configuration is sufficient. This tutorial does not cover advanced security topics. By default, port 8080 is open and no authentication required – this poses a major security risk; thus if you rely solely on the instructions below, you should not expose your Jenkins server on an external network. Basic authentication instructions are provided. Root level access is required.
The practice of Continuous Integration ensures that code is constantly merged and tested, allowing a team of developers to share work and find issues early in the process. Continuous Deployment enables the business to constantly deliver features, capture customer feedback, and adjust accordingly. Various engineering practices facilitate the two: TDD, proper branching models, workflows and VCS best practices.
This series of entries provide a short tutorial on how to install Jenkins and Capistrano on a Debian machine; and how to integrate the two to continuously integrate and deploy NodeJS applications.