Jump to content

Jenkins (software)

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by DéRahier (talk | contribs) at 12:02, 8 December 2017 (typo succesful => successful). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Jenkins
Initial release2 February 2011 (2011-02-02)[1]
Repository
Written inJava
PlatformJava SE
TypeContinuous integration
LicenseMIT[2]
Websitewww.jenkins.io Edit this on Wikidata

Jenkins is an open source automation server written in Java. Jenkins helps to automate the non-human part of software development process, with continuous integration and facilitating technical aspects of 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. The creator of Jenkins is Kohsuke Kawaguchi.[3] Released under the MIT License, Jenkins is free software.[4]

Builds can be triggered by various means, for example by commit in a version control system, by scheduling via a cron-like mechanism and by requesting a specific build URL. It can also be triggered after the other builds in the queue have completed. Jenkins functionality can be extended with plugins.

The Jenkins project was renamed after a dispute with Oracle, and its fork Hudson continued to be developed by Oracle for a time before donating it to the Eclipse Foundation.


History

Jenkins was originally developed as the Hudson project. Hudson's creation started in summer of 2004 at Sun Microsystems. It was first released in java.net in Feb. 2005.[5]

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

During November 2010, 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.[8] 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",[8] after Oracle claimed the right to the name and applied for a trademark in December 2010.[9] As a result, on January 11, 2011, a call for votes was made to change the project name from "Hudson" to "Jenkins".[10] The proposal was overwhelmingly approved by community vote on January 29, 2011, creating the Jenkins project.[11][12]

On February 1, 2011, Oracle said that they intended to continue development of Hudson, and considered Jenkins a fork rather than a rename.[13] Jenkins and Hudson therefore continue as two independent projects, each claiming the other is the fork. As of December 2013, the Jenkins organisation on GitHub had 567 project members and around 1,100 public repositories,[9] compared with Hudson's 32 project members and 17 public repositories.[15]

In 2011, creator Kohsuke Kawaguchi received a Google-O'Reilly Open Source Award for his work on the Hudson/Jenkins project. In 2014, Kawaguchi became the chief technology officer for CloudBees.[16]

On April 20, 2016 version 2 was released with the Pipeline plugin enabled by default. The plugin allows for writing build instructions in Apache Groovy.

Plugins

Plugins have been released for Jenkins that extend its use to projects written in languages other than Java.[17] 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.[10]) and automated testing which 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.[11] 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 sucessful 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.[12]

Monitoring external jobs

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

SSH Slaves

This plugin allows managing slaves running on *nix machines over SSH.[14] It adds a new type of slave launch method. This launch method will

  1. Open a SSH connection to the specified host as the specified username.
  2. Checks the default version of java for that user.
  3. [not implemented yet] If the default version is not compatible with Jenkins's slave.jar, tries to find a version of java that is.
  4. Once it has a suitable version of java, copies the latest slave.jar via SFTP (falling back to scp if SFTP is not available)
  5. Start the slave 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.[15]

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

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.[16]

Awards and recognition

  • InfoWorld Bossie Award (Best of Open Source Software Award) in 2011.[17]
  • Received Geek Choice Award in 2014.[17]

See also

References

  1. ^ Jenkins 1.396 released, The first release of Jenkins is posted, Kohsuke Kawaguchi
  2. ^ "LICENSE.txt". jenkinsci/jenkins (source code repository). GitHub (published 2011-09-11). 2008-02-12. Archived from the original on 2016-10-18. Retrieved 2016-10-18. {{cite web}}: Unknown parameter |dead-url= ignored (|url-status= suggested) (help)
  3. ^ a b Dan Dyer. "Why are you still not using Hudson?". Retrieved 2008-05-21.
  4. ^ Kawaguchi, Kohsuke; et al. "Use Hudson: License". Archived from the original on February 7, 2009. Retrieved January 30, 2011. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  5. ^ Kawaguchi, Kohsuke. "Hudson" (PDF). Archived from the original (PDF) on 1 July 2014. Retrieved 28 June 2013. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  6. ^ Jeffrey Fredrick. [user name]. "What is the difference between Hudson and CruiseControl for Java projects?". Stack Overflow. Retrieved January 17, 2011. {{cite web}}: |author= has generic name (help)
  7. ^ Duboscq, Geneviève (2008). "2008 JavaOne Conference: Duke's Choice Awards Winners for 2008". 2008 Java One Conference. java.sun.com. Retrieved May 21, 2008.
  8. ^ "Who's driving this thing?". Retrieved January 31, 2011.
  9. ^ "Jenkins organisation on GitHub". Retrieved January 22, 2013. Jenkins (jenkinsci). Joined on Jul 21, 2009. 1.1k public repos. 567 members
  10. ^ "Plugins - Jenkins - Jenkins Wiki".
  11. ^ "Mailer - Jenkins - Jenkins Wiki". wiki.jenkins.io. Retrieved November 26, 2017.
  12. ^ "Credentials Plugin - Jenkins - Jenkins Wiki". wiki.jenkins-ci.org. Retrieved November 26, 2017.
  13. ^ "Monitoring external jobs - Jenkins - Jenkins Wiki". wiki.jenkins.io. Retrieved November 26, 2017.
  14. ^ "SSH Slaves plugin - Jenkins - Jenkins Wiki". wiki.jenkins.io. Retrieved November 26, 2017.
  15. ^ "Javadoc Plugin - Jenkins - Jenkins Wiki". wiki.jenkins.io. Retrieved November 26, 2017.
  16. ^ "Securing Jenkins". jenkins.io. Retrieved 2016-09-13.
  17. ^ a b "Awards - Jenkins - Jenkins Wiki". wiki.jenkins-ci.org. Retrieved 2016-09-13.