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.
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.
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.
If you fuck up the setup and deploy to multiple environments at once with each one set to rebuild an image/program things can get long. You really have to fuck it though.
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.
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.
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!
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 🙃
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
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.
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.
And if you have a large company and many teams, you think actions will help? (Aside from the UI issues you mention). Rebuilding the Jenkins from scratch now would probably get rid of most of your problems, but in a year is gonna be a mess. It’s similar to how it’s going to go with and CI.
Also, a good DevOps person or team will keep the Devs happy (or at least, not very unhappy) with any tool, a bad one will suck anyhow.
The poorly documented pipeline scripting was always a nightmare for me, plus there’s two different types (declarative vs scripted) and so you have to be extra careful pulling examples from the Internet.
The build agent issue is 100% on your company not providing enough agents though. These days you can spin up agents as containers on k8s as needed.
Ok I’ll do it. I’m here from hot, I’ll admit it. Can you explain this to me in language I’ll understand? I have just a little understanding of programming but decent comprehension skills.
Docker containers in programming are reusable environments. Basically instead of manually setting up an operating system environment from scratch - you give your program this extra layer where you specify each and every thing that will be on the environment.
If your program was always tested on windows 10 instead of windows 9 - you basically have a way to guarantee it always has windows 10. If your program always used x version of Linux a boom, guaranteed. It adds some complexity but reduces and removes randomness from the concept of deploying applications you’ve created.
LK-99 is a room temperature superconductor. It’s a big deal, because it means that energy can be transferred with 0 loss and it doesn’t require loads of cooling to maintain that property (unlike “traditional superconductors” that need liquid nitrogen and other cooling to have that property). An analogy would be like if you got paid all of your paycheck all the time instead of having taxes taken out. The money you get paid is energy and the loss is taxes
There’s controversy that LK-99 can’t be replicated
Going over to the programming side, sometimes you’ll work on a feature and when others go test it, it doesn’t work. A common excuse heard is “well, it works on my machine”. Docker containers solve that problem by essentially (but not really) making a copy of “my machine” and letting people run the program/feature on that copy
So the joke is, if the korean researchers were able to create it in their lab environment (their machine), why don’t they just make a copy of their lab and let others use it
this is a very gross oversimplification, so feel free to suggest any corrections
South Korea is capitalist, North Korea is socialist. People often refer to SK as just Korea either as a statement on the legitimacy of the DPRK or simply because South Korea is far more globally relevant.
If you know what a virtual machine is, a docker container is like a virtual machine that has a curated environment for running a specific program.
To get more technical, they are distinct from VMs in that they share the host machine’s kernel, so they are not as isolated as a VM. Docker (the program used to build or deploy Docker containers) has an internal network it manages, mostly automatically, which contributes to the ease of deploying containers and having the curated environment that makes containers work out of the box on whatever host they’re deployed.
So let’s say you wanted to run a Wordle clone website. You could find a “docker-compose” file online, change the configuration parameters to your liking, tell Docker to boot it, and the application and all its dependencies will be downloaded and built into a ready-made server with Wordle, the same as it works on every other machine with Docker.
programmer_humor
Newest
This magazine is from a federated server and may be incomplete. Browse more on the original instance.