3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

El Continuous Deployment (implementación continua) es un enfoque especial en el desarrollo de software que se aplica para la rápida, segura y efectiva integración de varias funciones en el software.

La idea principal es crear un proceso automatizado confiable que permita al desarrollador proporcionar rápidamente un producto terminado al usuario. A medida que se realizan cambios constantes en producción, esto se llama canal de entrega continua (CD Pipeline).

Skillbox recomienda: Curso práctico «Desarrollador Móvil PRO».

Recordamos: para todos los lectores de «Habr» — un descuento de 10,000 rublos al registrarse en cualquier curso de Skillbox usando el código promocional «Habr».

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

Para gestionar el flujo, se puede utilizar una amplia gama de herramientas, tanto de pago como totalmente gratuitas. Este artículo describe tres de las soluciones más populares entre los desarrolladores que pueden ser útiles para cada programador.

Jenkins

Un servidor de automatización completamente autónomo y de código abierto. Se recomienda para automatizar todo tipo de tareas relacionadas con la compilación, prueba, entrega o implementación de software.

Requisitos mínimos del PC:

  • 256 MB de RAM, 1 GB de espacio en disco.

Óptimo:

  • 1 GB de RAM, 50 GB en el disco duro.

También se necesitará un software adicional: Java Runtime Environment (JRE) versión 8.

La arquitectura (computación distribuida) se ve de la siguiente manera:
3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

Jenkins Server: instalación encargada del alojamiento de la GUI y de organizar y ejecutar toda la compilación.

Jenkins Node/Slave/Build Server: dispositivos que se pueden configurar para realizar tareas de compilación en nombre del Master (nodo principal).

Instalación para Linux

Primero, se 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/je

Actualizar el repositorio de paquetes:

sudo apt update

Instalar Jenkins:

sudo apt install jenkins

Después de esto, Jenkins estará disponible en el sistema en el puerto 8080 por defecto.

Para verificar su funcionamiento, abra en el navegador la dirección localhost:8080. Luego, el sistema solicitará 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, se puede comenzar a crear flujos de CI/CD. La interfaz gráfica del entorno de trabajo se ve de la siguiente manera:

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

Fortalezas de Jenkins:

  • escalabilidad proporcionada por la arquitectura Master/Slave;
  • disponibilidad de REST XML/JSON API;
  • capacidad de conectar un gran número de extensiones gracias a los plugins;
  • una comunidad activa y en constante desarrollo.

Desventajas:

  • falta de módulo analítico;
  • interfaz algo poco amigable.

TeamCity

Desarrollo comercial de JetBrains. El servidor es fácil de configurar y tiene una excelente interfaz. La configuración por defecto incluye una gran cantidad de funciones y el número de plugins disponibles está en constante aumento.

Se requiere Java Runtime Environment (JRE) versión 8.

Los requisitos del servidor de hardware no son críticos:

  • RAM — 3,2 GB;
  • procesador — de doble núcleo, 3,2 GHz;
  • canal de comunicación con un ancho de banda de 1 Gb/s.

El servidor permite alcanzar un alto rendimiento en el trabajo:

  • 60 proyectos con 300 configuraciones de compilaciones;
  • asignación de 2 MB para el registro de compilación;
  • 50 agentes de compilación;
  • posibilidad de trabajo de 50 usuarios en la versión web y 30 usuarios en IDE;
  • 100 conexiones externas a VCS, generalmente Perforce y Subversion. Tiempo medio de cambios — 120 segundos;
  • más de 150 modificaciones al día;
  • trabajo con base de datos en un solo servidor;
  • configuración del proceso del servidor JVM: -Xmx1100m -XX:MaxPermSize=120m.

Los requisitos del agente dependen de las compilaciones en ejecución. La tarea principal del servidor es monitorear todos los agentes conectados y distribuir las compilaciones de la cola a estos agentes en función de los requisitos de compatibilidad, informando los resultados. Los agentes tienen diversas plataformas y sistemas operativos, además de un entorno preconfigurado.

Toda la información sobre los resultados de la compilación se almacena en la base de datos. Esto incluye principalmente el historial y otros datos similares, cambios en VCS, agentes, colas de compilación, cuentas de usuarios y permisos. Solo los registros de compilación y artefactos no están incluidos en la base.

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

Instalación para Linux

Para la instalación manual de TeamCity con el contenedor de servlet Tomcat, se debe usar el archivo TeamCity: TeamCity .tar.gz. Descargar se puede obtener aquí.

tar -xfz TeamCity.tar.gz

/bin /runAll. sh [start|stop]

En el primer inicio, se debe seleccionar el tipo de base de datos donde se almacenarán los datos de compilación.

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

La configuración predeterminada funciona en localhost:8111/ con un agente de compilación registrado funcionando en la misma PC.

Puntos fuertes de TeamCity:

  • configuración sencilla;
  • interfaz amigable;
  • gran cantidad de funciones integradas;
  • servicio de soporte;
  • disponible RESTful API;
  • documentación decente;
  • buena seguridad.

Desventajas:

  • integración limitada;
  • es una herramienta de pago;
  • una pequeña comunidad (que, sin embargo, está creciendo).

GoCD

Proyecto de código abierto que requiere Java Runtime Environment (JRE) versión 8 para su instalación y funcionamiento.

Requisitos del sistema:

  • RAM — 1 GB como mínimo, mejor más;
  • procesador — de doble núcleo, con una frecuencia de núcleo de 2 GHz;
  • disco duro — al menos 1 GB de espacio libre.

Agente:

  • RAM — mínimo 128 MB, mejor más;
  • procesador — mínimo 2 GHz.

El servidor proporciona el funcionamiento de los agentes y ofrece una interfaz conveniente para el usuario:

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

Stages/Jobs/Tareas:

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

Instalación para 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]

Por defecto, GoCD funciona en localhost:8153.

Puntos fuertes de GoCD:

  • código abierto;
  • instalación y configuración sencillas;
  • buena documentación;

  • excelente interfaz de usuario:

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

  • visualización paso a paso del camino de implementación de GoCD en una sola vista:

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

  • gran representación de la estructura del pipeline:

3 herramientas populares para la organización de la implementación continua (Continuous Deployment)

  • GoCD optimiza el flujo de trabajo de CD en los entornos de nube más demandados, incluidos Docker, AWS;
  • la herramienta permite corregir fallos en el pipeline, con seguimiento de cada cambio desde el commit hasta la implementación en tiempo real.

Desventajas:

  • se necesita al menos un agente;
  • no hay consola para mostrar todas las tareas ejecutadas;
  • para ejecutar cada comando se necesita crear una tarea en la configuración del pipeline;
  • para instalar el plugin es necesario mover el archivo .jar a /plugins/external y reiniciar el servidor;
  • comunidad relativamente pequeña.

Como conclusión

Son solo tres herramientas, en realidad hay muchas más. Elegir es complicado, por lo que es esencial prestar atención a aspectos adicionales.

El código abierto de la herramienta permite entender de qué se trata, además de facilitar la adición rápida de nuevas funciones. Sin embargo, si algo no funciona, hay que confiar únicamente en uno mismo y en la comunidad. Las herramientas de pago ofrecen soporte, que a veces puede ser crucial.

Si la seguridad es lo más importante, es mejor trabajar con una herramienta local. Si no, elegir una solución SaaS es una buena alternativa.

Y por último: para asegurar un proceso de implementación continua verdaderamente efectivo, es necesario establecer criterios cuya especificidad permita reducir el rango de herramientas disponibles.

Skillbox recomienda:

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster