
La implementación continua es un enfoque especial en el desarrollo de software que se utiliza para implementar de manera rápida, segura y eficiente varias funciones en el software.
La idea principal es crear un proceso automatizado confiable que permita al desarrollador proporcionar rápidamente al usuario un producto terminado. Al mismo tiempo, se realizan cambios constantes en la producción; esto se denomina tubería de entrega continua (CD Pipeline).
Skillbox recomienda: Curso práctico "Mobile Developer PRO" .
Le recordamos: para todos los lectores de "Habr": un descuento de 10.000 rublos al registrarse en cualquier curso de Skillbox con el código de promoción "Habr".

Para controlar el flujo, puede utilizar una amplia gama de herramientas, entre las cuales hay tanto de pago como completamente gratis. Este artículo describe las tres soluciones más populares entre los desarrolladores que pueden ser útiles para todos los programadores.
Jenkins
Servidor de automatización de código abierto totalmente independiente. Vale la pena trabajar con él para automatizar todo tipo de tareas relacionadas con el ensamblaje, prueba, entrega o implementación de software.
Requisitos mínimos de PC:
- 256 MB de RAM, 1 GB de espacio de archivos.
Óptimo:
- 1 GB de RAM, 50 GB de espacio en el disco duro.
Para el trabajo, también necesitará software adicional: Java Runtime Environment (JRE) versión 8.
La arquitectura (computación distribuida) es la siguiente:

Jenkins Server: una instalación que se encarga del alojamiento de la GUI, así como de la organización y ejecución de todo el ensamblado.
Jenkins Node / Slave / Build Server: dispositivos que se pueden configurar para realizar trabajos de ensamblaje en nombre de Master (el nodo principal).
Instalación de LinuxPrimero debe agregar el repositorio de Jenkins al sistema:
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/jeActualizar el repositorio de paquetes:
sudo apt updateInstalar Jenkins:
sudo apt install jenkinsDespués de eso, Jenkins estará disponible en el sistema por defecto en el puerto 8080.
Para verificar la funcionalidad, abra la dirección
localhost : 8080 en el navegador. Luego, el sistema le pedirá que ingrese la contraseña inicial del usuario con derechos de root. Esta contraseña se encuentra en el archivo / var / lib / jenkins / secrets / initialAdminPassword.
Ahora todo está listo para funcionar, puede comenzar a crear secuencias de CI / CD. La interfaz gráfica del entorno de trabajo es la siguiente:


Fortalezas de Jenkins:
- escalabilidad proporcionada por la arquitectura Maestro / Esclavo;
- la presencia de REST XML / JSON API;
- la capacidad de conectar una gran cantidad de extensiones gracias a complementos;
- Una comunidad activa y en constante evolución.
Contras:
- falta de unidad analítica;
- Interfaz no muy conveniente.
Teamcity
Desarrollo comercial de JetBrains. El servidor es bueno para una configuración simple y una interfaz excelente. Hay una gran cantidad de funciones en la configuración predeterminada; la cantidad de complementos disponibles aumenta constantemente.
Este contenido requiere el Java Runtime Environment (JRE) versión 8.
Los requisitos del servidor para el hardware no son críticos:
- RAM: 3,2 GB;
- procesador - doble núcleo, 3.2 GHz;
- canal de comunicación con un ancho de banda de 1 Gb / s.
El servidor le permite lograr un alto rendimiento en el trabajo:
- 60 proyectos con 300 configuraciones de ensamblaje;
- asignación de 2 MB al registro de ensamblaje;
- 50 agentes de construcción;
- la capacidad de trabajar 50 usuarios en la versión web y 30 usuarios en el IDE;
- 100 conexiones SLE externas, generalmente Perforce y Subversion. El tiempo de cambio promedio es de 120 segundos;
- más de 150 modificaciones por día;
- trabajar con la base de datos en un servidor;
- Configuración del proceso del servidor JVM: -Xmx1100m -XX: MaxPermSize = 120m.
Los requisitos del agente se determinan ejecutando ensamblados. La tarea principal del servidor es rastrear todos los agentes conectados y distribuir ensamblajes de la cola entre estos agentes en función de los requisitos de compatibilidad, con los resultados informados. Los agentes tienen varias plataformas y sistemas operativos, además de un entorno preconfigurado.
Toda la información sobre los resultados del ensamblado se almacena en la base de datos. En primer lugar, este es el historial y otros datos similares, cambios de VCS, agentes, colas de compilación, cuentas y permisos de usuario. La base de datos no incluye solo registros de ensamblaje y artefactos.
Instalación de LinuxPara instalar TeamCity manualmente con el contenedor de servlets Tomcat, use el archivo TeamCity: TeamCity .tar.gz. Puedes descargarlo
desde aquí .
tar -xfz TeamCity.tar.gz
/ bin / runAll. sh [inicio | parada]
Al principio, debe seleccionar el tipo de base de datos en la que se almacenarán los datos del ensamblaje.

La configuración predeterminada se ejecuta en
localhost : 8111 / con un agente de compilación registrado que se ejecuta en la misma PC.
Fortalezas de TeamCity:
- configuración simple;
- interfaz conveniente;
- una gran cantidad de funciones incorporadas;
- servicio de soporte;
- Hay una API RESTful;
- buena documentación;
- Buena seguridad.
Contras:
- integración limitada;
- es una herramienta de pago;
- una comunidad pequeña (que, sin embargo, está creciendo).
Gocd
Un proyecto de código abierto que requiere Java Runtime Environment (JRE) versión 8 para instalar y ejecutar.
Requerimientos del sistema:
- RAM - 1 GB mínimo, mejor más;
- procesador - doble núcleo, con una frecuencia central de 2 GHz;
- Disco duro: al menos 1 GB de espacio libre.
Agente:
- RAM: al menos 128 MB, preferiblemente más;
- procesador: al menos 2 GHz.
El servidor proporciona agentes y proporciona una interfaz conveniente para el usuario:

Etapas / Trabajos / Tareas:
Instalación de Linuxecho "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 [inicio | detener | estado | reiniciar]
/etc/init.d/go-agent [inicio | detener | estado | reiniciar]Por defecto, GoCd se ejecuta en
localhost : 8153.
Fortalezas de GoCd:
- código abierto
- instalación y configuración simples;
- buena documentación;
- gran interfaz de usuario:

- Posibilidad de mostrar paso a paso la ruta de implementación de GoCD en una vista:

- Excelente visualización de la estructura del transportador:

- GoCD optimiza el flujo de trabajo de CD en los entornos de nube más populares, incluidos Docker, AWS;
- la herramienta hace posible corregir fallas en la tubería, para lo cual hay un seguimiento de cada cambio desde una confirmación hasta la implementación en modo en tiempo real.
Contras:
- se necesita al menos un agente;
- no hay consola para mostrar todas las tareas completadas;
- Para ejecutar cada comando, debe crear una tarea para la configuración de la tubería;
- para instalar el complemento, debe mover el archivo .jar a <go-server-location> / plugins / external y reiniciar el servidor;
- Comunidad relativamente pequeña.
Como conclusión
Estas son solo tres herramientas, de hecho, hay muchas más. Es difícil elegir, por lo que debe prestar atención a los aspectos adicionales.
El código fuente abierto de la herramienta permite comprender qué es, además es más rápido agregar nuevas funciones. Pero si algo no funciona, entonces debe confiar solo en usted y en la ayuda de la comunidad. Las herramientas pagas brindan soporte que a veces puede ser crítico.
Si la seguridad es lo más importante, debe trabajar con una herramienta local. Si no, elegir una solución SaaS es una buena opción.
Y el último: para garantizar un proceso verdaderamente efectivo de implementación continua, es necesario formular criterios, cuya especificidad permitirá reducir el rango de elección de las herramientas disponibles.
Skillbox recomienda: