44

I'm trying to find a thing, and I'm not turning up anything in my web searches so I figure I'd ask the cool people for help.

I've got several projects, tracked in Git, that rely on having a set of command line tools installed to work on locally - as an example, one requires Helm, Helmfile, sops, several Helm plugins, Pluto, Kubeval and the Kubernetes CLI. Because I don't hate future me, I want to ensure that I'm installing specific versions of these tools rather than just grabbing whatever happens to be the latest version. I also want to ensure that my CI runner grabs the same versions, so I can be reasonably sure that what I've tried locally will actually work when I go to deploy it.

My current solution to this is a big ol' Bash script, which works, but is kind of a pain to maintain. What I'm trying to find is a tool where I:

  • Can write a definition, ideally somewhere shared between projects, of what it means to "install tool X"
  • Include a file in my project that lists the tools and versions I want
  • Run the tool on my machine and let it go grab the platform- and architecture- specific binaries from wherever, and install them somewhere that I can add to my $PATH for this specific project
  • Run the tool in CI and do the same - if it can cache stuff then awesome

Linux support is a must, other platforms would be nice as well.

Basically I'm looking for Pythons' pip + virtualenv workflow, but for prebuilt tools like helm, terraform, sops, etc. Anyone know of anything? I've looked at homebrew (seems to want to install system-wide), and VSCode dev containers (doesn't solve the CI need, and I'd still need to solve installing the tools myself)

you are viewing a single comment's thread
view the rest of the comments
[-] RegalPotoo@lemmy.world 2 points 11 months ago

Thanks for the suggestions. As an update:

  • I spent a few hours playing about with Nix; it's really cool, definitely a very interesting idea but the "time required to learn the tool" to "time saved by using the tool" to "time spent fixing things when it turns out you don't know the tool as well as you thought" ratio isn't looking great right now
  • I've reworked one of my repos to use rtx - it's not perfect, but it's doing what I want without much fuss, so probably going to go with this for now
[-] Andy@programming.dev 1 points 11 months ago

Great! If you get a chance, I'd be interested to hear about your rtx complaints.

[-] RegalPotoo@lemmy.world 2 points 11 months ago

Tbh, I think my issues are less with rtx itself and more the plugins I'm using and the constraints imposed by the asdf plugin structure.

I ran into issues where poorly written plugins could fail to install, but rtx wouldn't recognise the issue and if I re-ran "rtx install" a second time it would tell me that the runtimes were all up to date. I'll see if I can put together a GitHub issue describing it in more detail.

It'd be nice if there was a simple way to reference a local directory as a plugin for a project rather than having to publish a separate git repo.

Generally it's a really well built tool and the docs are excellent, my complaints are nitpicks

this post was submitted on 11 Dec 2023
44 points (95.8% liked)

Programming

17314 readers
577 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 !webdev@programming.dev



founded 1 year ago
MODERATORS