5 ms·
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 requ
by proxysna 4y ago
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.
- 0xbadcafebee 4y agoOoh 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.
- 3np 4y agoNot really clone. It's a fork from the last commit under a free license, after which Drone changed theirs.
- remram 4y agoI 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?
- proxysna 4y agoI 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?
- remram 4y agoI use Helm weekly and this is worse.
- hnlmorg 4y agoFrom 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.
- ArchOversight 4y agoUsing the example from here: https://woodpecker-ci.org/docs/usage/pipeline-syntax 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---parallel-execution 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.
- remram 4y agoI 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 https://github.com/woodpecker-ci/woodpecker/issues/771