Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

> 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

Slide 32

Slide 32 text

32 Permanent agents On-demand agents CLOUD NATIVE (c) Jenkins Controller Web UI

Slide 33

Slide 33 text

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

Slide 43

Slide 43 text

JFR TL;DR 43 STDOUT/STDERR Workspace External storage Workspace Jenkinsfile Configuration (WAR, plugins, settings)

Slide 44

Slide 44 text

44

Slide 45

Slide 45 text

● 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

Slide 49

Slide 49 text

49

Slide 50

Slide 50 text

50 jenkins.io/projects/jenkins-operator

Slide 51

Slide 51 text

51 https://dev.to/webhookrelay/easy-a nd-secure-jenkins-operator-deploy ment-on-kubernetes-1jn8

Slide 52

Slide 52 text

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

Slide 74

Slide 74 text

Backstage Integrations 74 https://roadie.io/backstage/plugins/jenkins/

Slide 75

Slide 75 text

Checks Per Commit 75

Slide 76

Slide 76 text

● 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

Slide 81

Slide 81 text

GitHub: oleg-nenashev Twitter: @oleg_nenashev Jenkins Community Channels Questions? CNCF Ambassador Office Hours jenkins.io/participate 81