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)

  • cerement@slrpnk.net
    link
    fedilink
    arrow-up
    8
    ·
    11 months ago

    I have no knowledge in this area, but this really sounds like containers territory (Docker, not VSCode) ?

    • RegalPotoo@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      11 months ago

      Dev containers is a Docker container under the hood, it’s just some tooling to make it slightly easier to set up - same objections, if I’m using Docker, I’m still stuck with a gross script, just that it’s running inside the container rather than directly on my machine

      • Wyatt@programming.dev
        link
        fedilink
        English
        arrow-up
        7
        arrow-down
        1
        ·
        edit-2
        11 months ago

        What do you mean? I containerize my tools, and write a docker file to install everything. The dockerfile is just something like:

        FROM ubuntu:22.04

        RUN apt-get update &&
        apt-get install -y helm pluto kubeval etc

        How is that gross?

        • fireflash38@lemmy.world
          link
          fedilink
          English
          arrow-up
          2
          ·
          11 months ago

          Now install tools that are only available as github released binaries. And ensure that hashes match for that. Maybe install a tool that needs to be compiled.

    • MajorHavoc@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      11 months ago

      It’s news to me that we’re not all just abusing Docker for this. I’ll have to look into some of these mentioned tools.