Times in software development are quickly changing. While in the past, software projects could take years, today an application can be built, deployed, and offered for sale in just a few months.
This new trend is possible thanks to concepts such as Continuous Integration and Continuous Deployment (CI/CD). These terms refer to the ability of automating all software development processes. Committing your code, building your application, testing the changes, and deploying them into production quickly is not magic: it is just the software development pipeline.
Automation and the ability to work in parallel by using an automation CI/CD tool such as Jenkins allow you to save a lot of time and avoid big breaking changes, so you can ensure the delivery of high-quality software.
Jenkins is an open source automation server that helps you automate the building, testing, and deployment of any project across multiple platforms. It can be extended with hundreds of plugins to better suit your needs. It also has a web interface from which you can easily manage your jobs.
Bitnami offers you a Jenkins cluster comprised by one master node and a configurable number of slaves, making it an essential piece of your deployment pipeline. Find it available in the Microsoft Azure Marketplace.
Think big, think cluster
Based on our experience in getting applications into production in a fast and reliable way, we have created a ready-to-use Jenkins cluster comprised of three nodes (one master and two slaves) to adapt large-scale software pipelines with simplicity.
The Bitnami Multi-Tier Solution for Jenkins uses multiple VMs to enable a Jenkins master to distribute workloads out to a configurable number of build slaves using the Jenkins Swarm plugin.
Let's take a look at which tasks the master manages and which tasks the slaves manage in a Jenkins cluster:
The Jenkins master server is responsible for:
- Scheduling build jobs.
- Distributing the builds among the slaves.
- Monitoring slave nodes.
- Collecting and displaying the builds' results.
The Jenkins slave servers can handle the following:
- Executing requests from the master.
- Creating a complete testing environment by having different operating systems in each node.
- Having a specific project that always runs on a particular slave.
In short, selecting a multi-tier solution has several advantages over a single virtual machine solution, such as:
- Having different build and testing environments for your builds.
- Handling heavy and large projects on a regular basis.
- Securing your main Jenkins node by having the jobs executed in slaves. If one of the slaves fails, jobs will be scheduled to a different slave.
Bitnami Jenkins cluster configuration
The Bitnami Multi-Tier Solution for Jenkins in Azure is endowed with a 3.5 RAM and 50 GB of disk space in each machine. It is composed of three virtual machines by default: one acting as master node and two as slave nodes.
As mentioned above, the number of slave nodes in the cluster is configurable. To add more nodes to the cluster, launch more servers either when deploying the solution or after the cluster is created. Having more slave machines in your cluster means not only better distributing the workloads and jobs, but also ensures fail tolerance on your deployment. If a slave node goes down, jobs will be scheduled to a different slave.
To add more slave nodes to the set default quantity, indicate this in the “Number of slave machines to create” section when creating the cluster. You can launch up to 32 slave nodes on Microsoft Azure:
To add new nodes once the cluster is running, follow these instructions and redeploy the solution to make the changes take effect.
On an initial startup of the Bitnami Multi-Tier Solution for Jenkins, you will also take the advantage of:
- Installing the latest version of Jenkins, including major security updates.
- Having the community most recommended plugins are already installed. When the instance is fully installed, it has many features available (e.g. pipelines, git integration, etc.). The plugins that are selected are downloaded upon installation, which means the latest version available in the Update Center is the one installed. Check the list here.
- Having a safe authentication method: an admin user is created. One random password is created per deployment.
Jenkins and Docker, a perfect match
The Bitnami Jenkins cluster, by default, includes the Docker plugin. Combining Jenkins and Docker will improve the speed and the coherence of your automation tasks, but you can also enjoy more advantages of this blend, because it:
- Allows you to test your containerized applications from the very beginning.
- Provides the possibility of building containers to run on Kubernetes.
- Gives more versatility in creating test environments: If you build your application and you want to test it in different platforms or operating systems such as RedHat or CentOS, you can do so by using a container instead of creating a node in your cluster to test it in each environment.
With all this in mind, Bitnami Jenkins Cluster is an excellent choice to deal with multiple concurrent jobs and heavy workloads, while at the same time, it is a safe way to test your applications before taking them to production.
Click “Follow” on the Bitnami Jenkins Stack page to be informed about all the improvements and enhancements we are adding to this solution!