Skip to content

Releases: omattsson/stackctl

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 24 Jun 15:18
4298cc8

Highlights

  • stackctl definition update-chart no longer wipes fields (#108) — The command was sending only 4 of the 8 fields the backend stores, so repository_url, chart_path, build_pipeline_id, and deploy_order were silently cleared on every call. Subsequent stack deploys would then fail with helm's non-absolute URLs should be in form of repo_name/path_to_chart. The CLI now seeds the request from the full GET response and lets user flags override individual fields.

  • New --repository-url flag for stackctl definition update-chart (#108) — explicitly set the chart repository_url (validated: only oci://, http://, https:// schemes; empty host rejected). Without this flag there was no path to set the field from the CLI.

Compatibility

Pairs with k8s-stack-manager 0.4.0, which makes the backend PUT merge-safe so partial bodies stop wiping fields. Either side alone closes the bug; both together is belt-and-suspenders. Older backends (≤ 0.3.1) will still accept v0.3.1's full-record PUT correctly.

Install

# macOS / Linux via Homebrew
brew install omattsson/tap/stackctl
brew upgrade omattsson/tap/stackctl

# Manual: pick the archive matching your OS/arch from Assets below
curl -fsSL "https://github.com/omattsson/stackctl/releases/download/v0.3.1/stackctl_0.3.1_linux_amd64.tar.gz" \
  | tar -xz -C /tmp && sudo install -m 755 /tmp/stackctl /usr/local/bin/stackctl

Full changelog

Fixes

  • fix(definition): update-chart preserves all fields + add --repository-url (#108)

Dependencies

  • deps(actions): bump actions/checkout from 6 to 7 (#107)
  • deps(docker): bump alpine from a2d49ea to 28bd5fe (#106)

Full diff: v0.3.0...v0.3.1

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 06:45
f1e4ba7

Highlights

This release closes out epic #59 — stackctl now covers the full K8s Stack Manager API surface as of backend v0.3.1.

~20 new commands across 9 groups

Group New subcommands
template create, update, clone, publish, unpublish, versions list/get/diff
cluster create, update, delete, set-default, health, test-connection, nodes, namespaces, utilization, quota get/set/delete
cleanup-policy list, get, create, update, delete, run [--dry-run]
apikey list, create, revoke
user list, disable, enable, delete, reset-password (+ auth register)
audit log list (with filters), `log export json
analytics overview, templates, users
notification list, `read [id
favorite list, add, remove
git providers
stack watch — subscribe to /ws for deploy/stop events
bulk template delete, publish, unpublish

Wire-contract fixes

  • Bulk endpoints now send instance_ids / template_ids and decode instance_id / template_id + status to match the backend (#98). The previous shape (ids / id + success bool) failed every bulk call with 400 instance_ids is required.
  • CreateClusterRequest / UpdateClusterRequest carry registry_password so registry credentials can be set via API (#95).
  • ChartConfig widened to the union of backend models.ChartConfig + models.TemplateChartConfig — picks up chart_path, deploy_order, build_pipeline_id, locked_values, required that were silently dropped on read.

New test infrastructure

  • Live tests (cli/test/live/) — boot a real backend in CI and exercise every endpoint group end-to-end. Now runs on every PR against a freshly-booted k8s-stack-manager:main (#99, #100).
  • Contract tests (cli/test/contract/) — reflect each pkg/types/ request struct against the vendored backend swagger schema. Catches omitempty drift, typos, and added/removed fields without needing a live backend (#101).

Compatibility

Requires k8s-stack-manager v0.3.1 or newer.

  • stackctl stack watch uses WS subprotocol auth (added in backend #262).
  • stackctl template create --from-file uses inline charts on POST /api/v1/templates (added in backend #264).

Older backends will return 404 or 400 on these endpoints.

Install

# macOS / Linux via Homebrew
brew install omattsson/tap/stackctl
brew upgrade omattsson/tap/stackctl   # if already tapped

# Manual: pick the archive matching your OS/arch from Assets below
curl -fsSL "https://github.com/omattsson/stackctl/releases/download/v0.3.0/stackctl_0.3.0_linux_amd64.tar.gz" \
  | tar -xz -C /tmp && sudo install -m 755 /tmp/stackctl /usr/local/bin/stackctl

Full changelog

Features

  • feat(stack): watch — subscribe to /ws for deploy/stop events (#93)
  • feat(template): create / update / clone (#77), publish / unpublish (#79), versions list/get/diff (#80)
  • feat(bulk): bulk template delete / publish / unpublish (#81)
  • feat(cluster): create / update / delete / set-default (#82), health / test-connection / nodes / namespaces / utilization (#83), quota get/set/delete (#84)
  • feat(cleanup-policy): CRUD (#85), run [--dry-run] (#86)
  • feat(user, auth): admin user lifecycle + auth register (#87)
  • feat(apikey): list / create / revoke per user (#88)
  • feat(analytics): overview / templates / users (#89)
  • feat(audit): list with filters + export json/csv (#90)
  • feat(notification): list / count / read + preferences (#91)
  • feat(favorite, git): favorites CRUD + git providers (#92)
  • chore(stack): polish logs --follow path (#94)

Fixes

  • fix(cluster): include registry_password in Create/UpdateClusterRequest (#95)
  • fix(bulk, types): align bulk + ChartConfig wire contracts with backend (#98)
  • fix(test): reset persistent flags between in-process integration test runs

Tests + CI

  • ci(live): run cli/test/live/ on every PR against a freshly-booted backend (#99)
  • test(live): apikey CRUD, user lifecycle, template versions, cleanup policies, cluster CRUD (#100)
  • test(contract): assert pkg/types request shapes against backend swagger (#101)
  • test(contract): refresh vendored swagger from k8s-stack-manager v0.3.1 (#105)

Plus dependabot updates and CodeRabbit-driven cleanups.

Full diff: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 09 May 19:05

Changelog

  • a7b2985 Add quick install script for Linux/macOS
  • 403fdee Release readiness: debug, retry, dry-run, token expiry, WS warnings (#55)
  • c405af5 feat: stackctl login --sso (#56) (#57)

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Apr 09:57
9f35447

Changelog

  • 80f34ac Add CLAUDE.md and agent definitions for stackctl CLI project
  • 229d2dd Fix JSON field mapping and response types for API compatibility (#39)
  • b2e388a Phase 1.1: Scaffold CLI module, config, and HTTP client (#11)
  • 24f6489 Phase 3.4: Code review and documentation (#20)
  • f2bc94e build(deps): bump alpine from 3.20 to 3.23 (#22)
  • 5c41276 build(deps): bump alpine from 2510918 to 5b10f43 (#36)
  • 373225c build(deps): bump docker/setup-buildx-action in the actions group (#25)
  • 8150b36 build(deps): bump github.com/spf13/pflag (#34)
  • 6729789 build(deps): bump golang from 1.26.1-alpine to 1.26.2-alpine (#27)
  • aaccc66 build(deps): bump golang.org/x/term in /cli in the go-minor-patch group (#26)
  • 85fcb2a build(deps): bump the actions group with 8 updates (#23)
  • 1d56fd6 ci: add security scanning, Docker publishing, coverage tracking, and Dependabot (#21)
  • 65ec3d5 docs: add terminal screenshots to README
  • 2efb4f6 feat(plugin): external command discovery; remove stack refresh-db (#35)
  • d085754 feat: Override, values, and compare commands (issue #6) (#16)
  • a03a933 feat: Template and definition commands (issue #5) (#15)
  • 7bdcd25 feat: add CI/CD pipeline, Makefile, Docker, and goreleaser (#18)
  • f949fd5 feat: add bulk, git, cluster, and completion commands (#17)
  • bca060c feat: add integration tests and full workflow validation (#19)
  • 98232a2 feat: add login, logout, whoami commands (#12)
  • 63f79f5 feat: add stack history, rollback, and history-values commands (#37)
  • bd60ee6 feat: add stack instance lifecycle commands (#13)
  • 51f877a feat: resolve definition names in --definition flag (#48) (#53)
  • 713a0d6 feat: stackctl stack refresh-db subcommand (#32)
  • 9f35447 feat: stream deployment logs with --follow flag (#51) (#54)
  • daaa054 feat: support stack name as alternative to ID in all commands (#42)
  • 38a4684 feat: support stack names in bulk commands (#49)
  • 4671cc2 feat: template delete, orphaned namespaces, definition update-chart (#50)
  • 4798187 fix(ci): add setup-buildx-action for GHA cache support
  • 4c7fb7e fix(test): e2e mock server should return string IDs after UUID migration (#33)
  • 4ebde1d fix: cluster list response format and Version type
  • b4f3b61 fix: migrate all ID types from uint to string (UUID)
  • 197be6c fix: override set sends YAML string; add cluster shared-values commands (#52)
  • dc9dc34 fix: remaining %d format strings for string UUIDs in client and commands
  • 888faae refactor: reduce code duplication flagged by SonarQube (#24)
  • 8250ebb test: comprehensive unit tests for foundation and core commands (#14)