Jenkins es un servidor de automatización de código abierto y gratuito . Ayuda a automatizar las partes del desarrollo de software relacionadas con la construcción , las pruebas y la implementación , lo que facilita la integración y la entrega continuas . Es un sistema basado en servidor que se ejecuta en contenedores de servlets como Apache Tomcat . Admite herramientas de control de versiones , incluidas AccuRev , CVS , Subversion , Git , Mercurial , Perforce , ClearCasey RTC , y puede ejecutar proyectos basados en Apache Ant , Apache Maven y sbt , así como scripts de shell arbitrarios y comandos por lotes de Windows .
Autor (es) original (es) | Kohsuke Kawaguchi [1] |
---|---|
Versión inicial | 2 de febrero de 2011 [2] |
Lanzamiento estable | 2.281 [3] / 6 de marzo de 2021 |
Repositorio | |
Escrito en | Java |
Plataforma | Java 8 , Java 11 |
Tipo | Entrega continua |
Licencia | Licencia MIT [4] [5] |
Sitio web | www |
Historia
El proyecto Jenkins originalmente se llamaba Hudson , y fue renombrado después de una disputa con Oracle , que había bifurcado el proyecto y reclamado derechos sobre el nombre del proyecto. La bifurcación de Oracle, Hudson , continuó desarrollándose durante un tiempo antes de ser donada a la Fundación Eclipse . Hudson de Oracle ya no se mantiene [6] [7] y se anunció como obsoleto en febrero de 2017. [8]
Alrededor de 2007, Hudson se hizo conocido como una mejor alternativa al control de crucero y otros servidores de compilación de código abierto. [1] [9] En la conferencia JavaOne de mayo de 2008, el software ganó el premio Duke's Choice Award en la categoría Developer Solutions. [10]
Durante noviembre de 2010, luego de la adquisición de Sun Microsystems por parte de Oracle , surgió un problema en la comunidad de Hudson con respecto a la infraestructura utilizada, que creció hasta abarcar cuestiones sobre la administración y el control de Oracle. [11] Se llevaron a cabo negociaciones entre los principales contribuyentes del proyecto y Oracle, y aunque hubo muchas áreas de acuerdo, un punto clave fue el nombre de marca registrada "Hudson", después de que Oracle reclamó el derecho al nombre y solicitó una marca comercial en diciembre de 2010. Como resultado, el 11 de enero de 2011, se hizo un llamado a votación para cambiar el nombre del proyecto de "Hudson" a "Jenkins". La propuesta fue aprobada por mayoría abrumadora por votación de la comunidad el 29 de enero de 2011, creando el proyecto Jenkins. [12]
El 1 de febrero de 2011, Oracle dijo que tenía la intención de continuar con el desarrollo de Hudson y consideró a Jenkins una bifurcación en lugar de un cambio de nombre. Por lo tanto, Jenkins y Hudson continuaron como dos proyectos independientes, [13] cada uno afirmando que el otro es la bifurcación. En junio de 2019, la organización Jenkins en GitHub tenía 667 miembros del proyecto y alrededor de 2200 repositorios públicos, [14] en comparación con los 28 miembros del proyecto y los 20 repositorios públicos de Hudson con la última actualización en 2016. [15]
En 2011, el creador Kohsuke Kawaguchi recibió un premio O'Reilly Open Source por su trabajo en el proyecto Hudson / Jenkins. [dieciséis]
El 20 de abril de 2016 se lanzó la versión 2 con el complemento Pipeline habilitado de forma predeterminada. [17] El complemento permite escribir instrucciones de construcción utilizando un lenguaje específico de dominio basado en Apache Groovy .
Jenkins reemplazó a Hudson desde el 8 de febrero de 2017 en Eclipse. [8]
En marzo de 2018 , se presentó públicamente el proyecto de software Jenkins X para Kubernetes , [18] con soporte para diferentes proveedores de nube, incluido AWS EKS, entre otros. [19]
Construye
Las compilaciones se pueden activar por varios medios, por ejemplo:
- un webhook que se activa al enviar confirmaciones en un sistema de control de versiones
- programación a través de un mecanismo similar a cron
- solicitando una URL de compilación específica .
- después de que las otras compilaciones en la cola se hayan completado
- invocado por otras compilaciones
Complementos
Se han lanzado complementos para Jenkins que extienden su uso a proyectos escritos en lenguajes distintos de Java . Hay complementos disponibles para integrar Jenkins con la mayoría de los sistemas de control de versiones y bases de datos de errores. Muchas herramientas de compilación son compatibles a través de sus respectivos complementos. Los complementos también pueden cambiar la apariencia de Jenkins o agregar nuevas funciones. Hay un conjunto de complementos dedicados a las pruebas unitarias que generan informes de prueba en varios formatos (por ejemplo, JUnit incluido con Jenkins, MSTest , NUnit , etc. [20] ) y pruebas automatizadas que admiten pruebas automatizadas. Las compilaciones pueden generar informes de prueba en varios formatos compatibles con complementos (el soporte JUnit está incluido actualmente) y Jenkins puede mostrar los informes y generar tendencias y representarlos en la GUI.
Remitente
Permite configurar notificaciones por correo electrónico para los resultados de la compilación. [21] Jenkins enviará correos electrónicos a los destinatarios especificados cada vez que ocurra un evento importante, como:
- Construcción fallida.
- Construcción inestable.
- Construcción exitosa después de una construcción fallida, lo que indica que la crisis ha terminado
- Construcción inestable después de una exitosa, lo que indica que hay una regresión
Cartas credenciales
Permite almacenar credenciales en Jenkins. Proporciona una API estandarizada para que otros complementos almacenen y recuperen diferentes tipos de credenciales. [22]
Supervisión de trabajos externos
Agrega la capacidad de monitorear el resultado de trabajos ejecutados externamente. [23]
Agentes SSH
Este complemento permite administrar agentes (antes conocidos como esclavos) [24] que se ejecutan en máquinas * nix a través de SSH. [25] Agrega un nuevo tipo de método de lanzamiento de agentes. Este método de lanzamiento
- Abra una conexión SSH al host especificado como el nombre de usuario especificado,
- Verifique la versión predeterminada de Java para ese usuario,
- [aún no implementado] Si la versión predeterminada no es compatible con agent.jar de Jenkins , intente encontrar una versión adecuada de Java
- Una vez que tenga una versión adecuada de Java, copie la última agent.jar a través de SFTP ( recurriendo a scp si SFTP no está disponible),
- Inicie el proceso del agente.
Javadoc
Este complemento agrega compatibilidad con Javadoc a Jenkins. Esta funcionalidad solía ser parte del núcleo, pero a partir de Jenkins 1.431, se dividió en complementos separados. [26]
El complemento permite la selección de "Publicar Javadoc" como una acción posterior a la compilación, especificando el directorio donde se recopilará el Javadoc y si se espera retención para cada compilación exitosa. [27]
Explicación en línea
Jenkins se puede usar para programar y monitorear la ejecución de un script de shell a través de la interfaz de usuario en lugar del símbolo del sistema.
Seguridad
La seguridad de Jenkins depende de dos factores: control de acceso y protección contra amenazas externas. El control de acceso se puede personalizar de dos formas: autenticación de usuario y autorización. También se admite la protección contra amenazas externas, como ataques CSRF y compilaciones maliciosas. [28]
premios y reconocimientos
- Premio InfoWorld Bossie (Premio al mejor software de código abierto) en 2011. [29]
- Recibió el premio Geek Choice en 2014. [29]
Ver también
- Comparación de software de integración continua
Referencias
- ^ a b Dan Dyer. "¿Por qué todavía no usas Hudson?" . Consultado el 21 de mayo de 2008 .
- ^ Lanzamiento de Jenkins 1.396 , Se publica el primer lanzamiento de Jenkins , Kohsuke Kawaguchi
- ^ "Lista de lanzamientos" . github.com . Consultado el 3 de diciembre de 2020 .
- ^ "LICENCIA.txt" .
jenkinsci/jenkins
(repositorio de código fuente) . GitHub (publicado el 11 de septiembre de 2011). 2008-02-12. Archivado desde el original el 18 de octubre de 2016 . Consultado el 18 de octubre de 2016 . - ^ Kawaguchi, Kohsuke; et al. "Utilice Hudson: Licencia" . Archivado desde el original el 7 de febrero de 2009 . Consultado el 30 de enero de 2011 .
- ^ "Acerca de Jenkins" . Wiki de Eclipse: Jenkins . Consultado el 6 de agosto de 2017 .
- ^ "Acerca de Jenkins" . Wayback Machine: Eclipse Wiki, disponible por primera vez el 6 de agosto de 2017 . Archivado desde el original el 4 de septiembre de 2018 . Consultado el 3 de septiembre de 2018 .
- ^ a b "Acerca de Jenkins" . Historia de Eclipse Wiki .
- ^ Jeffrey Fredrick. [nombre de usuario]. "¿Cuál es la diferencia entre Hudson y CruiseControl para proyectos Java?" . Desbordamiento de pila . Consultado el 17 de enero de 2011 .
- ^ Duboscq, Geneviève (2008). "Conferencia JavaOne 2008: ganadores de los premios Duke's Choice Awards 2008" . Conferencia Java One 2008 . java.sun.com . Consultado el 21 de mayo de 2008 .
- ^ Rodrigues, Savio (3 de diciembre de 2010). "Los errores de código abierto de Oracle continúan con el proyecto Hudson" . InfoWorld . Consultado el 31 de mayo de 2018 .
- ^ Proffitt, Brian (2 de febrero de 2011). "Los desarrolladores de Hudson votan por el cambio de nombre; Oracle declara la bifurcación" . ITWorld . Consultado el 31 de mayo de 2018 .
- ^ Krill, Paul (4 de mayo de 2011). "Oracle entrega Hudson a Eclipse, pero la bifurcación de Jenkins parece permanente" . InfoWorld . Consultado el 31 de mayo de 2018 .
- ^ "Organización de Jenkins en GitHub" . Consultado el 31 de mayo de 2018 .
- ^ "Organización de Hudson en Github" . Consultado el 31 de mayo de 2018 .
- ^ Morris, Richard (17 de julio de 2012). "Kohsuke Kawaguchi: friki de la semana" . Consultado el 31 de mayo de 2018 .
- ^ "Novedades de Jenkins 2.0" . 24 de agosto de 2016.
- ^ "Presentamos Jenkins X: una solución CI / CD para aplicaciones modernas en la nube en Kubernetes" . Presentamos Jenkins X: una solución CI / CD para aplicaciones modernas en la nube en Kubernetes .
- ^ "Entrega continua con Amazon EKS y Jenkins X" . Servicios web de Amazon . 7 de noviembre de 2018.
- ^ "Complementos" . wiki.jenkins-ci.org.
- ^ "Mailer - Jenkins - Wiki de Jenkins" . wiki.jenkins.io . Consultado el 26 de noviembre de 2017 .
- ^ "Complemento de credenciales - Jenkins - Wiki de Jenkins" . wiki.jenkins-ci.org . Consultado el 26 de noviembre de 2017 .
- ^ "Supervisión de trabajos externos - Jenkins - Wiki de Jenkins" . wiki.jenkins.io . Consultado el 26 de noviembre de 2017 .
- ^ "Código fuente de Jenkins" . GitHub . Consultado el 19 de mayo de 2018 .
- ^ "Agente de compilación SSH - Complemento de Jenkins" . plugins.jenkins.io . Consultado el 12 de junio de 2020 .
- ^ "Complemento de Javadoc - Jenkins - Wiki de Jenkins" . wiki.jenkins.io . Consultado el 26 de noviembre de 2017 .
- ^ "Generar y publicar edoc en Jenkins usando el complemento Javadoc | Erlanger" .
- ^ "Asegurar a Jenkins" . jenkins.io . Consultado el 13 de septiembre de 2016 .
- ^ a b "Premios - Jenkins - Wiki de Jenkins" . wiki.jenkins-ci.org . Consultado el 13 de septiembre de 2016 .
enlaces externos
- Página web oficial
- Moser, Manfred; O'Brien, Tim (25 de noviembre de 2011). Libro gratuito de Hudson (PDF) . Oracle, Inc.
- Kohsuke Kawaguchi (8 de febrero de 2011). "El creador de Jenkins, Kohsuke Kawaguchi, en el podcast de Changelog hablando sobre el origen del proyecto y el cambio de nombre" . el registro de cambios . Consultado el 3 de marzo de 2016 .
- Kohsuke Kawaguchi (15 de febrero de 2015). "7 formas de optimizar Jenkins / Hudson (por su fundador)" (PDF) . CloudBees. Archivado desde el original (PDF) el 27 de octubre de 2011 . Consultado el 3 de marzo de 2016 .
- Assaf Lavie (1 de marzo de 2017). "Construyendo Docker con Jenkins" . cloudshare.com .
- Nimavat, Karishma. "Tutorial sobre cómo construir una tubería Jenkins para pruebas automatizadas de selenio" . ¿Cómo construir una tubería Jenkins para pruebas automatizadas de selenio? . Software NEX.