Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Nice to Woodpecker CI getting some traction. Great software for selfhosted ci. Simpler to start than Jenkins, not as flexible ofc, but most projects do not require that amount of flexibility and footguns. Woodpecker one of the best tools for small/medium self-hosted CI's out there atm.


I just took one look, I had never heard of it before, and... it's depending on the serialization order of steps in the YAML to run pipelines?! What fresh hell is this?

Loading the YAML file in a language where dictionaries/hashmaps don't preserve the insertion order and serializing again will break your file? How could they fail at such a basic step of making a YAML-configurable CI system?

This is the worst abuse of YAML I have ever seen. Was putting `-` in front of each step too obvious?


From what I’ve seen, the config uses dictionaries for concurrent pipelines. Sequential commands are in an array (ie hyphen prefixed).

Plus it’s a bit late to hate on YAML for CI config since it’s already being used by most services, such as:

  - Concource
  - Travis
  - CircleCi
  - GitHub Actions
  - Gitlab
  - AWS CodeBuild

…not to mention a crap load of other orchestration services from docker-compose to k8s to CloudFormation.

Like it or not, the YAML-train left the station years ago. So Woodpecker isn’t doing anything here this isn’t already an established industry norm.


I am not hating on the whole of YAML, but the way they are misusing it in Woodpecker. None of those other services you mention are doing something this bad, e.g. relying on parts of YAML that are NOT standard (ordering of elements in a dict) and not supported by some languages/libraries.

> From what I’ve seen, the config uses dictionaries for concurrent pipelines.

You are wrong about that, see https://github.com/woodpecker-ci/woodpecker/issues/771


Oh wow. You’re right. That is dumb. When I glanced over the example config file it looked like frontend and backend was intended to run in parallel (because that would have been the sensible way to design it).

It’s such a shame that the authors aren’t receptive to the problem because the longer they leave it the bigger the issue to change it will be.


Using the example from here:

https://woodpecker-ci.org/docs/usage/pipeline-syntax

The problem here is that if you load this YAML, modify it in code, and write it back out, but use a library or language that doesn't keep the ordering of the two entries the same, they will run in the wrong order.

As in their example: backend will be built, followed by frontend. Serially. Those are two different steps.

If instead you loaded this file and saved it without keeping the dictionary ordering the same, it is possible that frontend would not get built before backend.

To get what you want, you have to use the group option to group them together: https://woodpecker-ci.org/docs/usage/pipeline-syntax#group--... at which point frontend/backend would get run in parallel.

Gitlab CI requires you to define your stages up-front, and tasks in the same stage all get executed at the same time.

On Github CI all tasks get executed in parallel by default, unless you specify a needs dependency at which point it will run the steps as required to meet those needs requirements.


I despise yaml as much as the other guy, but it works here well enough for what it does.

> This is the worst abuse of YAML

When was the last time you looked at k8s manifests?


I use Helm weekly and this is worse.


Ooh yes it's the Drone clone! I haven't used Woodpecker, but Drone is fantastic. Can't wait to use this next time I need a self-hosted CI.


Not really clone. It's a fork from the last commit under a free license, after which Drone changed theirs.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: