Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hubwagen

Hubwagen icon

Hubwagen hauls Headlamp plugins from public sources into your own Nexus repository — like a pallet truck for plugin artifacts.

It is a small GUI tool (Windows and Linux) that:

  1. Browses two sources for Headlamp plugins: Artifact Hub and the official headlamp-k8s/plugins GitHub releases. Pick a specific version, or Download all at once.
  2. Downloads the plugin archives into a local repository (~/Hubwagen), verifying every download against its sha256 checksum, and can update downloaded plugins to their latest version.
  3. Generates an index.json from the downloaded files — the static catalog format consumed by Headlamp's in-cluster plugin manager.
  4. Uploads archives and index into a Nexus OSS raw hosted repository via HTTP PUT. Before pushing it synchronizes with the repository's current index, so several people can publish to the same Nexus without overwriting each other's plugins — only missing archives are uploaded and the index is merged.

The resulting catalog URL (https://<nexus>/repository/<repo>/index.json) can be added directly in Headlamp under Plugin Manager → Catalog Settings → Static index.

Releases

Every push to main runs the release pipeline: it tests, builds, bumps the patch version, tags it and publishes a GitHub release with three artifacts:

  • hubwagen-linux-amd64.tar.gz
  • hubwagen-windows-amd64.zip
  • hubwagen-windows-amd64-softgl.zip — Windows build bundled with Mesa llvmpipe DLLs for machines without GPU acceleration (VMs, RDP): keep the DLLs next to the exe and everything renders on the CPU.

Usage

Start hubwagen (Linux) or hubwagen.exe (Windows) — no installation required.

On startup Hubwagen checks its GitHub releases for a newer version. If one is found it shows a banner with Update now (downloads the release, verifies its checksum, replaces the executable in place and restarts), Skip this version (never prompt for that version again) and Ignore (dismiss for this session).

Fyne (the GUI toolkit) requires OpenGL 2.0+. Windows VMs without 3D acceleration only expose OpenGL 1.1, so use the softgl bundle there. On Linux, Mesa provides a software fallback out of the box (LIBGL_ALWAYS_SOFTWARE=1 forces it).

  • Browse plugins: choose a source (Artifact Hub or the official repo), filter, select a plugin, pick a version and press Download — or Download all to fetch the latest of every listed plugin.
  • Local Repository: shows downloaded archives and a live preview of the generated index.json, with Update all to latest to refresh them.
  • Upload to Nexus: enter the Nexus base URL (e.g. https://nexus.example.com), the raw hosted repository name, username and password, then Test connection and Upload plugins + index.json.

Prefer https:// URLs: HTTP Basic auth sends the credentials in cleartext, so plain http:// requires ticking Allow insecure HTTP explicitly.

URL, repository and username are persisted between runs. The password is only persisted if Remember password is enabled — the Fyne preferences file is plain JSON, so it is stored unencrypted.

Nexus prerequisites

  • A raw (hosted) repository with deployment policy Allow redeploy.
  • The uploading user needs write permission on that repository.
  • Headlamp fetches index and archives anonymously, so anonymous read access must be enabled.

Building

Linux (needs gcc plus X11/GL headers for Fyne):

go build -o hubwagen ./cmd/hubwagen

Windows binary, cross-compiled on Linux via MinGW (see build/build-windows.sh for a containerized variant):

CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc GOOS=windows GOARCH=amd64 \
  go build -ldflags "-s -w -H=windowsgui" -o hubwagen.exe ./cmd/hubwagen

Tests

go test ./internal/...

End-to-end test against a live Nexus (uploads a real plugin from Artifact Hub and fetches it back anonymously):

go test -tags e2e ./internal/e2e -v \
  -nexus-url=https://nexus.example.com -nexus-repo=headlamp-plugins \
  -nexus-user=<user> -nexus-pass=<password>

Contributing / release flow

main is protected: changes land via pull request with a green test check (no direct pushes). Every merged PR is automatically tagged with the next patch version and published as a GitHub release by the Release workflow.

About

GUI tool that browses Artifact Hub, downloads Headlamp plugin archives, generates a static index and uploads everything to a Nexus raw repository

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages