Jenkins es un servidor de automatización de código abierto . Ayuda a automatizar las partes del desarrollo de software relacionadas con la creación , prueba e implementación , lo que facilita la integración continua y la entrega continua . 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 , ClearCase y 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 .
Historia
El proyecto Jenkins se llamó originalmente Hudson y fue renombrado en 2011 después de una disputa con Oracle , que había bifurcado el proyecto y reclamaba los 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 . El 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 a Cruise Control y otros servidores de compilación de código abierto. [1] [9] En la conferencia JavaOne en mayo de 2008, el software ganó el premio Duke's Choice Award en la categoría de Soluciones para desarrolladores. [10]
Durante noviembre de 2010, después de la adquisición de Sun Microsystems por Oracle , surgió un problema en la comunidad de Hudson con respecto a la infraestructura utilizada, que llegó a abarcar cuestiones sobre la administración y el control por parte 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 registrado "Hudson", después de que Oracle reclamara el derecho al nombre y solicitara una marca registrada en diciembre de 2010. Como resultado, el 11 de enero de 2011, se realizó una convocatoria de votaciones para cambiar el nombre del proyecto de "Hudson" a "Jenkins". La propuesta fue aprobada abrumadoramente por una votación de la comunidad el 29 de enero de 2011, creando el proyecto Jenkins. [12]
El 1 de febrero de 2011, Oracle anunció que tenía la intención de continuar con el desarrollo de Hudson y consideró a Jenkins como 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 era 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 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. [16]
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 compilación utilizando un lenguaje específico del 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 cuando se envían 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 se hayan completado las otras compilaciones en la cola
- invocado por otras compilaciones
Complementos
Se han publicado 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 al propósito de las pruebas unitarias que generan informes de pruebas 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 pruebas en varios formatos compatibles con los complementos ( actualmente, la compatibilidad con JUnit está incluida) y Jenkins puede mostrar los informes, generar tendencias y representarlas 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 siempre que ocurra un determinado evento importante, como:
- Fallo de compilación.
- Construcción inestable.
- Una compilación exitosa luego de una fallida, lo que indica que la crisis ha terminado.
- Compilació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 distintos tipos de credenciales. [22]
Seguimiento de trabajos externos
Añade 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 agente. 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,
- [no implementado todavía] 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 el último agent.jar a través de SFTP (recurriendo a scp si SFTP no está disponible),
- Iniciar 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 independientes. [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 utilizar para programar y supervisar 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 maneras: autenticación y autorización de usuarios. 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]
Véase también
Referencias
- ^ de Dyer, Dan. "¿Por qué todavía no estás usando Hudson?" . Consultado el 21 de mayo de 2008 .
- ^ Jenkins 1.396 lanzado Archivado el 8 de diciembre de 2018 en Wayback Machine , Se publicó la primera versión de Jenkins , Kohsuke Kawaguchi
- ^ "Versión 2.477". 17 de septiembre de 2024. Consultado el 22 de septiembre de 2024 .
- ^ "LICENSE.txt". (repositorio de código fuente) . GitHub (publicado el 11 de septiembre de 2011). 12 de febrero de 2008. Archivado desde el original el 18 de octubre de 2016. Consultado el 18 de octubre de 2016 .
jenkinsci/jenkins - ^ Kawaguchi, Kohsuke; et al. "Use Hudson: License". Archivado desde el original el 7 de febrero de 2009. Consultado el 30 de enero de 2011 .
- ^ "Acerca de Jenkins". Eclipse Wiki: 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 .
- ^ ab "Acerca de Jenkins". Historial de Eclipse Wiki .
- ^ Fredrick, Jeffrey. "¿Cuál es la diferencia entre Hudson y CruiseControl para proyectos Java?". Stack Overflow . Consultado el 17 de enero de 2011 .
- ^ Duboscq, Geneviève (2008). "2008 JavaOne Conference: Duke's Choice Awards Winners for 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 un cambio de nombre; Oracle declara una 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 Jenkins en GitHub". GitHub . Consultado el 31 de mayo de 2018 .
- ^ "Organización Hudson en Github". GitHub . Consultado el 31 de mayo de 2018 .
- ^ Morris, Richard (17 de julio de 2012). «Kohsuke Kawaguchi: Geek of the Week» (en inglés) . 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 de nube modernas en Kubernetes". Presentamos Jenkins X: una solución CI/CD para aplicaciones de nube modernas en Kubernetes .
- ^ "Entrega continua con Amazon EKS y Jenkins X". Amazon Web Services . 7 de noviembre de 2018. Archivado desde el original el 6 de mayo de 2019 . Consultado el 23 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 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".
- ^ "Protección de Jenkins". jenkins.io . Consultado el 13 de septiembre de 2016 .
- ^ ab "Premios - Jenkins - Wiki de Jenkins". wiki.jenkins-ci.org . Consultado el 13 de septiembre de 2016 .
Enlaces externos
- Sitio web oficial