this post was submitted on 11 Aug 2023
546 points (95.5% liked)

Programmer Humor

19623 readers
67 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
top 50 comments
sorted by: hot top controversial new old
[–] fkn 143 points 1 year ago (5 children)

I know this is a meme, but just in case someone doesn't actually know. CI saves literally thousands upon thousands of dev hours a year, even for small teams.

[–] [email protected] 37 points 1 year ago (3 children)

As annoying as it is when someone else breaks the CI pipeline on me, it is utterly invaluable for keeping the vast majority of commits from being able to break other people (and from you breaking others). I can't imagine not having some form of CI to preventing merging bad code.

[–] [email protected] 8 points 1 year ago (1 children)

You should have seen my last job.

[–] rambaroo 4 points 1 year ago

Hah, or my current one. Before we had CI you just directly committed to master (on SVN). It was incredible how unstable our build was. It broke basically everyday. Then one of the senior back end guys got promoted to architect and revamped the whole thing. Probably saved the company tens of millions dollars in man hours, at the very least.

[–] [email protected] 4 points 1 year ago

Even better is when you restrict merges to trunk/main/master/develop (or whatever you call it) to only happen from the CI bot *after all tests (including builds for all supported platforms) pass. Nobody else breaks the CI pipiline, because breaking changes just don't merge. The CI pipeline can test itself!

[–] TheBananaKing 3 points 1 year ago

I often wonder if there isn't some goodharty kind of local-maximum trap hiding in this..

[–] [email protected] 37 points 1 year ago

And a lot of users' frustration, especially on more niche platforms (Linux, ARM, etc.) - things look much better on release when the code have been regularly compiled and, hopefully tested, on all platforms, not just the one the lead developer uses.

[–] devious 30 points 1 year ago (1 children)

Why waste time with CI when you can save on thousands of dev hours by limiting yourself to only one giant fuck off release every year!

/Taps forehead so hard it causes brain damage

[–] fkn 5 points 1 year ago

Shudders in month long integration events.

[–] Dasnap 16 points 1 year ago (1 children)

It wouldn't surprise me if this meme was made by an ops guy.

[–] [email protected] 7 points 1 year ago (1 children)

Ops loves CI systems, if the artifact doesn't come from Jenkins (or friends) it simply doesn't exist to us.

[–] Dasnap 4 points 1 year ago (1 children)

I'm also ops and I get it, it just seems like they're shitposting.

[–] [email protected] 4 points 1 year ago (1 children)

I sure hope so ;) else I'm on the wrong /c

[–] Dasnap 3 points 1 year ago

We only have serious IT discussions here.

[–] [email protected] 7 points 1 year ago (1 children)

Probably also causes lots of hours of maintenance and troubleshooting...but it's a net gain in the end.

[–] fkn 14 points 1 year ago (2 children)

I can't even imagine not having a ci pipeline anymore. Having more than a single production architecture target complete with test sets, Security audits, linters, multiple languages, multiple hour builds per platform... hundreds to thousands of developers... It's just not possible to even try to make software at scale without it.

load more comments (2 replies)
[–] Ghostalmedia 52 points 1 year ago* (last edited 1 year ago) (2 children)

“Leeroy Jenkins” is what my backend guys say right before they huck a major DB upgrade into prod without testing it in staging.

[–] [email protected] 23 points 1 year ago (1 children)

Always Friday at 16:59 right?

[–] Ghostalmedia 19 points 1 year ago (1 children)

Right before a long weekend where Monday is a government holiday.

Also, Leeroy tried to optimize his PTO and hooked a backpacking trip onto the long weekend. He will be out all week and will have no phone reception.

load more comments (1 replies)
[–] [email protected] 12 points 1 year ago

Our old Jenkins box is called Leroy, and my old place it was called Jankins. Thankfully we’ve moved on from that trash.

[–] [email protected] 39 points 1 year ago* (last edited 1 year ago) (6 children)

Real talk- I agree with this meme as truth.

The more and more I use CICD tools, the more I see value in scripting out my deployment with shell scripts and Dockerfiles that can be run anywhere, to include within a CICD tool.

This way, the CICD tool is merely a launch point for the aforementioned deployment scripts, and its only other responsibility is injecting deployment tokens and credentials into the scripts as necessary.

Anyone else in the same boat as me?

I’d be curious to hear about projects where my approach would not work, if anyone is willing to share!

Edit: In no way does my approach to deployment reduce my appreciation for the efforts required to make a CICD pipeline happen. I’m just saying that in my experience, I don’t find most CICD platforms’ features to be necessary.

[–] wso277 23 points 1 year ago

This is pretty much what we do as well

All the build logic is coded in python scripts, the jenkins file only defines the stage (with branch restrictions) and calls the respective script function.

This means it works on all machines and if we need to move away from jenkins integration with a new ci platform would require minimal effort.

[–] [email protected] 14 points 1 year ago

You're not advocating against CI like the meme seems to be, but rather for CI builds to be runnable on human's machines and the results should be same/similar as in when running w/in the CI system. Which is what CI folks want anyway.

