Remix.run Logo
Show HN: Nanci, CI written in plain Python, locally debuggable(nanci.dev)
1 points by Hex08 6 hours ago

I recently finished building my latest side project and wanted to share it with the world :)

It's a CI/CD platform whose whole point is to be more developer friendly and familiar.

- YAML is replaced by Python, so you don't need to Google again what is the syntax for ifs or how values are compared in a vendor-specific YAML flavor (e.g. https://docs.github.com/en/actions/reference/workflows-and-a...)

- The same engine that runs in the cloud can be run locally and show its output in a terminal UI, so pipelines can be developed and fixed on your laptop without pushing on every change, or needing external tooling that can only get so close to the real thing (e.g. https://github.com/nektos/act)

- Because of the above, you can step through your pipeline with any Python debugger to fix it

- Artifacts are simply Python values that can be moved around between jobs, instead of having to use specialized actions to upload/download them at a specific named location (e.g. https://github.com/actions/upload-artifact)

- The working directory and env vars are preserved across lines

I had a lot of fun building this project and it taught me a lot about QEMU, RabbitMQ, Kubernetes, Docker, AI coding (which I used for the landing page), TUI (especially the awesome Textualize framework), web sockets, SeaORM, web design, and the insane sorceries you can do in Python if you start hacking at the import machinery (see https://github.com/eliaperantoni/nanci/blob/main/engine/test..., in Python a string-as-a-statement is normally a no-op, but it Nanci it executes a shell command in the Docker container).

I hope you like the idea and the proof-of-concept implementation!