UNCLASSIFIED - NO CUI

Implement auto Big Bang checkout checks and updates

#48 (closed) adds in the ability for bbctl to clone Big Bang into the configuration directory for users who do not actively develop Big Bang. We want to make sure that this checkout doesn't become stale and out of date.

Acceptance Criteria

  • Create a configuration for bbctl to configure Big Bang checkout management
  • Support prompting for updates as well as automatically updating, both enabled by default if the checkout repo is the default, self-managed checkout (probably in the config directory). Otherwise, disable auto updating but leave prompts enabled.
  • On startup, similar to checking for bbctl updates, attempt to see if the local check out of Big Bang is out of date.
  • If it is, execute a git fetch and git pull on the main current branch when command requires the big-bang-repo (currently required by the cmd/deploy package). Correctly handle local changes and prompt the user if there's issues. Display the output of the git pull ran on the big-bang-repo in the configurations file.
  • Add this to the configuration init wizard

Summary

  • Added in global configurations for big bang repo skip auto update and for bbctl version update check skip instead of being implicitly implied as a config setting to manually add in
  • Added in both to config wizard, defaulting to false
  • Implemented call to git pull command on big bang repo configured and output using existing lipgloss color schema
  • Added check to big bang repo to applicable commands, which currently consists of the deploy package
  • Added in changes to the testing frameworks to work with the new logic
  • Added tests for coverage of at least 90%+ for affected packages

Relevant logs/screenshots

The following should error out due to invalid big-bang-repo: path in /.bbctl/config.yaml:

$~/downloads/bbctl-app/bbctl$ make build


$~/downloads/bbctl-app/bbctl$ ./bin/bbctl deploy bigbang 
Error: unable to update big bang repository checkout: error running update command: local checkout of Big Bang update resulted in error output, consider upgrading manually
Usage:
  bbctl deploy bigbang [flags]

Examples:
  # Deploy Big Bang to your cluster
  bbctl deploy bigbang

  # Deploy Big Bang with additional configurations for a k3d development cluster
  bbctl deploy bigbang --k3d

  # Deploy Big Bang with a helm overrides file. All arguments after -- are passed to the underlying helm command
  bbctl deploy bigbang -- -f ../path/to/overrides/values.yaml

Flags:
      --addon strings   Enable this Big Bang addon in the deployment
  -h, --help            help for bigbang
      --k3d             Include some boilerplate suitable for deploying into k3d

Global Flags:

                                 ...


{"time":"2025-04-28T17:18:08.377833759-06:00","level":"ERROR","source":{"function":"main.injectableMain","file":"/home/darrienlee/downloads/bbctl-app/bbctl/main.go","line":225},"msg":"error executing command: unable to update big bang repository checkout: error running update command: local checkout of Big Bang update resulted in error output, consider upgrading manually"}

The following is using valid big-bang-repo, error is due to not being config'd into a cluster, meaning it got past the big bang checkout step noted by the second log:


$~/downloads/bbctl-app/bbctl$ ./bin/bbctl deploy bigbang 
{"time":"2025-04-28T17:19:09.595617582-06:00","level":"INFO","msg":"INFO Local checkout of Big Bang already up to date"}
{"time":"2025-04-28T17:19:09.596804317-06:00","level":"INFO","msg":"INFO preparing to deploy Big Bang to cluster, k3d=false"}
Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version": dial tcp 127.0.0.1:8080: connect: connection refused
Error: error running deploy command: exit status 1
Usage:
  bbctl deploy bigbang [flags]

Examples:
  # Deploy Big Bang to your cluster
  bbctl deploy bigbang

  # Deploy Big Bang with additional configurations for a k3d development cluster
  bbctl deploy bigbang --k3d

  # Deploy Big Bang with a helm overrides file. All arguments after -- are passed to the underlying helm command
  bbctl deploy bigbang -- -f ../path/to/overrides/values.yaml

Flags:
      --addon strings   Enable this Big Bang addon in the deployment
  -h, --help            help for bigbang
      --k3d             Include some boilerplate suitable for deploying into k3d

Global Flags:

                                 ...

{"time":"2025-04-28T17:19:09.745800476-06:00","level":"ERROR","source":{"function":"main.injectableMain","file":"/home/darrienlee/downloads/bbctl-app/bbctl/main.go","line":225},"msg":"error executing command: error running deploy command: exit status 1"}

OLD:

  • Added in global configurations for big bang repo skip auto update and for bbctl version update check skip instead of being implicitly implied as a config setting to manually add in
  • Added in both to config wizard, defaulting to false
  • Implemented call to git pull command on big bang repo configured and output using existing lipgloss color schema

Relevant logs/screenshots

$ make build ran right before these tests, config.yaml adjusted to comments on each command ran: bbctl-git-pull-bigbang bbctl-git-pull-bigbang-error

Edited by Darrien Lee