Jenkins (software) explained

Jenkins
Logo Size:250px
Author:Kohsuke Kawaguchi[1]
Released:[2]
Programming Language:Java
Platform:Java 11, Java 17, Java 21
Genre:Continuous delivery
License:MIT License[3] [4]

Jenkins is an open source automation server. It helps automate the parts of software development related to building, testing, and deploying, facilitating continuous integration, and continuous delivery. It is a server-based system that runs in servlet containers such as Apache Tomcat. It supports version control tools, including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, ClearCase, and RTC, and can execute Apache Ant, Apache Maven, and sbt based projects as well as arbitrary shell scripts and Windows batch commands.

History

The Jenkins project was originally named Hudson, and was renamed in 2011 after a dispute with Oracle, which had forked the project and claimed rights to the project name. The Oracle fork, Hudson, continued to be developed for a time before being donated to the Eclipse Foundation. Oracle's Hudson is no longer maintained[5] [6] and was announced as obsolete in February 2017.[7]

Around 2007 Hudson became known as a better alternative to Cruise Control and other open-source build-servers.[1] [8] At the JavaOne conference in May 2008 the software won the Duke's Choice Award in the Developer Solutions category.[9]

During November 2010, after the acquisition of Sun Microsystems by Oracle, an issue arose in the Hudson community with respect to the infrastructure used, which grew to encompass questions over the stewardship and control by Oracle.[10] Negotiations between the principal project contributors and Oracle took place, and although there were many areas of agreement a key sticking point was the trademarked name "Hudson," after Oracle claimed the right to the name and applied for a trademark in December 2010. As a result, on January 11, 2011, a call for votes was made to change the project name from "Hudson" to "Jenkins." The proposal was overwhelmingly approved by a community vote on January 29, 2011, creating the Jenkins project.[11]

On February 1, 2011, Oracle said that they intended to continue development of Hudson, and considered Jenkins a fork rather than a rename. Jenkins and Hudson therefore continued as two independent projects,[12] each claiming the other was the fork. As of June 2019, the Jenkins organization on GitHub had 667 project members and around 2,200 public repositories,[13] compared with Hudson's 28 project members and 20 public repositories with the last update in 2016.[14]

In 2011, creator Kohsuke Kawaguchi received an O'Reilly Open Source Award for his work on the Hudson/Jenkins project.[15]

On April 20, 2016, version 2 was released with the Pipeline plugin enabled by default.[16] The plugin allows for writing build instructions using a domain specific language based on Apache Groovy.

Jenkins replaced Hudson since February 8, 2017 in Eclipse.

In March 2018 Jenkins X software project for Kubernetes was publicly presented,[17] with support for different cloud providers including AWS EKS among others.[18]

Builds

Builds can be triggered by various means, for example:

Plugins

Plugins have been released for Jenkins that extend its use to projects written in languages other than Java. Plugins are available for integrating Jenkins with most version control systems and bug databases. Many build tools are supported via their respective plugins. Plugins can also change the way Jenkins looks or add new functionality. There are a set of plugins dedicated for the purpose of unit testing that generate test reports in various formats (for example, JUnit bundled with Jenkins, MSTest, NUnit, etc.[19]) and automated testing that supports automated tests. Builds can generate test reports in various formats supported by plugins (JUnit support is currently bundled) and Jenkins can display the reports and generate trends and render them in the GUI.

Mailer

Allows configuring email notifications for build results.[20] Jenkins will send emails to the specified recipients whenever a certain important event occurs, such as:

  1. Failed build.
  2. Unstable build.
  3. Successful build after a failed build, indicating that a crisis is over.
  4. Unstable build after a successful one, indicating that there's a regression.

Credentials

Allows storing credentials in Jenkins. Provides a standardized API for other plugins to store and retrieve different types of credentials.[21]

Monitoring external jobs

Adds the ability to monitor the result of externally executed jobs.[22]

SSH agents

This plugin allows managing agents (formerly known as slaves)[23] running on *nix machines over SSH.[24] It adds a new type of agent launch method. This launch method will

  1. Open a SSH connection to the specified host as the specified username,
  2. Check the default version of Java for that user,
  3. [not implemented yet] If the default version is not compatible with Jenkins's, try to find a proper version of Java
  4. Once it has a suitable version of Java, copy the latest via SFTP (falling back to scp if SFTP is not available),
  5. Start the agent process.

Javadoc

This plugin adds Javadoc support to Jenkins. This functionality used to be a part of the core, but as of Jenkins 1.431, it was split off into separate plugins.[25]

