BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Jenkins to Focus Efforts on Stability, Ease of Use and Cloud Native Compatibility

Jenkins to Focus Efforts on Stability, Ease of Use and Cloud Native Compatibility

This item in japanese

Bookmarks

The Jenkins project team has decided to split its efforts between focusing on stability issues and on better support for running on platforms like Kubernetes. The former, which will potentially have backward-incompatible changes, will impact the release model and provide a more preconfigured installation, whereas the latter will work on similar lines as the existing Jenkins X project.

Jenkins at present can be unstable in terms of handling large and complex pipelines, and some deployments require frequent restarts due to resource issues and plugin upgrades, writes Kohsuke Kawaguchi, creator of Jenkins and CTO of CloudBees. The configuration can be brittle, and so can plugin management, as changing settings for build jobs can have implications which are not immediately visible. System administrators are often hesitant to make changes to avoid breakages.

The end user experience is often complicated because Jenkins needs too many components to be configured to get anything serious done. The speed of Jenkins development itself is constrained by not having sufficient test coverage, and contributions from both new and existing developers are affected due to long drawn reviews, which can discourage future contributions.

One part of the proposal attempts to address these issues by changing the release model and taking a stand on preserving backward compatibility. At the Jenkins World 2017 Contributor Summit, Kawaguchi had demarcated the aspects of Jenkins that should work out of the box and those that need administrator configuration. The latter includes setting up HipChat/Slack integration, Webhook integration, and system-wide settings like SMTP for email notifications. He also proposed that part of the solution is "to embrace core and a bunch of important plugins together as the foundation" so that Jenkins can come pre-configured with them and reduce the setup time. The Jenkins 2.0 model will continue but might introduce changes that break backward compatibility.

The proposal for a "cloud native" Jenkins, to be driven by the Jenkins Cloud Native SIG, is about running Jenkins on cloud native platforms like Kubernetes. The Jenkins X platform, an existing project in this direction, uses Jenkins as the core engine with an additional tool set. Kawaguchi says that the future for cloud native Jenkins is to go in a direction that makes it easy for Jenkins X. This version of Jenkins will most likely have a fundamentally different architecture. For example, various pieces of functionality as separate microservices, using functions as a service instead of the build workers of today, and services interacting through Kubernetes custom resource definitions (CRDs). Data that is currently stored on the filesystem will be moved to cloud storage services.

The Jenkins Configuration as Code (JCasC) project attempts to solve some of the configuration issues with a declarative configuration for a Jenkins master node. In addition, the Jenkins Evergreen project "provides the end-user with a pre-assembled collection of pieces that can be immediately used to implement CI and CD workloads". Evergreen has the capability to update itself automatically. These two will be key pieces of the cloud native initiative. Other CI solutions like Gitlab CI have integrations with managed Kubernetes services.

Jenkins X enables microservices deployments on Kubernetes with its concept of Environments, which represents a collection of services from a given point in the source code repository that work together. An Environment can be created for Dev, Staging and Production or any other release stage. Environments are mapped to Kubernetes namespaces. Jenkins X provides a command line tool called 'jx' that can be used to manage the environments, switch between them and and upgrading the Jenkins platform itself. It currently runs on MacOS and Linux, and supports the major cloud providers like AWS, GKE and Azure.

Although some users feel that these efforts are too late, considering the number of other CI tools which have similar support, Jenkins has a large user base and it will potentially benefit them as well as new users.

Rate this Article

Adoption
Style

BT