Tools make or break a continuous development pipeline, and few tools are as popular as Jenkins. But Jenkins' potential functionality doesn't stop at the developers' doorstep. Operations can use Jenkins for deployment and many other tasks.
Jenkins is an open source, highly extensible automation server. Jenkins and other automation servers take on numerous common, repeatable tasks involved in the build, test and delivery or deployment of new software products or code updates. For example, a developer has to write and run a script manually to invoke a build; Jenkins can invoke and complete those processes automatically.
How Jenkins works
Jenkins fundamentally operates in jobs. Each job typically involves a number of steps.
Each build project is a job, and Jenkins supports a range of common job types. In a freestyle job, users combine any software configuration management and build system. An external job records processes running outside of Jenkins and displays that information on a Jenkins dashboard. A multiconfiguration job helps in more sophisticated projects, such as ones with platform-specific builds.
Jenkins creates an orchestration workflow, called a pipeline, typically for projects that don't fit easily into freestyle jobs. As an example, a declarative pipeline file includes a build stage, a test stage and a deploy stage; each stage involves many individual steps that do the actual work. Jenkins can create and support multibranch pipelines to orchestrate complex build jobs according to outside criteria. In a continuous or DevOps model, teams use Jenkins for deployment activities, even in complex setups and across multiple Jenkins servers.
Plug-ins integrate Jenkins with build tools, version control systems, test systems, bug databases and other diverse tools that enable software development and deployment. For example, with the Google Compute Engine plug-in, Jenkins uses GCE VMs when executing build tasks, rather than having an admin provision and configure VMs. Plug-ins can perform unit tests and automated testing, and the test results are also supported by plug-ins that display report data within the Jenkins interface. There are well over 1,000 plug-ins, and this broad support has made Jenkins widely adopted among diverse development teams.
Jenkins users rely on the dashboard to manage tasks: add new jobs, manage the Jenkins server and view jobs in the queue or that are currently executing. It displays a date-stamped build history with pass/fail results.
Jenkins is a tool used across dev and ops. To see how it works for software dev and test, read SearchSoftwareQuality's article on Jenkins basics for developers.
Jenkins in operations
Today's development pipeline doesn't stop at IT operations' door. Operations staff use Jenkins to deploy within a modern CI/CD pipeline and to automate routine application support functions.
Operations staff can rely on Jenkins for day-to-day tasks that are currently performed via ad hoc scripts or facilitated by other orchestration and automation tools. Jenkins combines with automation and orchestration tools to accelerate the execution of common tasks, bring consistency to them and eliminate errors and oversights that compromise security or performance.
In an operations setting, Jenkins can automate the routine maintenance tasks on crucial business applications, such as garbage collection, database compaction, file backups and disaster recovery setup. These tasks are often performed manually by IT staff. Jenkins can run the tasks and even configure a sequence of them into an orchestrated process.
Ops teams can use Jenkins in conjunction with other infrastructure tools, such as Microsoft System Center Configuration Manager (SCCM), to configure and deploy new servers in the infrastructure. IT staff connect the hardware to power and the LAN, then the tools take over: SCCM recognizes the new hardware ID and triggers Jenkins to perform prescribed installations to prepare the system for production.
Whether it uses Jenkins for deployment, app support or simply as a delivery system for code from dev, operations gets more than the time savings and consistency benefits of the tool. It also enables ops and dev to speak the same language, understand each other's priorities and work better together, encouraging a DevOps culture.