Modern CI Is Too Complex and Misdirected

44 thundergolfer 7 8/20/2025, 3:30:06 AM gregoryszorc.com ↗

Comments (7)

IshKebab · 6m ago
Yeah I think this is totally true. The trouble is there are loads of build systems and loads of platforms that want to provide CI with different features and capabilities. It's difficult to connect them.

One workaround that I have briefly played with but haven't tried in anger: Gitlab lets you dynamically create its `.gitlab-ci.yaml` file: https://docs.gitlab.com/ci/pipelines/downstream_pipelines/#d...

So you can have your build system construct its DAG and then convert that into a `.gitlab-ci.yaml` to run the actual commands (which may be on different platforms, machines, etc.). Haven't tried it though.

jph · 1h ago
You're 100% right IMHO about the convergence of powerful CI pipelines and full build systems. I'm very curious what you'll think if you try Dagger, which is my tool of choice for programming the convergence of CI and build systems. (Not affiliated, just a happy customer)

https://dagger.io/

qwertytyyuu · 11m ago
Wait a CI isn't supposed to be a build system that also runs tests?
tacker2000 · 40m ago
These online / paid CI systems are a dime a dozen and who knows what will happen to them in the future…

Im still rocking my good old jenkins machine, which to be fair took me a long time to set up, but has been rock solid ever since and will never cost me much and will never be shut down.

But i can definitely see the appeal of github actions, etc…

thrown-0825 · 25m ago
until you have to debug a GH action, especially if it only runs on main or is one of the handful of tasks that are only picked up when committed to main.

god help you, and don’t even bother with the local emulators / mocks.

forrestthewoods · 12m ago
> But if your configuration files devolve into DSL, just use a real programming language already.

This times a million.

Use a real programming language with a debugger. YAML is awful and Starlark isn’t much better.

thrown-0825 · 2m ago
bonus points when you start embedding code in your yamlified dsl.