Jenkins is a Java-based integration server that can be used to monitor the executions of various recurrent jobs, as they are often deployed when developing apps or running tasks by cron.
Jenkins features a continuous integration system which makes it mainly useful for continuously testing or building software projects. As such, developers can easily integrate their changes and generate a new build – since this process is automated, the overall productivity is increased.
Additionally, Jenkins can be used to monitor executions of externally-run tasks (like cron or procmail ones), even if it is deployed on a remote machine. Due to this feature, you can use Jenkins as a dashboard of your existing automation system.
Furthermore, you can also build a maven2/3 project, as Jenkins can reduce the configuration considerably, once it has analyzed your POM files. A multi-configuration project can also be built, which is especially suitable if you want to test it on several environments or platform-specific builds.
When it comes to managing credentials, Jenkins supports not only usernames with passwords, but also certificates or SSH usernames with private keys, and you can bind any type of credential to your domains. Also, there are several types of supported specifications for each domain, namely hostname, hostname:port or URI scheme.
You can also rely on Jenkins to monitor a wide range of data for each of your nodes, such as the architecture type, clock difference, free disk space, free swap or temp space, as well as the response time.
Moreover, Jenkins displays various environmental details to assist you with troubleshooting, while also checking the resource usage levels and informing you whether you need more machines for your projects.
Last but not least, Jenkins can prepare your computer for shutdown, as it stops executing new builds as soon as you require it to.
Jenkins monitors executions of repeated jobs, such as building a software project or jobs run by cron. Among those things, current Jenkins focuses on the following two jobs:
1. Building/testing software projects continuously, just like CruiseControl or DamageControl. In a nutshell, Jenkins provides an easy-to-use so-called continuous integration system, making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. The automated, continuous build increases the productivity.
2. Monitoring executions of externally-run jobs, such as cron jobs and procmail jobs, even those that are run on a remote machine. For example, with cron, all you receive is regular e-mails that capture the output, and it is up to you to look at them diligently and notice when it broke. Jenkins keeps those outputs and makes it easy for you to notice when something is wrong.
Get Jenkins and give it a try to see how useful it can actually be for you!
- Easy installation: Just java -jar jenkins.war, or deploy it in a servlet container. No additional install, no database.
- Easy configuration: Jenkins can be configured entirely from its friendly web GUI with extensive on-the-fly error checks and inline help. There’s no need to tweak XML manually anymore, although if you’d like to do so, you can do that, too.
- Change set support: Jenkins can generate a list of changes made into the build from Subversion/CVS. This is also done in a fairly efficient fashion, to reduce the load on the repository.
- Permanent links: Jenkins gives you clean readable URLs for most of its pages, including some permalinks like “latest build”/”latest successful build”, so that they can be easily linked from elsewhere.
- RSS/E-mail/IM Integration: Monitor build results by RSS or e-mail to get real-time notifications on failures.
- After-the-fact tagging: Builds can be tagged long after builds are completed
- JUnit/TestNG test reporting: JUnit test reports can be tabulated, summarized, and displayed with history information, such as when it started breaking, etc. History trend is plotted into a graph.
- Distributed builds: Jenkins can distribute build/test loads to multiple computers. This lets you get the most out of those idle workstations sitting beneath developers’ desks.
- File fingerprinting: Jenkins can keep track of which build produced which jars, and which build is using which version of jars, and so on. This works even for jars that are produced outside Jenkins, and is ideal for projects to track dependency.
- Plugin Support: Jenkins can be extended via 3rd party plugins. You can write plugins to make Jenkins support tools/processes that your team uses.