← Back to context

Comment by donatj

4 days ago

Drone was absolutely perfect back when it was Free Software. Literally "run these commands in this docker container on these events" and basically nothing more. We ran the last fully open source version much longer than we probably should have.

When they went commercial, GitHub Actions became the obvious choice, but it's just married to so much weirdness and unpredictability.

Whole thing with Drone opened my eyes at least, I'll never sign a CLA again

It's never just running commands in a container.

Don't get me wrong, it's a fantastic primitive.

But eventually you need to conditionally run some tests (to save compute).

For some benchmarks you might have limited hardware, so you need to coalesce jobs, and only run every 5 or 10 commits. You might want to keep the hardware hot, but also the queue small. So ideally you want to coalesce dynamically.

You also want result reporting, comparisons to previous results. Oh, and since you're coalescing some jobs and doing others conditionally you'll need ways to manually trigger skipped jobs later, maybe bisect too.

It's when you need to economize your compute that CI can get really complex. Especially, if you have fragile benchmark that or flaky tests.

Yes, in theory you can enforce a culture that removes flaky tests, but doing so often requires tooling support -- statistics, etc.

It lives on as Woodpecker, the fork of the last truly free version. As simple as it gets, no CLAs required to contribute.

  • I saw that. We've sadly got a corporate mandate right now to move everyone to GitHub Actions

You and I have very different workflows I think. Drone was probably least intuitive system I've ever used. The idea seems nice, until you learn that Drone pretty much can't do anything useful out of the box. Want to move an artefact between steps, to bad, can't do that (at least you couldn't when we tried it out).

We ended up wrapping everything in a Docker container and back to just running a bash script. Drone had to be used because the architects that be, had decided that Drone was the answer to some question that no one apparently asked.

  • > Drone pretty much can't do anything useful out of the box

    That's the ideal. It's not doing anything you didn't explicitly tell it to.

    > We ended up wrapping everything in a Docker container and back to just running a bash script.

    That's literally what drone is for