| ▲ | gen220 7 hours ago | ||||||||||||||||||||||||||||||||||
If you wanted a better version of GitHub Actions/CI (the orchestrator, the job definition interface, or the programming of scripts to execute inside those jobs), it would presumably need to be more opinionated and have more constraints? Who here has been thinking about this problem? Have you come up with any interesting ideas? What's the state of the art in this space? GHA was designed in ~2018. What would it look like if you designed it today, with all we know now? | |||||||||||||||||||||||||||||||||||
| ▲ | shykes 5 hours ago | parent | next [-] | ||||||||||||||||||||||||||||||||||
I've been working for the last 5 years on an alternative called Dagger. Ended up building a company around it. We started from the ideal state of CI, and set out to build the platform that would support that. For us this ideal state of CI boils down to 4 things: - local-first (local execution should be a first-class citizen, with no exception) - repeatable (the same inputs should yield the same output, with affordances for handling inevitable side effects in an explicit and pragmatic way) - programmable. my workflows are software. I want all the convenience of a modern software development experience: types, IDE support, a rich system API , debugging tools, an ecosystem of reusable components, etc. - observable. I want all the information in one place about everything that happened in my workflow, with good tooling to get the information I need quickly, and interop with the existing observability ecosystem (eg. open telemetry) So Dagger is our best effort at a CI platform focused on those 4 things. Sorry if this comes across as a sales pitch. When you're building solves a problem you're obsessed with, it's hard to discuss the problem without also mentioning the solution that seems the most obvious to you :) | |||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
| ▲ | dan_manges 4 hours ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||
I've been working on this problem for the past couple of years. State of the art: - local CLI instead of git push to run - graph-based task definitions with automatic distributed execution, instead of the job/step abstraction - automatic content-based caching to skip unnecessary executions (happens a lot in CI pipelines) - container-based runtime (instead of proprietary base images) without using docker directly (too slow) There are a lot of other ways to improve the developer experience. Happy to chat with anybody interested, I'm dan@rwx.com | |||||||||||||||||||||||||||||||||||