3 Popular Continuous Deployment Tools

3 Popular Continuous Deployment Tools

Continuous Deployment (continuous deployment) is a special approach in software development, which is used to quickly, safely and efficiently implement various functions in software.

The main idea is to create a reliable automated process that allows the developer to quickly provide the user with a finished product. At the same time, constant changes are made to production - this is called the continuous delivery pipeline (CD Pipeline).

Skillbox recommends: Practical course "Mobile Developer PRO".

We remind you: for all readers of "Habr" - a discount of 10 rubles when enrolling in any Skillbox course using the "Habr" promotional code.

3 Popular Continuous Deployment Tools

To manage the flow, you can use a wide range of tools, among which there are both paid and completely free. This article describes three of the most popular solutions among developers that can be useful to every programmer.

Jenkins

Completely standalone and open source automation server. It is worth working with to automate all kinds of tasks related to building, testing, shipping or deploying software.

Minimum PC requirements:

  • 256 MB RAM, 1 GB file space.

Optimal:

  • 1 GB RAM, 50 GB hard drive.

To work, you will also need additional software - Java Runtime Environment (JRE) version 8.

The architecture (distributed computing) is as follows:
3 Popular Continuous Deployment Tools

Jenkins Server is the installation that is responsible for GUI hosting, as well as organizing and executing the entire build.

Jenkins Node/Slave/Build Server - devices that can be configured to perform build work on behalf of the Master (master node).

Installation for Linux

First you need to add the Jenkins repository to the system:

cd /tmp && wget -q -O - pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -echo 'deb pkg.jenkins.io/debian-stable binary/' | sudo tee -a /etc/apt/sources.list.d/je

Update package repository:

sudo apt update

Install Jenkins:

sudo apt install jenkins

After that, Jenkins will be available on the system on the default port 8080.

To check the performance, you need to open the address in the browser localhost:8080. Then the system will prompt you to enter the initial password of the user with root rights. This password is located in /var/lib/jenkins/secrets/initialAdminPassword.

Now everything is ready to go, you can start creating CI / CD flows. The graphical interface of the working environment looks like this:

3 Popular Continuous Deployment Tools

3 Popular Continuous Deployment Tools

Strengths of Jenkins:

  • scalability provided by the Master/Slave architecture;
  • availability of REST XML/JSON API;
  • the ability to connect a large number of extensions thanks to plugins;
  • active and constantly developing community.

Cons:

  • there is no analytical block;
  • not very user friendly interface.

teamcity

Commercial development from JetBrains. The server is good with a simple setup and a great interface. The default configuration has a large number of functions, the number of available plugins is constantly increasing.

Requires Java Runtime Environment (JRE) version 8.

Server hardware requirements are non-critical:

  • RAM - 3,2 GB;
  • processor - dual-core, 3,2 GHz;
  • communication channel with a bandwidth of 1 Gb / s.

The server allows you to achieve high performance in work:

  • 60 projects with 300 build configurations;
  • allocate 2 MB for the build log;
  • 50 build agents;
  • the ability to work 50 users in the web version and 30 users in the IDE;
  • 100 external VCS connections, typically Perforce and Subversion. The average change time is 120 seconds;
  • more than 150 modifications per day;
  • work with the database on one server;
  • JVM server process settings: -Xmx1100m -XX:MaxPermSize=120m.

Agent requirements are driven by running builds. The main task of the server is to keep track of all connected agents and distribute builds from the queue to these agents based on compatibility requirements, with the message of the results. Agents have a variety of platforms and operating systems, plus a pre-configured environment.

All information about the build results is stored in the database. First of all, this is history and other similar data, VCS changes, agents, build queues, user accounts and permissions. The base does not include only build logs and artifacts.

3 Popular Continuous Deployment Tools

Installation for Linux

To manually install TeamCity with the Tomcat servlet container, use the TeamCity archive: TeamCity .tar.gz. Download you can get it from here.

tar -xfz TeamCity.tar.gz

/bin/runAll. sh [start|stop]

At the first start, you need to select the type of database in which the assembly data will be stored.

3 Popular Continuous Deployment Tools

The default configuration works on localhost:8111/ with one registered build agent running on the same PC.

Strengths of TeamCity:

  • easy setup;
  • user-friendly interface;
  • a large number of built-in functions;
  • support;
  • there is a RESTful API;
  • good documentation;
  • good security.

Cons:

  • limited integration;
  • this is a paid tool;
  • a small community (which, however, is growing).

GoCD

An open source project that requires Java Runtime Environment (JRE) version 8 to install and run.

System requirements:

  • RAM - 1 GB minimum, more is better;
  • processor - dual-core, with a core frequency of 2 GHz;
  • hard drive - at least 1 GB of free space.

Agent:

  • RAM - at least 128 MB, more is better;
  • processor - at least 2 GHz.

The server provides the work of agents and provides a convenient interface for the user:

3 Popular Continuous Deployment Tools

Stages/Jobs/Tasks:

3 Popular Continuous Deployment Tools

Installation for Linux

echo "deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

curl download.gocd.org/GOCD-GPG-KEY.asc | sudo apt key add -
add-apt-repository ppa:openjdk-r/ppa

apt-get update

apt-get install -y openjdk-8-jre

apt-get install go-server

apt-get install go-agent

/etc/init.d/go-server [start|stop|status|restart]

/etc/init.d/go-agent [start|stop|status|restart]

By default, GoCd runs on localhost: 8153.

Strengths of GoCd:

  • open source;
  • simple installation and configuration;
  • good documentation;

  • great user interface:

3 Popular Continuous Deployment Tools

  • the ability to step-by-step display the GoCD deployment path in one view:

3 Popular Continuous Deployment Tools

  • excellent display of pipeline structure:

3 Popular Continuous Deployment Tools

  • GoCD optimizes the CD workflow in the most demanding cloud environments including Docker, AWS;
  • the tool provides the ability to fix faults in the pipeline, for which there is tracking of each change from commit to deployment in realtime mode.

Cons:

  • at least one agent is required;
  • there is no console to display all completed tasks;
  • to execute each command, you need to create one task for the pipeline configuration;
  • to install the plugin, you need to move the .jar file to /plugins/external and restart the server;
  • relatively small community.

As a conclusion

These are just three tools, in fact there are many more. It is difficult to choose, so be sure to pay attention to additional aspects.

The open source code of the tool makes it possible to understand what it is, plus add new features faster. But if something does not work, then you have to rely only on yourself and on the help of the community. Paid tools provide support that can be critical at times.

If security is most important, it's worth working with a local tool. If not, then choosing a SaaS solution is a good option.

And finally, in order to ensure a truly effective process of continuous deployment, it is necessary to form criteria, the specificity of which will make it possible to narrow the range of choice of available tools.

Skillbox recommends:

Source: habr.com

Add a comment