Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package k0sctl for openSUSE:Factory checked in at 2026-04-30 20:29:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/k0sctl (Old) and /work/SRC/openSUSE:Factory/.k0sctl.new.30200 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "k0sctl" Thu Apr 30 20:29:22 2026 rev:20 rq:1350140 version:0.30.0 Changes: -------- --- /work/SRC/openSUSE:Factory/k0sctl/k0sctl.changes 2026-03-27 06:41:49.862963076 +0100 +++ /work/SRC/openSUSE:Factory/.k0sctl.new.30200/k0sctl.changes 2026-04-30 20:29:32.164693210 +0200 @@ -1,0 +2,25 @@ +Thu Apr 30 05:29:07 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.30.0: + * Bump github.com/mattn/go-isatty from 0.0.21 to 0.0.22 (#1076) + * Bump github.com/Azure/go-ntlmssp from 0.1.0 to 0.1.1 (#1075) + * Fix dynamic node config to use lowercase metadata key instead + of Metadata (#1077) + * Bump k8s.io/client-go from 0.35.4 to 0.36.0 (#1074) + * Bump k8s.io/apimachinery from 0.35.4 to 0.36.0 (#1073) + * Bump github.com/k0sproject/rig from 0.21.2 to 0.21.4 (#1072) + * Bump k8s.io/client-go from 0.35.3 to 0.35.4 (#1071) + * Bump k8s.io/apimachinery from 0.35.3 to 0.35.4 (#1070) + * ci: Add support for linux-riscv64 (#1067) + * Bump softprops/action-gh-release from 2 to 3 (#1069) + * Bump dependabot/fetch-metadata from 2 to 3 (#1066) + * Fix TestLocalBinaryProviderCreatesParentDir in sandboxed + environments (#1068) + * Bump golang.org/x/text from 0.35.0 to 0.36.0 (#1065) + * Bump github.com/go-playground/validator/v10 from 10.30.1 to + 10.30.2 (#1058) + * Lowercase auto-detected hostname (#1063) + * Add all the k0sctl packages to the README (#1060) + * Bump github.com/mattn/go-isatty from 0.0.20 to 0.0.21 (#1064) + +------------------------------------------------------------------- Old: ---- k0sctl-0.29.0.obscpio New: ---- k0sctl-0.30.0.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ k0sctl.spec ++++++ --- /var/tmp/diff_new_pack.FTyH3s/_old 2026-04-30 20:29:33.084730962 +0200 +++ /var/tmp/diff_new_pack.FTyH3s/_new 2026-04-30 20:29:33.084730962 +0200 @@ -18,7 +18,7 @@ Name: k0sctl -Version: 0.29.0 +Version: 0.30.0 Release: 0 Summary: A bootstrapping and management tool for k0s clusters License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.FTyH3s/_old 2026-04-30 20:29:33.132732932 +0200 +++ /var/tmp/diff_new_pack.FTyH3s/_new 2026-04-30 20:29:33.140733260 +0200 @@ -2,7 +2,7 @@ <service name="obs_scm" mode="manual"> <param name="url">https://github.com/k0sproject/k0sctl.git</param> <param name="scm">git</param> - <param name="revision">v0.29.0</param> + <param name="revision">v0.30.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.FTyH3s/_old 2026-04-30 20:29:33.168734409 +0200 +++ /var/tmp/diff_new_pack.FTyH3s/_new 2026-04-30 20:29:33.168734409 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/k0sproject/k0sctl.git</param> - <param name="changesrevision">48ad3a597ebe6ab27e8fa0872a222ca72cbc030c</param></service></servicedata> + <param name="changesrevision">82afeb597ef397a7dea2a444b837ece0a6794c48</param></service></servicedata> (No newline at EOF) ++++++ k0sctl-0.29.0.obscpio -> k0sctl-0.30.0.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/.github/workflows/dependabot-auto-approve.yml new/k0sctl-0.30.0/.github/workflows/dependabot-auto-approve.yml --- old/k0sctl-0.29.0/.github/workflows/dependabot-auto-approve.yml 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/.github/workflows/dependabot-auto-approve.yml 2026-04-29 13:57:59.000000000 +0200 @@ -11,7 +11,7 @@ steps: - name: Dependabot metadata id: metadata - uses: dependabot/fetch-metadata@v2 + uses: dependabot/fetch-metadata@v3 with: github-token: "${{ secrets.GITHUB_TOKEN }}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/.github/workflows/release.yml new/k0sctl-0.30.0/.github/workflows/release.yml --- old/k0sctl-0.29.0/.github/workflows/release.yml 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/.github/workflows/release.yml 2026-04-29 13:57:59.000000000 +0200 @@ -49,7 +49,7 @@ run: make build-all - name: Create release and upload binaries - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3 if: startsWith(github.ref, 'refs/tags/') with: files: | @@ -67,7 +67,7 @@ with: builder: ${{ steps.buildx.outputs.name }} context: . - platforms: linux/amd64,linux/arm64,linux/arm/v7 + platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/riscv64 tags: | ghcr.io/k0sproject/k0sctl:latest ghcr.io/k0sproject/k0sctl:${{ steps.tag-name.outputs.tag }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/.github/workflows/update-latest-release.yml new/k0sctl-0.30.0/.github/workflows/update-latest-release.yml --- old/k0sctl-0.29.0/.github/workflows/update-latest-release.yml 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/.github/workflows/update-latest-release.yml 2026-04-29 13:57:59.000000000 +0200 @@ -86,7 +86,7 @@ git push origin dev - name: Create GitHub Release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3 with: tag_name: dev name: Latest Development Build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/Makefile new/k0sctl-0.30.0/Makefile --- old/k0sctl-0.29.0/Makefile 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/Makefile 2026-04-29 13:57:59.000000000 +0200 @@ -53,6 +53,19 @@ --load \ . +bin/k0sctl-linux-riscv64: $(GO_SRCS) + GOOS=linux GOARCH=riscv64 CGO_ENABLED=0 go build $(BUILD_FLAGS) -o bin/k0sctl-linux-riscv64 main.go + +docker/build/linux-riscv64: + docker buildx build \ + --platform=linux/riscv64 \ + --build-arg ENVIRONMENT=$(ENVIRONMENT) \ + --build-arg GIT_COMMIT=$(GIT_COMMIT) \ + --build-arg TAG_NAME=$(TAG_NAME) \ + -t ghcr.io/k0sproject/k0sctl:$(TAG_NAME)-riscv64 \ + --load \ + . + bin/k0sctl-win-amd64.exe: $(GO_SRCS) GOOS=windows GOARCH=amd64 go build $(BUILD_FLAGS) -o bin/k0sctl-win-amd64.exe main.go @@ -62,9 +75,9 @@ bin/k0sctl-darwin-arm64: $(GO_SRCS) GOOS=darwin GOARCH=arm64 go build $(BUILD_FLAGS) -o bin/k0sctl-darwin-arm64 main.go -bins := k0sctl-linux-amd64 k0sctl-linux-arm64 k0sctl-linux-arm k0sctl-win-amd64.exe k0sctl-darwin-amd64 k0sctl-darwin-arm64 +bins := k0sctl-linux-amd64 k0sctl-linux-arm64 k0sctl-linux-arm k0sctl-linux-riscv64 k0sctl-win-amd64.exe k0sctl-darwin-amd64 k0sctl-darwin-arm64 -dockers := linux-amd64 linux-arm64 linux-arm +dockers := linux-amd64 linux-arm64 linux-arm linux-riscv64 bin/checksums.txt: $(addprefix bin/,$(bins)) sha256sum -b $(addprefix bin/,$(bins)) | sed 's/bin\///' > $@ @@ -85,7 +98,7 @@ .PHONY: clean-images clean-images: - docker rmi ghcr.io/k0sproject/k0sctl:$(TAG_NAME)-amd64 ghcr.io/k0sproject/k0sctl:$(TAG_NAME)-arm64 ghcr.io/k0sproject/k0sctl:$(TAG_NAME)-arm + docker rmi ghcr.io/k0sproject/k0sctl:$(TAG_NAME)-amd64 ghcr.io/k0sproject/k0sctl:$(TAG_NAME)-arm64 ghcr.io/k0sproject/k0sctl:$(TAG_NAME)-arm ghcr.io/k0sproject/k0sctl:$(TAG_NAME)-riscv64 smoketests := smoke-basic smoke-basic-rootless smoke-files smoke-upgrade smoke-reset smoke-os-override smoke-init smoke-backup-restore smoke-dynamic smoke-basic-openssh smoke-dryrun smoke-downloadurl smoke-controller-swap smoke-reinstall smoke-multidoc .PHONY: $(smoketests) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/README.md new/k0sctl-0.30.0/README.md --- old/k0sctl-0.29.0/README.md 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/README.md 2026-04-29 13:57:59.000000000 +0200 @@ -56,20 +56,61 @@ ### Package managers +[](https://repology.org/project/k0sctl/versions) + +Note: All packages except for Homebrew and WinGet are community maintained. Any +issues should be reported to the respective package maintainers. + #### [Homebrew](https://brew.sh/) (macOS, Linux) ```sh brew install k0sproject/tap/k0sctl ``` -#### [Chocolatey](https://chocolatey.org/) (Windows) +#### [Nixpkgs](https://search.nixos.org/packages?query=k0sctl) (Linux, macOS) + +```sh +nix profile install nixpkgs#k0sctl +``` + +#### [Alpine](https://pkgs.alpinelinux.org/packages?name=k0sctl) (Linux) -Note: The [chocolatey package](https://community.chocolatey.org/packages/k0sctl) is community maintained, any issues should be reported to the maintainer of the package. +Available in Alpine `community` repositories. + +```sh +apk add k0sctl +``` + +#### [openSUSE](https://software.opensuse.org/package/k0sctl) (Linux) + +Available as an official package for openSUSE Tumbleweed. + +```sh +zypper install k0sctl +``` + +#### [AUR](https://aur.archlinux.org/packages/k0sctl) (Arch Linux) + +Install with an AUR helper: + +```sh +yay -S k0sctl-bin +# or: +paru -S k0sctl-bin +``` + +#### [Chocolatey](https://community.chocolatey.org/packages/k0sctl) (Windows) ```sh choco install k0sctl ``` +#### [WinGet](https://learn.microsoft.com/windows/package-manager/winget/) (Windows) + +```pwsh +winget install k0sproject.k0sctl +``` + ### Container usage It is possible to use `k0sctl` as a docker/OCI container: @@ -845,7 +886,7 @@ The following tokens can be used in the `k0sDownloadURL` and `files.[*].src` fields: - `%%` - literal `%` -- `%p` - host architecture (arm, arm64, amd64) +- `%p` - host architecture (arm, arm64, amd64, riscv64) - `%v` - k0s version (v1.21.0+k0s.0) - `%x` - k0s binary extension (.exe on Windows, empty elsewhere) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/configurer/linux.go new/k0sctl-0.30.0/configurer/linux.go --- old/k0sctl-0.29.0/configurer/linux.go 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/configurer/linux.go 2026-04-29 13:57:59.000000000 +0200 @@ -98,6 +98,8 @@ return "arm64", nil case "armv7l", "armv8l", "aarch32", "arm32", "armhfp", "arm-32": return "arm", nil + case "riscv64": + return "riscv64", nil default: return arch, nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/go.mod new/k0sctl-0.30.0/go.mod --- old/k0sctl-0.29.0/go.mod 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/go.mod 2026-04-29 13:57:59.000000000 +0200 @@ -6,7 +6,7 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/Azure/go-ntlmssp v0.1.0 // indirect + github.com/Azure/go-ntlmssp v0.1.1 // indirect github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6 // indirect github.com/a8m/envsubst v1.4.3 github.com/adrg/xdg v0.5.3 @@ -14,11 +14,11 @@ github.com/creasty/defaults v1.8.0 github.com/gofrs/uuid v4.4.0+incompatible // indirect github.com/k0sproject/dig v0.4.0 - github.com/k0sproject/rig v0.21.2 + github.com/k0sproject/rig v0.21.4 github.com/logrusorgru/aurora v2.0.3+incompatible github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect github.com/masterzen/winrm v0.0.0-20250927112105-5f8e6c707321 // indirect - github.com/mattn/go-isatty v0.0.20 + github.com/mattn/go-isatty v0.0.22 github.com/shiena/ansicolor v0.0.0-20230509054315-a9deabde6e02 github.com/sirupsen/logrus v1.9.4 github.com/stretchr/testify v1.11.1 @@ -27,19 +27,19 @@ golang.org/x/net v0.52.0 // indirect golang.org/x/sys v0.42.0 // indirect golang.org/x/term v0.41.0 // indirect - golang.org/x/text v0.35.0 + golang.org/x/text v0.36.0 gopkg.in/yaml.v2 v2.4.0 ) require ( al.essio.dev/pkg/shellescape v1.6.0 github.com/carlmjohnson/versioninfo v0.22.5 - github.com/go-playground/validator/v10 v10.30.1 + github.com/go-playground/validator/v10 v10.30.2 github.com/jellydator/validation v1.2.0 github.com/k0sproject/version v0.8.0 github.com/sergi/go-diff v1.4.0 - k8s.io/apimachinery v0.35.3 - k8s.io/client-go v0.35.3 + k8s.io/apimachinery v0.36.0 + k8s.io/client-go v0.36.0 ) require ( @@ -88,7 +88,7 @@ gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/klog/v2 v2.140.0 // indirect - k8s.io/kube-openapi v0.0.0-20260304202019-5b3e3fdb0acf // indirect + k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a // indirect k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/go.sum new/k0sctl-0.30.0/go.sum --- old/k0sctl-0.29.0/go.sum 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/go.sum 2026-04-29 13:57:59.000000000 +0200 @@ -2,8 +2,8 @@ al.essio.dev/pkg/shellescape v1.6.0/go.mod h1:6sIqp7X2P6mThCQ7twERpZTuigpr6KbZWtls1U8I890= github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ= github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo= -github.com/Azure/go-ntlmssp v0.1.0 h1:DjFo6YtWzNqNvQdrwEyr/e4nhU3vRiwenz5QX7sFz+A= -github.com/Azure/go-ntlmssp v0.1.0/go.mod h1:NYqdhxd/8aAct/s4qSYZEerdPuH1liG2/X9DiVTbhpk= +github.com/Azure/go-ntlmssp v0.1.1 h1:l+FM/EEMb0U9QZE7mKNEDw5Mu3mFiaa2GKOoTSsNDPw= +github.com/Azure/go-ntlmssp v0.1.1/go.mod h1:NYqdhxd/8aAct/s4qSYZEerdPuH1liG2/X9DiVTbhpk= github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6 h1:w0E0fgc1YafGEh5cROhlROMWXiNoZqApk2PDN0M1+Ns= github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= @@ -40,8 +40,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davidmz/go-pageant v1.0.2 h1:bPblRCh5jGU+Uptpz6LgMZGD5hJoOt7otgT454WvHn0= github.com/davidmz/go-pageant v1.0.2/go.mod h1:P2EDDnMqIwG5Rrp05dTRITj9z2zpGcD9efWSkTNKLIE= -github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU= -github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= +github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/gabriel-vasile/mimetype v1.4.13 h1:46nXokslUBsAJE/wMsp5gtO500a4F3Nkz9Ufpk2AcUM= @@ -60,8 +60,8 @@ github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.30.1 h1:f3zDSN/zOma+w6+1Wswgd9fLkdwy06ntQJp0BBvFG0w= -github.com/go-playground/validator/v10 v10.30.1/go.mod h1:oSuBIQzuJxL//3MelwSLD5hc2Tu889bF0Idm9Dg26cM= +github.com/go-playground/validator/v10 v10.30.2 h1:JiFIMtSSHb2/XBUbWM4i/MpeQm9ZK2xqPNk8vgvu5JQ= +github.com/go-playground/validator/v10 v10.30.2/go.mod h1:mAf2pIOVXjTEBrwUMGKkCWKKPs9NheYGabeB04txQSc= github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo= @@ -104,8 +104,8 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/k0sproject/dig v0.4.0 h1:yBxFUUxNXAMGBg6b7c6ypxdx/o3RmhoI5v5ABOw5tn0= github.com/k0sproject/dig v0.4.0/go.mod h1:rlZ7N7ZEcB4Fi96TPXkZ4dqyAiDWOGLapyL9YpZ7Qz4= -github.com/k0sproject/rig v0.21.2 h1:1a4pt5j37wSZ+LH85NqltmBKHIxhZm7RD5jOig8Z+Xs= -github.com/k0sproject/rig v0.21.2/go.mod h1:bdRDs2dJngbYAEWd6+irYlzUqqBeVXVBcSelpaIvuCw= +github.com/k0sproject/rig v0.21.4 h1:FnBZNEzE+ND7o1P8bmTGawDIqtc33xuaclGHiP76kug= +github.com/k0sproject/rig v0.21.4/go.mod h1:bdRDs2dJngbYAEWd6+irYlzUqqBeVXVBcSelpaIvuCw= github.com/k0sproject/version v0.8.0 h1:Yh1SFDeBqQ7etrGwffY8bWKdbAUjeBOhiZ6oQuuz4sM= github.com/k0sproject/version v0.8.0/go.mod h1:iNV3O8blndsQhxZ8zACfpQhrLDlrTvDlCzx+vgCFtSI= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= @@ -132,8 +132,8 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= @@ -214,7 +214,6 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -227,16 +226,16 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI= +google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -250,16 +249,16 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.35.3 h1:pA2fiBc6+N9PDf7SAiluKGEBuScsTzd2uYBkA5RzNWQ= -k8s.io/api v0.35.3/go.mod h1:9Y9tkBcFwKNq2sxwZTQh1Njh9qHl81D0As56tu42GA4= -k8s.io/apimachinery v0.35.3 h1:MeaUwQCV3tjKP4bcwWGgZ/cp/vpsRnQzqO6J6tJyoF8= -k8s.io/apimachinery v0.35.3/go.mod h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns= -k8s.io/client-go v0.35.3 h1:s1lZbpN4uI6IxeTM2cpdtrwHcSOBML1ODNTCCfsP1pg= -k8s.io/client-go v0.35.3/go.mod h1:RzoXkc0mzpWIDvBrRnD+VlfXP+lRzqQjCmKtiwZ8Q9c= +k8s.io/api v0.36.0 h1:SgqDhZzHdOtMk40xVSvCXkP9ME0H05hPM3p9AB1kL80= +k8s.io/api v0.36.0/go.mod h1:m1LVrGPNYax5NBHdO+QuAedXyuzTt4RryI/qnmNvs34= +k8s.io/apimachinery v0.36.0 h1:jZyPzhd5Z+3h9vJLt0z9XdzW9VzNzWAUw+P1xZ9PXtQ= +k8s.io/apimachinery v0.36.0/go.mod h1:FklypaRJt6n5wUIwWXIP6GJlIpUizTgfo1T/As+Tyxc= +k8s.io/client-go v0.36.0 h1:pOYi7C4RHChYjMiHpZSpSbIM6ZxVbRXBy7CuiIwqA3c= +k8s.io/client-go v0.36.0/go.mod h1:ZKKcpwF0aLYfkHFCjillCKaTK/yBkEDHTDXCFY6AS9Y= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= -k8s.io/kube-openapi v0.0.0-20260304202019-5b3e3fdb0acf h1:btPscg4cMql0XdYK2jLsJcNEKmACJz8l+U7geC06FiM= -k8s.io/kube-openapi v0.0.0-20260304202019-5b3e3fdb0acf/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= +k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a h1:xCeOEAOoGYl2jnJoHkC3hkbPJgdATINPMAxaynU2Ovg= +k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a/go.mod h1:uGBT7iTA6c6MvqUvSXIaYZo9ukscABYi2btjhvgKGZ0= k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 h1:AZYQSJemyQB5eRxqcPky+/7EdBj0xi3g0ZcxxJ7vbWU= k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/phase/gather_facts.go new/k0sctl-0.30.0/phase/gather_facts.go --- old/k0sctl-0.29.0/phase/gather_facts.go 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/phase/gather_facts.go 2026-04-29 13:57:59.000000000 +0200 @@ -3,6 +3,7 @@ import ( "context" "fmt" + "strings" "github.com/k0sproject/k0sctl/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster" "github.com/k0sproject/version" @@ -67,7 +68,7 @@ if n == "" { return fmt.Errorf("%s: failed to resolve a hostname", h) } - h.Metadata.Hostname = n + h.Metadata.Hostname = strings.ToLower(n) log.Infof("%s: using %s as hostname", h, n) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/phase/upload_k0s_test.go new/k0sctl-0.30.0/phase/upload_k0s_test.go --- old/k0sctl-0.29.0/phase/upload_k0s_test.go 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/phase/upload_k0s_test.go 2026-04-29 13:57:59.000000000 +0200 @@ -1,14 +1,18 @@ package phase import ( + "errors" "os" "path/filepath" "runtime" "testing" + "github.com/k0sproject/k0sctl/configurer/linux" + "github.com/k0sproject/k0sctl/configurer/windows" "github.com/k0sproject/k0sctl/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster" "github.com/k0sproject/k0sctl/pkg/k0s/binprovider" "github.com/k0sproject/rig" + rigos "github.com/k0sproject/rig/os" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -30,10 +34,13 @@ } dest := filepath.Join(destDir, destName) - h := &cluster.Host{ - Connection: rig.Connection{Localhost: &rig.Localhost{Enabled: true}}, + h := &genericHost{cluster.Host{ + Connection: rig.Connection{ + OSVersion: &rig.OSVersion{Name: "unknown", ID: "unknown"}, + Localhost: &rig.Localhost{Enabled: true}, + }, K0sInstallPath: dest, - } + }} h.SetSudofn(func(cmd string) string { return cmd }) h.Connection.SetDefaults() require.NoError(t, h.Connect()) @@ -61,3 +68,32 @@ assert.Equal(t, "test", string(content)) } } + +type genericHost struct { + cluster.Host +} + +// Stub out OS detection parts +func (h *genericHost) ResolveConfigurer() error { + switch runtime.GOOS { + case "linux": + h.OSVersion = &rig.OSVersion{Name: "linux", ID: "linux"} + h.Configurer = &genericLinux{} + return nil + case "windows": + h.OSVersion = &rig.OSVersion{Name: "windows", ID: "windows"} + h.Configurer = &windows.Windows{} + return nil + } + + return errors.ErrUnsupported +} + +type genericLinux struct { + rigos.Linux + linux.BaseLinux +} + +func (*genericLinux) InstallPackage(rigos.Host, ...string) error { + return errors.ErrUnsupported +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/host.go new/k0sctl-0.30.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/host.go --- old/k0sctl-0.29.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/host.go 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/host.go 2026-04-29 13:57:59.000000000 +0200 @@ -761,7 +761,7 @@ // The supported tokens are: // // - %% - literal % -// - %p - host architecture (arm, arm64, amd64) +// - %p - host architecture (arm, arm64, amd64, riscv64) // - %v - k0s version (v1.21.0+k0s.0) // - %x - k0s binary extension (.exe on Windows) // @@ -789,7 +789,7 @@ // Literal %. builder.WriteByte('%') case 'p': - // Host architecture (arm, arm64, amd64). + // Host architecture (arm, arm64, amd64, riscv64). builder.WriteString(archToken) case 'v': // K0s version (v1.21.0+k0s.0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/k0s.go new/k0sctl-0.30.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/k0s.go --- old/k0sctl-0.29.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/k0s.go 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/k0s.go 2026-04-29 13:57:59.000000000 +0200 @@ -133,7 +133,7 @@ return dig.Mapping{ "apiVersion": k.Config.DigString("apiVersion"), "kind": k.Config.DigString("kind"), - "Metadata": dig.Mapping{ + "metadata": dig.Mapping{ "name": k.Config.DigMapping("metadata")["name"], }, "spec": dig.Mapping{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/k0s_test.go new/k0sctl-0.30.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/k0s_test.go --- old/k0sctl-0.29.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/k0s_test.go 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/k0s_test.go 2026-04-29 13:57:59.000000000 +0200 @@ -4,6 +4,7 @@ "testing" "github.com/creasty/defaults" + "github.com/k0sproject/dig" "github.com/k0sproject/version" "github.com/stretchr/testify/require" "gopkg.in/yaml.v2" @@ -42,3 +43,32 @@ require.NoError(t, k0s.Validate()) }) } + +func TestNodeConfigUsesLowercaseMetadataKey(t *testing.T) { + k0s := &K0s{ + Config: dig.Mapping{ + "apiVersion": "k0s.k0sproject.io/v1beta1", + "kind": "ClusterConfig", + "metadata": dig.Mapping{ + "name": "k0s", + }, + "spec": dig.Mapping{ + "api": dig.Mapping{ + "address": "10.0.0.1", + }, + "network": dig.Mapping{ + "provider": "kuberouter", + }, + "storage": dig.Mapping{ + "type": "etcd", + }, + }, + }, + } + + nodeConfig := k0s.NodeConfig() + + require.Contains(t, nodeConfig, "metadata") + require.NotContains(t, nodeConfig, "Metadata") + require.Equal(t, "k0s", nodeConfig.DigString("metadata", "name")) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/k0sctl-0.29.0/smoke-test/smoke.common.sh new/k0sctl-0.30.0/smoke-test/smoke.common.sh --- old/k0sctl-0.29.0/smoke-test/smoke.common.sh 2026-03-24 11:03:16.000000000 +0100 +++ new/k0sctl-0.30.0/smoke-test/smoke.common.sh 2026-04-29 13:57:59.000000000 +0200 @@ -29,6 +29,7 @@ ARCH="amd64" case $(uname -m) in arm,arm64) ARCH="arm64" ;; + riscv64) ARCH="riscv64" ;; esac [ -f kubectl ] || (curl -L https://dl.k8s.io/release/v1.28.2/bin/${OS}/${ARCH}/kubectl > ./kubectl && chmod +x ./kubectl) ./kubectl version --client ++++++ k0sctl.obsinfo ++++++ --- /var/tmp/diff_new_pack.FTyH3s/_old 2026-04-30 20:29:33.524749018 +0200 +++ /var/tmp/diff_new_pack.FTyH3s/_new 2026-04-30 20:29:33.560750495 +0200 @@ -1,5 +1,5 @@ name: k0sctl -version: 0.29.0 -mtime: 1774346596 -commit: 48ad3a597ebe6ab27e8fa0872a222ca72cbc030c +version: 0.30.0 +mtime: 1777463879 +commit: 82afeb597ef397a7dea2a444b837ece0a6794c48 ++++++ vendor.tar.gz ++++++ ++++ 5237 lines of diff (skipped)
