Skip to content

v3.15.14 tarball layout change (diff/ → helm-diff-<os>-<arch>/) breaks helm plugin update diff for existing installs #1076

Description

@goldserg

What happened

v3.15.14 (via #1072, "fix: make release tarballs installable offline by helm 4") renamed the top-level directory inside release archives from diff/ to helm-diff-<os>-<arch>/. This breaks helm plugin update diff on any machine where the plugin was installed with a pre-3.15.14 release.

Reason: for existing installs the update hook runs the already-installed copy of install-binary.sh (platformHooks.update → ${HELM_PLUGIN_DIR}/install-binary.sh -u), which is the old pre-3.15.14 script. The old script's installFile() hardcodes HELM_TMP_BIN="$HELM_TMP/diff/bin/diff", while in update mode it always downloads releases/latest — which is now the v3.15.14 archive with the new layout:

Downloading https://github.com/databus23/helm-diff/releases/latest/download/helm-diff-linux-amd64.tgz
Preparing to install into /root/.local/share/helm/plugins/helm-diff
Failed to install helm-diff
	For support, go to https://github.com/databus23/helm-diff.

STDERR:
  cp: cannot stat '/tmp/helm-diff-6OmpsW/diff/bin/diff': No such file or directory
  Error: Failed to update plugin diff, got error (plugin update hook for "diff" exited with error)

This hits CI pipelines that reuse containers with a cached plugin — in our case helmfile init --force → helm plugin update diff → helmfile panics with helmexec.ExitError.

A fresh install works fine, because the v3.15.14 install-binary.sh handles both layouts (explicit fallback to $HELM_TMP/diff/bin/$bin).

Verified by diffing the archives:

# v3.15.13
diff/plugin.yaml
diff/install-binary.sh
diff/bin/diff

# v3.15.14
helm-diff-linux-amd64/plugin.yaml
helm-diff-linux-amd64/install-binary.sh
helm-diff-linux-amd64/bin/diff

Affected

Every install of helm-diff < 3.15.14 on helm plugin update diff. Until the affected machine reinstalls the plugin, every update attempt fails.

Possible directions

  • Revert the layout rename so old update hooks keep working (helm 4 offline-install compat would then need another approach).
  • Or, minimally, document that pre-3.15.14 installs need a one-time helm plugin uninstall diff + reinstall, since the layout rename cannot be picked up by the already-installed update hook.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions