Skip to content

Jenkins & CloudBees

Jenkins

Jenkins Is The Way

Jenkins growth

Evolution of open source CI/CD Tools

eBooks

Jenkins on Kubernetes

Kubernetes Native Jenkins Operator

Groovy

Awesome Jenkins

Jenkins Cheat Sheet

Jenkins Special Interest Groups (SIG)

  • Jenkins SIG Platform 🌟 This special interest group offers a venue for all kinds of platform support discussions: Java, Operating Systems, Architectures, Docker, Packaging, Web Containers, etc. The SIG works on defining platform support policies, coordinating platform support efforts with contributors and external communities, and reviewing proposals in the area.
  • Jenkins SIG Cloud Native 🌟

Running Jenkins on Java 11. Use OpenJDK 11

Online Learning

Jenkins Configuration as Code Solutions. 3 available DSLs

  • Job DSL was one of the first popular plugins for Jenkins which allows managing configuration as code and many other plugins dealing with this aspect have been created since then, most notably the Jenkins Pipeline and Configuration as Code plugins. It is important to understand the differences between these plugins and Job DSL for managing Jenkins configuration efficiently.
  • In consequence 3 DSLs are available to configure jenkins as code:
  • Tip: Don’t stay with manually configured freestyle jobs. Use JobDSL wrapper if you can’t use Pipeline.

DSL 1. Job DSL Plugin. From Freestyle jobs to Declarative Pipeline

DSL 2. Jenkins Pipeline. Pipeline as Code with Jenkins

How to share a Declarative Pipeline. Examples of Declarative Pipelines in Shared Libraries:

real world pipeline flow

Jenkins Pipeline Syntax. Scripted Syntax (Groovy DSL syntax) VS Declarative Syntax

  • Jenkins Pipeline Syntax: Scripted Syntax (Groovy DSL syntax) & Declarative Syntax 🌟:
    • Version 2.5 of the “Pipeline plugin” released in 2016/05/16 introduces support for Declarative Pipeline syntax.
    • Declarative Pipeline is a relatively recent addition to Jenkins Pipeline which presents a more simplified and opinionated syntax on top of the Pipeline sub-systems.
  • Building Declarative Pipelines with OpenShift DSL Plugin:
    • Jenkinsfiles have only become an integral part of Jenkins since version 2 but they have quickly become the de-facto standard for building continuous delivery pipelines with Jenkins. Jenkinsfile allows defining pipelines as code using a Groovy DSL syntax and checking it into source version control which allows you to track, review, audit, and manage the lifecycle of changes to the continuous delivery pipelines the same way that you manage the source code of your application.
    • Although the Groovy DSL syntax which is referred to as the scripted syntax is the more well-known and established syntax for building Jenkins pipelines and was the default when Jenkins 2 was released, support for a newer declarative syntax is also added since Jenkins 2.5 in order to offer a simplified way for controlling all aspects of the pipeline. Although the scripted and declarative syntax provides two ways to define your pipeline, they both translate to the same execution blocks in Jenkins and achieve the same result.
    • The declarative syntax in its simplest form is composed of an agent which defines the Jenkins slave to be used for executing the pipeline and a number of stages and each stage with a number of steps to be performed.

Extending with Shared Libraries

Jenkinsfile Runner. Serverless / function-as-a-service build execution

  • Jenkinsfile Runner Jenkinsfile Runner is an experiment to package Jenkins pipeline execution as a command line tool. The intend use cases include:
    • Use Jenkins in Function-as-a-Service context
    • Assist editing Jenkinsfile locally
    • Integration test shared libraries

DSL 3. Jenkins Configuration as Code (JCasC)

Read-only Jenkins Configuration

Jenkins Job Builder

Jenkins Pipeline Unit Testing Framework

Jenkins Architecture. Performance and Scalability

Ansible and Jenkins. Running Ansible Playbooks From Jenkins

Jenkins Tools

Plugin Installation Manager Tool

  • Plugin Installation Manager Tool The plugin manager downloads plugins and their dependencies into a folder so that they can easily be imported into an instance of Jenkins. The goal of this tool is to replace the Docker install-plugins.sh script and the many other implementations of plugin management that have been recreated across Jenkins. The tool also allows users to see more information about the plugins they are downloading such as available updates and security warnings. By default, plugins will be downloaded; the user can specify not to download plugins using the –no-download option.
  • Jenkins Plugin Manager CLI v1.1.0 is now released: caching of update site data and downloaded plugins, retry on download, and dependency resolution fixes.

Pipeline Development Tools

Custom WAR Docker Packager

  • jenkinsci/custom-war-packager 🌟 Custom Jenkins WAR packager for Jenkins. Custom WAR Packager (CWP) allows building ready-to-fly Jenkins packages using a YAML specification. The tool can produce Docker images, WAR files, and Jenkinsfile Runner docker images (aka single-shot Jenkins masters). These bundles may include Jenkins core, plugins, extra libraries, and self-configuration via Groovy Hook Scripts or Configuration-as-Code Plugin YAML files.

jenkins-std-lib Jenkins Standard Shared Library

Jenkins Multibranch Pipeline

Multibranch Pipelines with Kubernetes

Jenkins Plugins

Selection of Jenkins Plugins

