> whoami
@oleg_nenashev
oleg-nenashev
Dr. Nenashev / Mr. Jenkins
Community builder
Developer Tools Hacker
#RussiansAgainstPutin #StandWithUkraine
2
Slide 3
Slide 3 text
Async Q&A: Jenkins Forum
community.jenkins.io/t/cloud-friendly-jenkins/13426
Slide 4
Slide 4 text
My Open [and not so] Communities
Time
* Once a contributor, [almost] always a contributor
Neuchâtel
4
Slide 5
Slide 5 text
We talk Jenkins!
Disclaimer
● My talk does not represent my
employer’s opinion
● It is not an official position of the
Jenkins community
● It is not related to the CloudBees
announcements on HA Jenkins, but
that’s a good stuff
5
Slide 6
Slide 6 text
Disclaimer:
Taking a break in Jenkins
Away: personal events, ongoing war
I participate in governance and GSoC
(Co-)Maintainers welcome!
I will be back! CDF Statement
We stand with the people of Ukraine.
Please assist humanitarian efforts for the
Ukrainian people and those affected by the
military invasion of Ukraine by supporting
international aid organizations, including
UNICEF.
6
Slide 7
Slide 7 text
7
Slide 8
Slide 8 text
@birthmarkbart
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
Flew past like
plywood over Paris -
idiom in the Russian language
10
J'ai survolé Paris comme du contreplaqué
Slide 11
Slide 11 text
11
● Having a baby
● COVID
● War in Ukraine
● Solo Parenting
Me missing Kubecon
Slide 12
Slide 12 text
12
@oleg_nenashev
Slide 13
Slide 13 text
13
TL;DR: for your projects
Being Cloud Friendly is a must,
Cloud Native is optional
Slide 14
Slide 14 text
Not talking about Gradle today
Join me tomorrow,
Observability Day
14
Slide 15
Slide 15 text
15
Slide 16
Slide 16 text
16
Slide 17
Slide 17 text
17
My talks on
evolution of
CI/CD
https://speakerdeck.com/onenashev/
Slide 18
Slide 18 text
Generations of CI/CD Tools (Oleg’s IMHO)
IV
III
II
I CRON
….
18
Slide 19
Slide 19 text
Generation III.
New demands
Shift
left
Generation III evolves
… but not fast enough
for early adopters
19
Slide 20
Slide 20 text
!=
Jenkins has CHANGED
20
Slide 21
Slide 21 text
Generations of CI/CD tools
IV
III
Evolution
R.I.P.
???
V
???
21
Slide 22
Slide 22 text
Modern Jenkins
• Pipeline-as-Code
• Configuration-as-Code
• New plugins and integrations
• Modern packaging
• Distributions for public clouds
22
Slide 23
Slide 23 text
Generations of CI/CD tools
IV
III
Evolution
R.I.P.
???
V
???
IV
V ???
23
Slide 24
Slide 24 text
CI/CD Tools. Generation V
● Learns from experiences of previous generations
○ Opinionated but no longer general purpose
● High specialization
○ Unix way: “Do One Thing and Do It Well”
● Mostly cloud native
● Mostly open source as a tool or as ecosystem
V
24
Slide 25
Slide 25 text
25
x.com/dastbe/status/1303858170155081728
Slide 26
Slide 26 text
CI/CD Tools. Generation V - Examples
* Oleg’s CI tool
generation definition 26
Slide 27
Slide 27 text
Example: Tekton
Cloud Native
Kubernetes Native
Everything is container
Steps and pluggability
via containers
tekton.dev
27
Slide 28
Slide 28 text
Getting out of Local Optimum
“Jenkins: Shifting gears”, Kohsuke Kawaguchi, 2018
jenkins.io/blog/2018/08/31/shifting-gears
Generation IV Generation V
* Oleg’s CI tool
generation definition 28
Slide 29
Slide 29 text
Cloud Native Jenkins
“General purpose CI/CD
engine that runs on
Kubernetes and embraces
fundamentally different
architecture & extensibility
mechanisms”
29
https://flic.kr/p/75ncBF
Kohsuke Kawaguchi, 2018
Slide 30
Slide 30 text
30
Being Cloud Native is not running
on Kubernetes
Slide 31
Slide 31 text
Being Cloud Native
● Best service for each need
● Pay per use
● “Infinite” scaling / Scale to zero
● Easy to use
● Easy to maintain
● Fast to develop
31
Controller as a SPoF Macroservice
33
Permanent agents
On-demand agents
from cloud providers
Web UI
Jenkins
Controller
Slide 34
Slide 34 text
Cloud Native Special Interest Group
● Founded in July 2018
● jenkins.io/sigs/cloud-native
● R.I.P in 2022
Goal: Improve Jenkins to run on Cloud
environments as a "Cloud Native" application
34
?
Slide 35
Slide 35 text
Cloud Native SIG Projects
35
● Pluggable Storage
● Jenkins X 1.x
● Configuration-as-Code
● OTel and Cloud Events Integrations
● Multi-tenant Jenkins Controller
● Operator for Kubernetes
● Jenkinsfile Runner (portable Pipeline)
Slide 36
Slide 36 text
36
Slide 37
Slide 37 text
Jenkins X. Out of the Box experience
• Build packs - Continuous Delivery
• GitOps
• Nexus, chartmuseum, monocular
• Environments: Local, staging, production
• IDE Integrations
37
Slide 38
Slide 38 text
Pipeline engines become a commodity
38
Static
Controllers
Serverless
build engines
Jenkinsfile
Runner
Tekton
(default)
Classic
Jenkins
https://jenkins-x.io/
Jenkins X 3.x
Slide 39
Slide 39 text
Too Opinionated?
39
Jenkins X
Not a Jenkins replacement,
Keeps evolving
Slide 40
Slide 40 text
Cloud Native Jenkins
“General purpose CI/CD
engine that runs on
Kubernetes and embraces
fundamentally different
architecture & extensibility
mechanisms”
40
https://flic.kr/p/75ncBF
Kohsuke Kawaguchi, 2018
Slide 41
Slide 41 text
(┛ಠ_ಠ)┛彡┻━┻
What if Jenkins controller
was “on-demand”?
41
Slide 42
Slide 42 text
Jenkinsfile Runner
● Binary and base Docker image
● Runs a Pipeline job and shuts down
● No Web UI*
● On-demand packaging as a container or JAR
github.com/jenkinsci/jenkinsfile-runner
42
● Not a CI/CD solution on its own
Limitations
Triggers
Webhook
receivers
Log services
Result Storage
Web UI
45
Slide 46
Slide 46 text
● Not a CI/CD solution on its own
● No Web UI
● No Queue
● No build throttling, cross-controller
communication, etc.
● Designed for a single-container use
Limitations
46
Slide 47
Slide 47 text
Foundations were not ready
47
Not a Jenkins replacement,
Keeps evolving
Slide 48
Slide 48 text
Pluggable Storage: current state
• Artifacts
• Build logs
• Configuration
• Credentials
• Builds
• Jobs
• Test results
• Code coverage
• Static analysis
• System logs
• Task logs
• Fingerprints
• ... Legend
done & available
partial
not started
jenkins.io/doc/book/using/pluggable-storage/
48
Jenkins Operator for Kubernetes
52
● Actually, two operators from
different vendors
● Core Jenkins vendors were busy
with other projects
● We tried to set up community
governance too late
Slide 53
Slide 53 text
53
Slide 54
Slide 54 text
54
Slide 55
Slide 55 text
All projects worked,
but no breakthrough
No Jenkins successor?
55
?
Slide 56
Slide 56 text
Did we FAIL?
56
Not really, but we didn't
succeed either
Slide 57
Slide 57 text
Users want to run CI, they don’t
care about infra
57
Slide 58
Slide 58 text
What they
need
58
Slide 59
Slide 59 text
59
● Infra and CI
maintenance
are overhead
● SaaS or service
● Simple for
simple cases
● Affordable for
complex
Slide 60
Slide 60 text
Система
Docs
Plugins Configs
Infra-
structure
Backend
Samples
Demos
Infra-
structure
Infra-
structure
60
?
without proper
maintenance
What they don’t want
Slide 61
Slide 61 text
61
TL;DR: for your projects
Being Cloud Friendly is a must,
Cloud Native is optional
Slide 62
Slide 62 text
Being Cloud Native
● Best service for each need
● Pay per use
● “Infinite” scaling / Scale to zero
● Easy to use
● Easy to maintain
● Fast to develop
62
Slide 63
Slide 63 text
Being Cloud Friendly
● Best service for each need
Best service for your needs
● Pay per use
● “Infinite” scaling / Scale to zero
Scales as needed
● Easy to use in the cloud
● Easy to maintain in the cloud
● Fast to develop in the cloud
63
Slide 64
Slide 64 text
Could
Cloud Native Jenkins
succeed?
64
Slide 65
Slide 65 text
There are many who
can do cloud native, but
only a few who can do
shared context services
65
Viktor Farcic
devopsparadox.com
Slide 66
Slide 66 text
Jenkins succeeded as a service,
not as SaaS
66
* Until now?
Slide 67
Slide 67 text
67
cloudbees.com/blog/revolutionize-y
our-jenkins-environment-with-ha-hs
Shared Context / HA / SaaS by CloudBees
Slide 68
Slide 68 text
68
Jenkins Contributor Summit, 02 Feb 2024
Slide 69
Slide 69 text
69
Slide 70
Slide 70 text
70
Interoperability First
Choose & Combine the best tools
* Unix way
Slide 71
Slide 71 text
OTel in
Jenkins
● Traces can go
through different
tools, not just a
single one
● OTel Tracing is a
DAG
Source:
plugins.jenkins.io/opentelemetry/
71
Slide 72
Slide 72 text
CloudEvents Plugin (GSOC ‘21)
72
Slide 73
Slide 73 text
Tekton Client Plugin
Pipeline Engine is no a commodity
Tekton provides the ability to create “k8s-style resources for
declaring CI/CD-style pipelines”. It is the go to CI/CD system
for creating Pipelines on Kubernetes.
You can create Tekton Resources from Jenkins
Recent v1 Release !
Blogpost : Easily reuse Tekton and Jenkins X from Jenkins
73
● Multiple checks
● Status reporting
● Summary and Details
● GitHub Markdown support
● Annotations
https://github.com/jenkinsci/gradle-
plugin/pull/382/checks?check_run_i
d=19876936412
76
Slide 77
Slide 77 text
The future is ahead!
“Jenkins: Shifting gears”, Kohsuke Kawaguchi, 2018
jenkins.io/blog/2018/08/31/shifting-gears
Generation IV Generation V
* Oleg’s CI tool
generation definition 77
Slide 78
Slide 78 text
Takeaways
● One doesn’t have to be Cloud Native.
Think Cloud Friendly first
● Scalability is not a goal on its own, scale
what needs to scale
● Focus on user and developer experience
● Pay your architecture debt
78
Slide 79
Slide 79 text
It’s [always] great time to contribute ;)
jenkins.io/participate
79
Slide 80
Slide 80 text
It is a great time to contribute!
jenkins.io/participate
80