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.
Capistrano provides server automation; by running a set of predefined scripts on remote servers. Puppet is a tool providing configuration management, provisioning and reporting. Puppet Enterprise extends Puppet by adding application deployment. Below is a quick introduction to what Puppet is, how is used and links to tutorials.
In my previous six entries, I focused on presenting the main Agile methodologies, and their concepts. In the following entries, I will focus on tools that enable Agile; providing a quick introduction without going in technical details. The first tool in this series is Capistrano.