New Development Workflow

In contrast to the Current Development Workflow, there are more categories contained in the lifecycle, corresponding to the more fine-grained model of the development process. While not as easy as running a single command like mvn clean install, splitting up different types of development tasks into separate modes allows a faster dev/build loop and allows more flexibility about when to execute particular tasks (instead of defaulting to executing all of them for each and every build).

It results in a faster development process and a more maintainable, less brittle toolset.

Project Initialization

Run once upon project creation or occasional migration to updated starter files.

Diagram

Update Runtime Dependencies

This happens during development to add any required services to the Kubernetes configuration.

The new Dependency Resolver Script will be an automated transitive dependency manager which can, given correct Git branch/tag naming and versioning convention, automatically find the newest referenced version of each runtime dependency in the entire graph.

The result is output to the service-dependencies.yaml file which contains the Git URLs to be copied to either the skaffold.yaml or the dev-with-deps overlay kustomization.yaml (TBD).

Diagram

Main Development Workflow

This is the main development loop, where changes to the source code or Kubernetes config files trigger an automatic rebuild and redeploy to the Kubernetes cluster.

Diagram

Code Verification

The verify Skaffold profile is run occasionally to ensure that new code and tests do not have any code quality issues and have enough test coverage.

This is to be run at least once before checking in code.

Diagram