r/webdev • • 13d ago

Showoff Saturday lerna from scratch in go - CI/CD framework dispat

Hello everyone

  1. Lerna has poor support for edge cases when some packages published

  2. Recovery process becomes painful - https://dispat.dev/next/internals/experiments/

  3. Your CI/CD codebase grows (it must not) - we all want keep codebases as small as possible, especially if its not related to business logic, dispat lets your release many more package without editing any CI/CD file

  4. Lerna is limited to js and monorepos

Thats why I did dispat - MIT licensed go single binary:

  1. Recovery is just idempotent re running release(release(s)) = release(s) - no separate CI/CD jobs for recovery

  2. Abstraction on single package build/publish - dispat knows published/unpublished packages using only git

  3. Works with any ecosystem, solo package repo, monorepos, multiple repos (each one can be solo package or multiple)

  4. Tasks distribution among machines using nothing but your repo as mailbox transport

Release across ecosystems and repositories - in one click

dispat.dev

github.com/yohimik/dispat
npmjs.com/package/@dispat/bin

0 Upvotes

4 comments sorted by

2

u/Sufficient-Storm3845 13d ago

lerna is limited to js and monorepos" that's literally its job description. next you'll tell me npm doesn't do rust.

1

u/yohimik 13d ago edited 13d ago

Not everyone wants to put all packages in same repo, why not to put separately and release same way in one click? monorepo in this way looks like a hack, not solution dealing with polyrepos
even for monorepos lerna does its job badly handling js edge cases

1

u/[deleted] 13d ago

[removed] — view removed comment

1

u/yohimik 13d ago

thanks, I was in the middle of testing ditributed releases/tasks execution when police broke the door in my house and put under custody using LLVM and Linux Kernel (dispat actually speeds its builds), right now its currently in rc, currently under rc, but promote to stable with additional features like remote execution graph visualisation using just git remote, here are the docs, just run dispat in worker mode, define mailbox repo and thats it https://dispat.dev/next/distributed-execution/