Jump to content

Jenkins (software)

From Alfawiki
Jenkins
Company typeOpen source software
IndustrySoftware development, Continuous integration
Founded2007
FounderKohsuke Kawaguchi
Area served
Worldwide
ProductsAutomation server for continuous integration and continuous delivery
Websitewww.jenkins.io

Jenkins is an open source automation server designed to streamline software development processes, including building, testing, and deployment. It facilitates continuous integration and continuous delivery practices. Jenkins functions as a server application hosted within servlet containers such as Apache Tomcat, or it can operate independently as a web application packaged with Eclipse Jetty.

This platform supports integration with numerous version control systems like AccuRev, CVS, Subversion, Git, Mercurial, Perforce, ClearCase, and RTC. Jenkins is capable of running builds using tools such as Apache Ant, Apache Maven, and sbt, in addition to executing custom shell scripts and Windows batch commands.

History

Initially known as Hudson, the project was renamed Jenkins in 2011 following a disagreement with Oracle. Oracle created a fork of the project under the original name and asserted ownership rights. This Oracle-maintained fork was later contributed to the Eclipse Foundation but ceased maintenance and was declared deprecated in February 2017.

By 2007, Hudson had established itself as a favored choice over alternatives like Cruise Control and other open-source build servers. It earned the Duke's Choice Award in the Developer Solutions category at the JavaOne conference in May 2008.

After Oracle's acquisition of Sun Microsystems in November 2010, disputes emerged regarding project governance and infrastructure. Oracle filed for the "Hudson" trademark in December 2010, prompting the community to vote on January 29, 2011, to rename the project "Jenkins." This led to two separate projects: Jenkins and Oracle’s Hudson, each considering the other a derivative. By June 2019, Jenkins had expanded substantially, boasting 667 GitHub contributors and approximately 2,200 public repositories, whereas Hudson had only 28 members and 20 repositories last updated in 2016.

The project's founder, Kohsuke Kawaguchi, was honored with the O'Reilly Open Source Award in 2011 for his contributions to Hudson/Jenkins.

On April 20, 2016, Jenkins 2.0 launched with the Pipeline plugin activated by default, enabling build workflows to be defined through a domain-specific language based on Apache Groovy. Jenkins officially succeeded Hudson at Eclipse on February 8, 2017.

In March 2018, the Jenkins X initiative was introduced to enhance continuous integration and delivery (CI/CD) capabilities on Kubernetes, incorporating support for cloud platforms such as AWS EKS.

Builds

Builds may be initiated through several mechanisms including:

  • webhooks triggered by pushed commits within version control platforms
  • scheduled execution employing cron-like functionality
  • accessing a specific build via its unique URL
  • automatic triggering upon completion of prior builds in the sequence
  • activation by other ongoing builds

Plugins

Plugins broaden Jenkins' capabilities beyond just Java projects by enabling compatibility with a wide array of version control systems, bug tracking tools, and build utilities. They also improve the user interface and introduce additional features. Specific plugins are designed to support unit testing and produce test result reports in formats such as JUnit, MSTest, and NUnit. Jenkins can visualize these reports, monitor historical trends, and present them within its graphical user interface.

Mailer

This plugin facilitates email alerts for build outcomes, notifying designated recipients upon occurrences such as:

  1. Build failures
  2. Unstable builds
  3. Successful builds following previous failures (signifying issue resolution)
  4. Unstable builds after previously successful ones (indicating regression)

Credentials

Offers a unified API for the secure management and retrieval of diverse credentials inside Jenkins, enhancing compatibility among various plugins.

Monitoring external jobs

Enables Jenkins to track the results of jobs executed outside its environment, allowing seamless integration of external processes into the continuous integration workflow.

SSH agents

Handles agent nodes (previously referred to as slaves) on Unix-like systems through SSH connections. This plugin:

  1. Establishes an SSH session to the target machine using provided credentials
  2. Verifies the default Java version to ensure it meets Jenkins compatibility requirements
  3. Transfers the current via SFTP or falls back to scp if SFTP is unavailable
  4. Initiates the agent remotely to facilitate distributed build execution

Javadoc

Separated from Jenkins core since version 1.431, this plugin enables Javadoc integration by allowing users to choose "Publish Javadoc" as a post-build task, define the location of Javadoc files, and configure retention policies for successful builds.

Online explanation

Jenkins supports scheduling and supervising shell scripts through its web interface, simplifying automation workflows without requiring command-line interaction.

Security

Jenkins ensures security by implementing access control mechanisms—including user authentication and authorization—alongside defenses against external threats such as CSRF exploits and harmful build executions.

Awards and recognition

  • Received the InfoWorld Bossie Award for Best of Open Source Software in 2011
  • Honored with the Geek Choice Award in 2014

See also

External links