this post was submitted on 12 Apr 2024
115 points (97.5% liked)

Programming

17373 readers
324 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 28 points 7 months ago (4 children)

I have to say, pretty much every CI/CD tool, build automation or whatever you want to call it, sucks.

Somehow they all manage not to offer boilerplate actions since that would be too restrictive, yet they also stand in your way if you want to have advanced features.

I often end up writing pipeline steps/jobs thinking "how is that not already built-in?".

And my absolutely biggest pain point: why the fuck is there not a single tool that lets me execute pipelines locally? Why do I have to have 200 commits all saying a variation of "pipeline test"?

[–] [email protected] 7 points 7 months ago (1 children)

I agree so, so much; and I've been saying similar things for years.

But I recognize that it's probably a hard problem. For one thing, auth is almost never going to work the same way in CI as it does locally.

...still, though, I feel like there could be some much nicer tooling here.

[–] [email protected] 1 points 7 months ago (1 children)

It can't be that hard to create a test harness, so I can plug my own variables into the runner context.

Even just an 80% solution would speed up development tremendously.

[–] [email protected] 1 points 7 months ago

Well, for GitHub Actions, there's this: https://github.com/nektos/act

[–] [email protected] 4 points 7 months ago (1 children)
[–] [email protected] 1 points 7 months ago (1 children)

That actually looks quite promising. You don't happen to know of a similar project for Gitlab runners?

[–] [email protected] 1 points 6 months ago

I do not. I'm sorry.

[–] [email protected] 4 points 7 months ago (2 children)

The sentiment of the first half of your comment is the cause of the problem you describe in the second half. Why /should/ the CI tool have any "steps" built in? Use a task runner, or script in your repo for any task you expect CI to do. Configure CI to run the same command you would run locally.

[–] [email protected] 6 points 7 months ago* (last edited 7 months ago)

It's not the same thing. Sometimes there are rules/conditions in the pipeline you need to test. Sometimes there are child pipelines. There really should be a way to simulate a pipeline run locally.

[–] [email protected] 1 points 7 months ago

I totally agree, with some caveats:

  1. It can make the UI much nicer (though I agree there are probably better ways to do it, e.g. native support for letting the program output determine the UI).
  2. Sometimes you need to run different things on different machines/OSes, and it's easier if you have separate steps there.
[–] [email protected] 2 points 7 months ago

haven't tried it myself, but I've heard https://earthly.dev/ is supposed to address the execute locally problem