Jenkins Overview

Sarvjeet Jain
2 min readSep 6, 2022

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.

Builds in Jenkins

Builds can be triggered by various means, for example:

1- A webhook that gets triggered upon pushed commits in a version control system
2- Scheduling via a cron-like mechanism
3- Requesting a specific build URL.
4- After the other builds in the queue have completed
5- Invoked by other builds

Plugins in Jenkins

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.) 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. 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.

Monitoring external jobs

Adds the ability to monitor the result of externally executed jobs.

SSH agents

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

Open a SSH connection to the specified host as the specified username,
Check the default version of Java for that user,
[not implemented yet] If the default version is not compatible with Jenkins’s agent.jar, try to find a proper version of Java
Once it has a suitable version of Java, copy the latest agent.jar via SFTP (falling back to scp if SFTP is not available),
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.

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.

--

--