The plugin enables the selection of "Publish Javadoc" as a post-build action, specifying the directory where the Javadoc is to be gathered and if retention is expected for each successful build.[26]

Online explanation

Jenkins can be used to schedule and monitor the running of a shell script via user interface instead of command prompt.

Security

Jenkins' security depends on two factors: access control and protection from external threats. Access control can be customized via two ways: user authentication and authorization. Protection from external threats such as CSRF attacks and malicious builds is supported as well.[27]

Awards and recognition

See also

Notes and References

  1. Web site: Why are you still not using Hudson?. 2008-05-21. Dyer. Dan.
  2. http://jenkins.361315.n4.nabble.com/Jenkins-1-396-released-td3257106.html Jenkins 1.396 released
  3. Web site: LICENSE.txt . 2008-02-12 . 2011-09-11 . jenkinsci/jenkins (source code repository) . GitHub . https://web.archive.org/web/20161018011712/https://github.com/jenkinsci/jenkins/blob/master/LICENSE.txt . 2016-10-18 . live . 2016-10-18.
  4. Web site: Use Hudson: License. Kawaguchi. Kohsuke. January 30, 2011. etal. dead. https://web.archive.org/web/20090207151650/http://hudson.gotdns.com/wiki/display/HUDSON/Use%2BHudson#UseHudson-License. February 7, 2009.
  5. Web site: About Jenkins. 6 August 2017. Eclipse Wiki: Jenkins. About_Jenkins.
  6. Web site: About Jenkins. dead. https://web.archive.org/web/20180904011319/https://wiki.eclipse.org/Jenkins#About_Jenkins. 4 September 2018. 3 September 2018. Wayback Machine: Eclipse Wiki, first available on 6 August 2017. About_Jenkins.
  7. Web site: About Jenkins. Eclipse Wiki history. About_Jenkins.
  8. Web site: What is the difference between Hudson and CruiseControl for Java projects? . Fredrick . Jeffrey . Stack Overflow . January 17, 2011.
  9. Web site: 2008 JavaOne Conference: Duke's Choice Awards Winners for 2008 . Geneviève . Duboscq . 2008 Java One Conference . java.sun.com . 2008 . May 21, 2008.
  10. Web site: Oracle's open source missteps continue with Hudson project. December 3, 2010. May 31, 2018. InfoWorld. Savio. Rodrigues.
  11. Web site: Hudson devs vote for name change; Oracle declares fork. February 2, 2011. May 31, 2018. ITWorld. Proffitt. Brian.
  12. Web site: Oracle hands Hudson to Eclipse, but Jenkins fork seems permanent. May 4, 2011. May 31, 2018. Krill. Paul. InfoWorld.
  13. Web site: Jenkins organization on GitHub. GitHub. May 31, 2018 .
  14. Web site: Hudson organization on Github. GitHub. May 31, 2018.
  15. Web site: Kohsuke Kawaguchi: Geek of the Week. July 17, 2012. Morris. Richard. May 31, 2018.
  16. Web site: What's New in Jenkins 2.0. August 24, 2016.
  17. Web site: Introducing Jenkins X: a CI/CD solution for modern cloud applications on Kubernetes. Introducing Jenkins X: a CI/CD solution for modern cloud applications on Kubernetes.
  18. Web site: Continuous Delivery with Amazon EKS and Jenkins X. November 7, 2018. Amazon Web Services. November 23, 2018. May 6, 2019. https://web.archive.org/web/20190506081836/https://aws.amazon.com/blogs/opensource/continuous-delivery-eks-jenkins-x/. dead.
  19. Web site: Plugins. wiki.jenkins-ci.org.
  20. Web site: Mailer - Jenkins - Jenkins Wiki. November 26, 2017. wiki.jenkins.io.
  21. Web site: Credentials Plugin - Jenkins - Jenkins Wiki . November 26, 2017. wiki.jenkins-ci.org.
  22. Web site: Monitoring external jobs - Jenkins - Jenkins Wiki. November 26, 2017. wiki.jenkins.io.
  23. Web site: Jenkins source code. GitHub. en. 2018-05-19.
  24. Web site: SSH Build Agent - Jenkins Plugin . June 12, 2020. plugins.jenkins.io.
  25. Web site: Javadoc Plugin - Jenkins - Jenkins Wiki. November 26, 2017. wiki.jenkins.io.
  26. Web site: Generate and publish edoc in Jenkins using Javadoc plugin | Erlanger.
  27. Web site: Securing Jenkins. jenkins.io. 2016-09-13.
  28. Web site: Awards - Jenkins - Jenkins Wiki. wiki.jenkins-ci.org. 2016-09-13.