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

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

La implementación continua es un enfoque especial en el desarrollo de software que se utiliza para implementar de forma rápida, segura y eficiente diversas funciones en el software.

La idea principal es crear un proceso automatizado confiable que permita al desarrollador entregar rápidamente el producto terminado al usuario. Al mismo tiempo, se realizan cambios constantes en la producción; esto se denomina 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 rublos al inscribirse en cualquier curso de Skillbox utilizando el código promocional "Habr".

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

Para controlar el flujo, puede utilizar una amplia gama de herramientas, tanto de pago como completamente gratuitas. Este artículo describe tres de las soluciones más populares entre los desarrolladores que pueden resultar útiles para todos los programadores.

Jenkins

Servidor de automatización de código abierto totalmente autónomo. Vale la pena trabajar con él para automatizar todo tipo de tareas relacionadas con la creación, prueba, envío o implementación de software.

Requisitos mínimos de PC:

  • 256 MB de RAM, 1 GB de espacio para archivos.

Óptimamente:

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

Para trabajar, también necesitará software adicional: Java Runtime Environment (JRE) versión 8.

La arquitectura (computación distribuida) se ve así:
3 herramientas populares para organizar la implementación continua (Continuous Deployment)

Jenkins Server es una instalación que se encarga del alojamiento de la GUI, además de organizar y ejecutar toda la compilación.

Nodo/esclavo/servidor de compilación de Jenkins: dispositivos que se pueden configurar para realizar trabajos de compilación en nombre del maestro (nodo maestro).

Instalación para Linux

Primero necesitas 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 binario/' | sudo tee -a /etc/apt/sources.list.d/je

Actualizar el repositorio de paquetes:

sudo apt update

Instalar Jenkins:

sudo apto instalar jenkins

Después de esto, Jenkins estará disponible en el sistema a través del puerto predeterminado 8080.

Para verificar la funcionalidad, debe abrir la dirección en el navegador. localhost:8080. Luego, el sistema le pedirá que ingrese la contraseña inicial para el usuario root. Esta contraseña se encuentra en el archivo /var/lib/jenkins/secrets/initialAdminPassword.

Ahora que todo está listo, puede comenzar a crear flujos de CI/CD. La interfaz gráfica del banco de trabajo se ve así:

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

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

Fortalezas de Jenkins:

  • escalabilidad proporcionada por la arquitectura Maestro/Esclavo;
  • disponibilidad de API REST XML/JSON;
  • la posibilidad de conectar una gran cantidad de extensiones gracias a complementos;
  • Comunidad activa y en constante evolución.

Contras:

  • no hay bloque analítico;
  • Interfaz no muy fácil de usar.

TeamCity

Desarrollo comercial de JetBrains. El servidor es bueno con una configuración sencilla y una interfaz excelente. La configuración predeterminada tiene una gran cantidad de funciones y la cantidad de complementos disponibles aumenta constantemente.

Requiere Java Runtime Environment (JRE) versión 8.

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

  • RAM: 3,2 GB;
  • procesador: doble núcleo, 3,2 GHz;
  • Canal de comunicación con una capacidad de 1 Gb/s.

El servidor le permite lograr un alto rendimiento:

  • 60 proyectos con 300 configuraciones de construcción;
  • Asignación de 2 MB para registro de compilación;
  • 50 agentes de construcción;
  • la capacidad de trabajar con 50 usuarios en la versión web y 30 usuarios en el IDE;
  • 100 conexiones de VCS externos, normalmente Perforce y Subversion. El tiempo medio de cambio 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 basan en la ejecución de ensamblados. La tarea principal del servidor es monitorear todos los agentes conectados y distribuir ensamblajes en cola a estos agentes según los requisitos de compatibilidad, informando los resultados. Los agentes vienen en una variedad de 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. Principalmente se trata de historial y otros datos similares, cambios de VCS, agentes, colas de compilación, cuentas de usuario y permisos. La base de datos no incluye únicamente registros de compilación y artefactos.

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

Instalación para Linux

Para instalar TeamCity manualmente con un contenedor de servlet Tomcat, debe usar el archivo de TeamCity: TeamCity .tar.gz. Descargar puedes conseguirlo desde aquí.

tar -xfz TeamCity.tar.gz

/bin/runAll. sh [iniciar|parar]

Cuando comience por primera vez, debe seleccionar el tipo de base de datos en la que se almacenarán los datos del ensamblaje.

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

La configuración predeterminada se ejecuta en localhost:8111/ con un agente de compilación registrado ejecutándose en la misma PC.

Puntos fuertes de TeamCity:

  • configuración fácil;
  • interfaz fácil de usar;
  • una gran cantidad de funciones integradas;
  • apoyo;
  • hay una API RESTful;
  • buena documentación;
  • buena seguridad.

Contras:

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

GoCD

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

Requisitos del sistema:

  • RAM: mínimo 1 GB, más es mejor;
  • procesador: de 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, más es mejor;
  • procesador: al menos 2 GHz.

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

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

Etapas/Trabajos/Tareas:

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

Instalación para Linux

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

rizo descargar.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key agregar -
agregar-apt-repository ppa:openjdk-r/ppa

apt-get update

apt-get instalar -y openjdk-8-jre

apt-get instalar go-server

apt-get instalar go-agent

/etc/init.d/go-server [inicio|detener|estado|reiniciar]

/etc/init.d/go-agent [inicio|detener|estado|reiniciar]

De forma predeterminada, GoCd se ejecuta en localhost: 8153.

Puntos fuertes de GoCd:

  • fuente abierta;
  • instalación y configuración sencillas;
  • buena documentación;

  • Gran interfaz de usuario:

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

  • capacidad de mostrar la ruta de implementación de GoCD paso a paso en una sola vista:

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

  • Excelente visualización de la estructura de la tubería:

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

  • GoCD optimiza el flujo de trabajo de CD en los entornos de nube más populares, incluidos Docker, AWS;
  • la herramienta permite corregir problemas en proceso, para lo cual existe un seguimiento de cada cambio desde el compromiso hasta la implementación en tiempo real.

Contras:

  • se necesita al menos un agente;
  • no hay una consola para mostrar todas las tareas completadas;
  • para ejecutar cada comando, necesita crear una tarea para la configuración de la canalización;
  • Para instalar el complemento, debe mover el archivo .jar a /plugins/external y reinicie el servidor;
  • comunidad relativamente pequeña.

Como conclusión

Estas son sólo tres herramientas, de hecho hay muchas más. Es difícil elegir, por lo que definitivamente debes prestar atención a aspectos adicionales.

El código fuente abierto de la herramienta permite comprender qué es y agregar nuevas funciones más rápidamente. Pero si algo no funciona, entonces tendrás que confiar sólo en ti mismo y en la ayuda de la comunidad. Las herramientas pagas brindan soporte que a veces puede ser crítico.

Si la seguridad es su principal prioridad, vale la pena trabajar con una herramienta local. De lo contrario, elegir una solución SaaS es una buena opción.

Y, por último, para garantizar un proceso de implementación continua verdaderamente eficaz, es necesario crear criterios cuyas características específicas le permitan reducir la gama de herramientas disponibles.

Skillbox recomienda:

Fuente: habr.com

Añadir un comentario