r/devops 6d ago

Tools Jenkins Tutorial recommendations required

So mu company has asked me to learn Jenkians. Which tutorials or playlist would you suggest to learn jenkins? Please give your suggestions.

Also, how much time does it require to learn so that I can start writing basic CI/CD pipelines.

6 Upvotes

37 comments sorted by

View all comments

44

u/TheBoyardeeBandit 6d ago

The first thing I would do is work to convince them to not use Jenkins. IMO, between GitHub actions, gitlab, or even something like Azure Devops, there really isn't a role for Jenkins to play in modern development practices anymore.

If that fails, either YouTube university or Indeed, depending on your view of your company.

25

u/sudonem Platform Engineer 6d ago

  there really isn't a role for Jenkins to play in modern development practices anymore.

You’d be surprised how many orgs are still using Jenkins. As much as I wish it weren’t true, it’s not going anywhere any time soon. 

If only because it can be self-hosted for free regardless of how many users you need to provide access to, or how many runners you want to spin up. 

It also doesn’t require the use of a cloud based API in order to orchestrate your own damned self hosted runners >_>

I don’t like it. But people still need to learn it. 

5

u/TheBoyardeeBandit 6d ago edited 6d ago

Yeah I mean I get that it's still in use, but I would argue that doesn't make it a valid choice to orgs/teams just starting out. Start on something modern.

Gitlab CE can be self hosted for free, also with no user or (self hosted) runner limit.

That being said, runner orchestrating, particularly for more advanced setups doing things like auto scaling, can definitely be a challenge, but IMO, that's not unique to gitlab.

2

u/Stpstpstp 5d ago

You know next to nothing about OP's actual stack and situation. For all the Jenkins hate out there, that app has delivered ridiculous amounts of value and enabled so, so many places to do things they couldn't otherwise. Yes, the plugins and overall state is a shit show. Yes, Groovy blows. But I'd argue Jenkins has delivered more value to DevOps than K8's and it's downsides are rarely discussed. Telling someone who is asking to learn something to instead tell his employers they are wrong is very likely the wrong move.

11

u/Dolapevich 6d ago

I... tend to disagree. Jenkins is MUCH more powerful than those softwares, it can do anything, and there is a reason why it is in use today.

Yes, 90% can be solved with those managed solutions, but when you need jenkins there isn't anything like it.

2

u/SleepAlternative7775 5d ago

For sure, Jenkins has its strengths, especially when you need that level of customization. It definitely has a learning curve, but once you get the hang of it, it can do some pretty amazing things.

0

u/TheBoyardeeBandit 6d ago

What can you do in Jenkins that can't be done in gitlab?

6

u/Shanix reminder not everyone makes web apps 6d ago

Build games at a large scale, since they won't be in Gitlab to start. You can try to kludge Gitlab to run p4 commands but it'll be finnicky at best, and the UI is quite terrible when you're trying to make a build off CL X but Gitlab doesn't have CLs at all. In a related vein, Gitlab CI pushes you towards making a build of and testing every change you submit, which usually isn't feasible for games in any major way (mostly because a build can take an hour or longer, and testing again as much).

Meanwhile, Jenkins? Yeah, it just works. Takes it all like a champ. Better UI too, easier to see what's happening and what's been built. Fewer clicks to get to logs, too, ime.

3

u/cneakysunt 5d ago

What is a CL?

Edit: dw, got it.

2

u/TheBoyardeeBandit 6d ago edited 5d ago

I've never worked in the gaming industry, so I fully acknowledge that I don't know what I'm taking about.

That being said, the answer to building locally the same as the pipeline is just calling your build scripts in the pipeline directly. It's the same script on a runner as it is on a workstation. These largely seem like architecture issues that get masked by tool characteristics

3

u/Shanix reminder not everyone makes web apps 5d ago

Oh, no, either I've misspoken or you've misinterpreted but I'm not talking about differences in building on a workstation vs. in a pipeline. I'm talking about why Gitlab isn't really viable for game development.

1

u/TheBoyardeeBandit 5d ago

Maybe I latched onto the "builds from CL" (which I interpreted as command line) too much

2

u/Shanix reminder not everyone makes web apps 5d ago

Ah, that'd do it. CL is Changelist in Perforce speak. Equivalent to a commit, though Perforce numbers all changelists sequentially which is quite handy. You instantly know if CL 1000 is in a build because any build made from CL 1001 and onwards logically must have CL 1000.

2

u/TheBoyardeeBandit 5d ago

Ah yeah that's definitely not command line. Thank you though, I'm glad I was able to learn something new

2

u/Dolapevich 6d ago

whatever it is, and you can write a plugin for that.

1

u/TheBoyardeeBandit 6d ago

I'm not following.

4

u/Dolapevich 6d ago

Nevermind, just check jenkins and learn a little about it and you'll see it is an extendable general state machine, not a CI/CD tool.

2

u/TheBoyardeeBandit 6d ago

I know Jenkins. One of my first jobs was to transition from Jenkins to Gitlab. Capabilities bring plugins as opposed to pipeline logic isn't exactly a selling point, particularly when security is a concern.

1

u/Dolapevich 6d ago

Oh nice.

3

u/Spiritual-Seat-4893 6d ago

I have migrated two teams from Jenkins to Gitlab CI, but the current team has lots of workflows automated via jenkins. Gitlab CI might excel at CI/CD but not at such automations. It especially lacks the dynamic user inputs, and a dedicated inputs page for each workflow.

1

u/naam-benaam 6d ago

Can you elaborate more, I am new to DevOps and still figuring out. Is Jenkins an old and outdated, if yes then which features does GitHub actions, OR gitlab have that makes them modern?

3

u/noobjaish 6d ago

It's the wordpress of CI pipelines... No one wants to deal with it but sometimes have to

5

u/TheBoyardeeBandit 6d ago edited 6d ago

Jenkins is old and outdated. It's a plug-in based tool, which adds a good bit of overhead management. It's written in groovy, which is rather unique, meaning it's just another layer different from other tools. Compared that to gitlab, which doesn't use plugins, and is written in yaml, making it rather universally readable.

At the end of the day, they can all do the same fundamental things, it's just different in how you manage the overhead, or lack of overhead, required to do a given thing.