Buoyant Cloud

Buoyant Cloud

Adding details to code rollout events

For all customers on a paid plan, Buoyant Cloud automatically detects rollouts to workloads on any Kubernetes cluster that it’s connected to, and creates an event to record this change.

You can augment the rollout event by setting Kubernetes annotations on the Deployment object during rollout time. These annotations are:

  • buoyant.cloud/version: the version of the release, e.g. 1.23. (If unset, the SHA will be used). This will appear in the title of the rollout event.
  • buoyant.cloud/deployer: The email address (or, for GitHub users, GitHub user id) of the person who triggered the rollout.
  • buoyant.cloud/repo-owner: the GitHub Org of the deployed code, e.g. BuoyantIO.
  • buoyant.cloud/repo-name: The name of the Github repo for this service
  • buoyant.cloud/git-sha: the corresponding git SHA of the deployed code, e.g. abc123.
  • buoyant.cloud/rollout-description: Any additional information you may want to include for the rollout, e.g. a changelog. This field is in Markdown format and the maximum length is 64k. This will appear in the “Details” field on the event detail page.

Each annotation is optional, and will augment the corresponding rollout event object with extra information. For example, setting the deployer annotation will allow Buoyant Cloud to display who triggered the rollout; adding the repo-owner, repo-name, and git-sha annotations will allow Buoyant Cloud to link to the GitHub commit, and so on.

One potential use of the rollout-description field is to include an automatically-generated changelog representing the changes in this rollout. For example, the following git command will produce a simple Markdown changelog from $PREV_COMMIT_SHA to $THIS_COMMIT_SHA, including links to the corresponding commit on $GITHUB_REPO_URL:

git log $PREV_COMMIT_SHA..$THIS_COMMIT_SHA1\\ --pretty=format:'* %s ([%aE, %ar]($GITHUB_REPO_URL/commit/%H))'

This generates a bulleted list. If you prefer a non-bulleted list, note that Buoyant Cloud ’s Markdown renderer produces “classic” Markdown and does not automatically add linebreaks. Thus, if you remove the * prefix, you will need to add a <br/> (or two spaces) at the end of each line.