Skip to content

Release Workflow

Sara Lambert edited this page Apr 21, 2023 · 6 revisions

This document describes the process of releasing a new stable image tag/version for V2 Workbench.

Roll versions and push new Docker image tags (webui + apiserver + specs)

  1. Roll versions forward, synchronize Swagger specs (copy server -> client + regen)
    • workbench-apiserver-python
      • openapi/swagger-v1.yml: Read by /api/v1/version endpoint and github actions
    • workbench-webui
      • public/swagger.yml: This should match the version from API server
      • package.json: Read by /api/v1/version endpoint and github actions
  2. (Optional) create release branch, test until ready to merge
  3. git checkout main && git pull origin release-x.x.x && git push origin main
    • Pushes to main will trigger new Docker images to be built and pushed automatically
    • MAKE SURE that versions are rolled before pushing to main, or you will overwrite the existing version tags

Roll versions and test the tagged Docker images (helm-chart)

Repeat the same procedure for workbench-helm-chart:

  1. Wait for newly-tagged resources above to automatically finish pushing the new Docker images
  2. Roll versions forward to use the new Docker image tags
    • workbench-helm-chart
      • values.yaml: NDS Labs API Server + UI Docker image version tags
  3. (Optional) create release branch and test
    • Run a quick smoke test with newly-tagged resources
  4. Checkout main, pull in release branch (or develop), push to main
    • git checkout main && git pull origin release-x.x.x && git push origin main

After testing, update documentation and tag main

  1. Update documentation
  2. Create a new tag from main with the new version number (freshly tested and stable)
    • Add CHANGELOG / patch notes here for full release that contains a description of the changes
  3. Pin to new version/tag/branch/commit in subrepos of top-level ndslabs repo

After the release

Backport any missing changes from main into develop

  • This should include, at the very least, a commit from the release branch that rolls forward to new version numbers
  • git checkout develop && git pull origin main && git push origin develop
  • Aside: Why does this not work with a PR?

Legacy (V1) Workbench

  • ndslabs v1.x
    • gui/swagger.yaml: NDS Labs swagger API spec version number
    • apiserver/cmd/clientVersion.go: NDS Labs CLI version number / build date
    • gui/package.json: NDS Labs UI  / webserver NPM package version number
    • gui/ConfigModule.js: NDS Labs UI Angular app build version number
  • kubeadm-bootstrap v1.x
    • install-kubeadm.bash: Kubernetes / Docker version numbers
    • init-master.bash: Helm version numbers
  • kubeadm-terraform v1.x
    • assets/bootstrap.sh: git release/tag/version number
Clone this wiki locally