[–] SpaceNoodle 4 points 1 year ago (1 children)

Yeah, except for the Docker part

[–] gornius 9 points 1 year ago (1 children)
[–] SpaceNoodle 6 points 1 year ago (1 children)

TBF, the problem isn't Docker, it's overused containerization

[–] [email protected] 10 points 1 year ago (1 children)

I’ve found Docker helpful when I want to use it to build binaries or use CLI tools that may not be available directly on the CICD platform. Also, Docker makes it easier to run the same code on MacOS that I ended up running on a Linux CICD server.

What would you consider to be overuse of containers?

[–] SpaceNoodle 3 points 1 year ago

Snap is a good example of container madness.

[–] devious 2 points 1 year ago

I don't think there is a single right or wrong answer but to play devils advocate making your CI tooling lightweight orchestration for your scripts that do the majority of the work means you lose the advantages of being able to easily add in third party tools that you want to integrate with your pipeline (quality, security, testing, reporting, auditing, artefact management, alerting, etc). It becomes more complex the more pipelines you are creating while maintaining a consistent set of tooling integrations.

load more comments (2 replies)
[–] LOLjoeWTF 29 points 1 year ago (2 children)

Ah, good 'ol Jenkins. It's on my list of software I never want to use again, twice.

One feature was really sweet though: being able to edit the Jenkinsfile script inline and run it. On the other hand, that encouraged the wild cowboy lands. Contrasted to GitHub Actions, you get to see how many commits it took to get right 🙃

[–] [email protected] 23 points 1 year ago

Nobody will see me force push to "bugfix/gitlabCI" the 10th time today...

[–] [email protected] 7 points 1 year ago (1 children)

What's wrong with Jenkins? Works pretty great for automated scripts that need to run on a schedule, but I imagine you and this post specifically mean in reference to CI/CD

[–] [email protected] 7 points 1 year ago (3 children)

I work for a very large company which uses Jenkins for CI/CD and it’s an absolute nightmare. Granted, some of these issues may be related to how my company has it setup. I’m not in DevOps so I wouldn’t know. But these are my complaints:

  • Can have incredibly long queue times in some cases. It takes forever to spin up additional build agents to meet demand. In one case we actually had to abort a deploy because Jenkins wasn’t spinning up more build agents, and our queue times were going to put us outside of our 3 HOUR maintenance window.

  • Non-standard format for pipeline configuration files. It could just be JSON or YAML, but noooo, I have to learn something completely different that won’t transfer to other products.

  • Dated and overly complicated UI with multiple UX issues. I can view the logs in a modal from the build page, but I can’t copy from them? Fuck off Jenkins.

I’m actively pushing my team to transition to GitHub actions, because it’s just better in every single way.

[–] [email protected] 3 points 1 year ago

Ah man, yeah I use it for a much more constrained and very narrow use case. We only use GitHub actions for CI/CD, it can be clunky itself in some aspects but otherwise works great.

load more comments (2 replies)
[–] [email protected] 27 points 1 year ago (2 children)

Counterpoint: watching little green checkmarks appear when my PR passes a pipeline step gives me dopamine

load more comments (2 replies)
[–] [email protected] 24 points 1 year ago

Allow me to blow your mind: my Jenkins build calls build.sh because I'm not a fuckin idiot

[–] [email protected] 21 points 1 year ago

WHAT THE FUCK IS BUILD.SH, ALL MY CODE IS IN MAIN.C JUST COMPILE THE DAMN THING

[–] [email protected] 16 points 1 year ago* (last edited 1 year ago)

Joke's on you. I have a Jenkins hook from github to trigger build.bat! :P

[–] [email protected] 6 points 1 year ago (1 children)

Yeah sure. Try building anything more complex than helloworld.c with a build.sh

[–] [email protected] 15 points 1 year ago (1 children)

More complex build systems are just build.sh calling other build.sh in different configurations and using different software. It's build.sh all the way down.

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago)

The point is that "build.sh" implies a single file, which becomes an absolute nightmare to maintain on larger projects

[–] [email protected] 5 points 1 year ago* (last edited 1 year ago) (2 children)

Ha ha. I work on Bazel (a great build tools, https://bazel.build), and I agree 100%.

[–] [email protected] 7 points 1 year ago (1 children)
[–] [email protected] 3 points 1 year ago

Thanks? I'm not sure why you wanted to share that with me.

[–] [email protected] 6 points 1 year ago

Hey buddy can you step over here, there's a very tall cliff I want you to see

[–] [email protected] 4 points 1 year ago

If I break our master build in CI, I get multiple emails and people saying "fix this"!!! I wouldn't have to fix it if you stopped letting people commit directly to master and stopped using git rebase! 😁

[–] [email protected] 3 points 1 year ago* (last edited 1 year ago)

I believe he goes by Leroy

[–] GlitchSir 2 points 1 year ago

The build system issue is getting out of control. Just look at cmake

When your build system is a build system for build systems you know something went wrong years ago

load more comments
view more: next ›