vscode-gitops-tools icon indicating copy to clipboard operation
vscode-gitops-tools copied to clipboard

VSCode Extension should maybe install Flux CLI

Open kingdonb opened this issue 3 years ago • 3 comments

Ideating on the idea that the Extension should or should not install the CLI for users that are missing it

Right now the docs mention that you need: prerequisites (kubectl, flux) – users are just expected to install them.

  • (Use the preferred package manager)
  • Detect if you have homebrew installed
  • Provide a prompt and let you know if flux CLI is outdated or missing
  • One-click installer is nice but we don't want to bundle a Flux binary that becomes outdated
  • (What if you don't have homebrew)

Maybe we shouldn't try to install the binaries, seems to be the consensus – users don't want surprising things to happen in their environment outside of the editor because they installed some extension, it would be bad if we did those things.

It will be complicated especially for Flux users who are on a particular version of Flux, who don't want to upgrade (because their cluster hasn't been upgraded yet), or for users who are mixing Windows and Linux environments like those who are on WSL vs those who are not.

  • [ ] Make sure the behavior is defined when flux / kubectl CLI are missing
  • [ ] Warn users about compatibility - if the flux CLI is on a different version than is bootstrapped in the cluster
  • [ ] This last one might need some support from Flux upstream, flux check should have a JSON output version

kingdonb avatar Mar 29 '22 14:03 kingdonb

There is some attention to this already, thanks for finding this Paulo and Daniel: https://github.com/weaveworks/vscode-gitops-tools/blob/bdf39cfcb131c51623509bf99d7a3832a1d4d14a/src/install.ts#L122

https://github.com/weaveworks/vscode-gitops-tools/blob/bdf39cfcb131c51623509bf99d7a3832a1d4d14a/src/utils/fsUtils.ts#L165

https://github.com/weaveworks/vscode-gitops-tools/blob/bdf39cfcb131c51623509bf99d7a3832a1d4d14a/src/commands/installFluxCli.ts#L139

kingdonb avatar Mar 29 '22 14:03 kingdonb

I'm curious whether instead of attempting to add things to the developer environment we shouldn't supply an included devcontainer configuration which includes the latest/pinned supported version of Flux cli - give the developer tools up front the latest/pinned supported version of SOPS cli -provide a secrets Guide with the tooling we support the latest/supported version of the GitHub 'gh' cli - provide a cli means of bootstrapping the deploy key via cli anything else that the customer might want.

We can also use something like tasks.json to create 'guides' that can quickstart a developer to success including opening specific docs/guides. I have some examples of these ideas if they need to be discussed.

fire-ant avatar Mar 29 '22 15:03 fire-ant

The dev container is an interesting idea.

While I was exploring this feature, I noticed that I have a gofish binary and it was detected and used.

Bad news is: Flux's gofish is now 4 minor releases out of date, as it (GoFish itself) was archived 3 weeks ago and won't be maintained anymore. We'll have to remove the gofish support at least from the VScode extension, (~also from the Flux docs ::~ done: https://github.com/fluxcd/website/pull/852), since right now the "Install CLI" button fetches an outdated version of the CLI if it can, and that's obviously not ideal.

kingdonb avatar Mar 29 '22 15:03 kingdonb