Hacker News new | ask | show | jobs
by simon04 700 days ago
> other CI systems also have this problem, but often provide mechanisms to write individual tasks in other languages

GitLab CI allows to run a bunch of commands in any Docker image you specify. The Docker image and/or your scripts may be self-written.

How do you find, for instance, GitHub Actions more advanced?

1 comments

> How do you find, for instance, GitHub Actions more advanced?

Being able to easily tap into an ecosystem of existing re-usable functionality (actions) is a great and pretty advanced feature that requires a very different (and more advanced) set of abstractions than running “a bunch of commands in a docker image you specify”.

Not that it’s a perfect system, but a core CI system with a decoupled layer of “things that run on that CI system” is a great model.

For example, the core of GitHub actions doesn’t have anything built-in that clones repositories. That’s a first-party action (component) that GitHub develops, releases and evolves independently. But you can roll your own if you want.

Not sure if you're aware, but Gitlab has had cross-project 'includes' for a long time, and publishes a big chunk of templates for these on gitlab.com.

They've also introduced Components a year?(don't hold me to that) ago, which is more akin to the GitHub actions model.

https://docs.gitlab.com/ee/ci/components/index.html

While components look great (and I wasn’t aware!), it’s still just the same old “template-metaprogramming-with-yaml” that includes are:

> Avoid using global keywords in a component. Using these keywords in a component affects all jobs in a pipeline, including jobs directly defined in the main .gitlab-ci.yml or in other included components.

This is very different (and a whole lot less advanced) than being able to run a 3rd party GitHub action written in JavaScript, alongside another running in its own container image, mixed in with your own steps.

Because Gitlab CI bakes everything into one layer it’s much much harder to evolve and extend, and so it fossilizes whilst being unable to shake it’s baggage.