Plugin Development. Jenkins Plugin Parent POM 4.0

  • Plugin Development
  • Plugin Development: Dependency Management
  • Parent POM for Jenkins Plugins. Plugin POM 4.0 This new parent POM is decoupled from the core Jenkins project, both from the Maven and repository perspectives.
  • 4.0 changelog
  • Maven is widely used for Jenkins plugin development, more than 90% of plugins use it. In order to simplify plugin development, the Jenkins project offers a standard Parent POM which defines the recommended build, verification and release flow. Such parent POM helps us to ensure quality of the Jenkins plugins. In April 2020 we released a new major release of the parent POM which includes a number of important and sometimes incompatible changes: Jenkins core Bill of materials, full migration to SpotBugs, etc.
  • In this presentation James Nord will talk about the changes introduced in Plugin POM 4.0. What do plugin developers and users get by upgrading? How to upgrade? What obstacles to expect, and how to resolve them?

Jenkins Blue Ocean

Cloudbees Flow

Monitoring jenkins

Externalizing Fingerprint Storage for Jenkins

  • New FingerprintStorage API to build external fingerprint storage plugins.
  • External Fingerprint Storage Phase-1 Updates Externalizing fingerprint storage for Jenkins is a Google Summer of Code 2020 project. Fingerprinting is a way to track which version of a file is being used by a job/build, making dependency tracking easy. The fingerprint engine of Jenkins can track usages of artifacts, credentials, files, images, etc. within the system. Currently, it does this by maintaining a local XML-based database. Advantages of using external storage drivers:
    • Remove dependence on Jenkins master disk storage
    • Support for configure pay-as-you-use cloud storages
    • Easy Backup Management
    • Better Reliability and Availability
    • Fingerprints can be tracked across Jenkins instances
  • Redis Fingerprint Storage Plugin

Jenkins and Spring Boot

Docker in Docker. Running Jenkins in Kubernetes

CloudBees

CloudBees Rollout and Feature Flags

Feature Flags in CloudBees Enterprise On-Premise

  • CloudBees Releases Another Industry First: Feature Flagging for On-Premise Use 🌟
    • SAN JOSE, CA. – May 5, 2020 – CloudBees, Inc., the enterprise software delivery company, today announced a new release of CloudBees Feature Flags that enables developers to manage production deployments of new functionality in a controlled manner with an on-premise feature manager. The new offering strengthens CloudBees’ leadership in the continuous integration/continuous delivery (CI/CD) space by extending users’ ability to leverage feature flag technology in both on-premise and cloud environments. CloudBees Feature Flags is from the company and application formerly known as Rollout, acquired last year by CloudBees.
    • Feature flags have emerged as popular tools for deploying new features with the added advantage of enabling risk-free experimentation and fast results. As organizations enhance applications with rich new capabilities, many use feature flags to preview features for select audiences, with the ability to pull them back quickly if the functionality is not successful. In a recent survey, 97% of respondents say that it is important for their organization to implement new application features quickly, yet 65% say it is difficult for their organization to do so safely. CloudBees Feature Flags enables developers to easily release new features with confidence, reduce risk in doing so and manage large numbers of feature flags at scale.
    • β€œVery soon, all features will be released behind a feature flag. It’s a natural evolution in continuous delivery. CloudBees has led the way in feature flag technology, making it a core part of our overall offering,” said Sacha Labourey, CEO and co-founder, CloudBees. β€œWith this release, we are providing the same functionality for on-premise environments that previously had only been available as a cloud-based service. We are committed to the ongoing integration, automation and governance of feature flags within the software delivery lifecycle and giving users choice in selecting the best environment for their project – on-premise or cloud.”
    • CloudBees Feature Flags integrates with the company’s deep CI/CD capabilities, giving organizations the most comprehensive feature management capabilities in the software development life cycle (SDLC). The ability to use feature flagging in an on-premise environment also opens up new avenues for usage in industries, such as government, finance, pharmaceuticals, utilities and healthcare, where there can be a mix of on-premise and cloud environments.
    • β€œWe recognize that many companies are realizing the benefits of feature flags,” said Moritz Plassnig, senior vice president and general manager, Software Delivery Management and Software Delivery Automation Cloud at CloudBees. β€œBy flagging features, they no longer have to sacrifice innovation to lower risk. We felt that it was critical to offer this technology to any company working in on-premise or hybrid environments.”

CloudBees Accelerator

Jenkins Scripts

Jervis: Jenkins as a service

  • Jervis is Sam Gleske‘s vision of a good way to roll out Jenkins as a service in very large organizations.
  • SCM Filter Jervis YAML Plugin This plugin is intended for Jenkins infrastructure relying on jervis to deliver software in a self-service manner. This plugin can also be used for Travis CI YAML.

Jenkins X (Serverless)

Jenkins X is a specialized Jenkins for Kubernetes: This is how it works from a bird eye the CI/CD: a developer creates a branch, then Jenkins X creates a ephemeral namespace with that branch. The developer tests it and once it is ok, a PR is created, then, the branch is deployed in staging. When I merge it, it goes to QA, and with a manual command “jx promote” it goes to production. Jenkins X deletes automatically after N hours the branch namespace.

Why Do We Need Jenkins X To Be Serverless? Initially, Jenkins X had a stripped-down version of Jenkins but, since the release 2, not a single line of the traditional Jenkins is left in Jenkins X. Now it is fully serverless thanks to Tekton and a lot of custom code written from scratch to support the need for a modern Kubernetes-based solution.

Jenkins and SAP

Jenkins Free Templates for AWS CloudFormation

jenkins and openshift

jenkins hub CD

Tweets

Click to expand!