software - jenkins tutorial pdf español
¿Ansible es un reemplazo para una herramienta de CI como Hudson/Jenkins? (2)
Recientemente, en nuestra empresa, decidimos utilizar Ansible para el despliegue y la integración continua. Pero cuando comencé a usar Ansible, no encontré módulos para construir proyectos Java con Maven, o módulos para ejecutar pruebas JUnit, o pruebas JMeter.
Entonces, estoy en un estado dudoso: puede ser que esté usando Ansible de una manera incorrecta.
Cuando miré a Jenkins, puede hacer cosas como construir, ejecutar pruebas, implementar. Lo que falta en Hudson es crear / eliminar una instancia en entornos de nube como AWS.
Entonces, en general, ¿con qué fines debemos usar Ansible / Jenkins? Para CI, ¿necesito usar una combinación de Ansible y Jenkins?
Por favor, arroja algo de luz sobre el uso correcto de Ansible.
Ansible es solo un "lazo glorificado de SSH". CI no es solo el software en ejecución, sino el proceso completo de cómo se manejan el éxito y el fracaso, quién recibe la notificación y cómo se fusiona el cambio con el control de la versión de destino.
Si solo nos enfocamos en el software, CI es un disparador reactivo del programador mediante cambios de código y desencadena la típica secuencia de compilación-validación-liberación-implementación de "pasos".
Por lo tanto, con respecto al software, Ansible sin "eliminación de azúcar" adicional es solo un conjunto de herramientas para ejecutar cosas, que pueden ser esos mismos pasos, pero no es CI. El Ansible (sin torre) carece totalmente de esta naturaleza reactiva.
Si desea casarse con Ansible con CI, puede hacerlo.
Ansible Tower es un planificador orientado a Ansible, pero si necesita un software de CI, creo que no necesariamente lo necesita. Cualquier aplicación de CI capaz de ejecutar script de shell podría lanzar libros de jugadas de Ansible.
Sin embargo, a diferencia de la torre Ansible, las herramientas de CI saben mostrar informes de pruebas de todos los marcos de prueba, notificaciones de activación, etc.
La torre Ansible puede tener sentido en un entorno complejo con muchos grupos tocando el código Ansible ... La verdad es que no he visto una sola razón real para pagarlo. Pero si a un gerente le gusta la interfaz web, nada puede soportar la lógica "pero otros lo usan".
Sospecho que el concepto de torre Ansible fue en respuesta a la empresa títere.
:)
Primero, Jenkins y Hudson son básicamente el mismo proyecto. Me referiré a él como Jenkins a continuación. Vea ¿Cómo elegir entre Hudson y Jenkins? , Hudson vs Jenkins en 2012 , y ¿Cuál es la diferencia más notable entre Jenkins y Hudson desde una perspectiva de usuario? para más.
En segundo lugar, Ansible no pretende ser un motor de integración continua. En general, no sondea los repositorios git y ejecuta compilaciones que fallan de una manera sensata.
¿Cuándo puedo simplemente usar Jenkins?
Si el entorno de su máquina y el proceso de implementación es muy sencillo (como Heroku o Iron que está configurado fuera de su equipo), Jenkins puede ser suficiente. Puede escribir un script personalizado que realice una implementación como el último paso de compilación (o un paso encadenado).
¿Cuándo puedo simplemente usar Ansible?
Si solo necesita "implementar" sin necesidad de construir / probar, Ansible podría ser suficiente. Por ejemplo, puede ejecutar una implementación desde la línea de comando o usando Ansible Tower. Esto es ideal para proyectos pequeños, sitios estáticos, etc.
Como trabajan juntos?
Una buena combinación es usar Jenkins para construir, probar y guardar artefactos. Agregue un paso para llamar a Ansible o Ansible Tower para manejar el proceso de implementación real. Eso le permite a Ansible manejar la configuración de la máquina y le permite a Jenkins manejar el proceso de CI.
¿Cuáles son las alternativas a Jenkins?
Recomiendo encarecidamente Thoughtworks Go (no confundir con Go the language) en lugar de Jenkins. Otros incluyen CruiseControl, TravisCI e Integrity.