Adding details to code rollout events

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:

AnnotationDescription
buoyant.cloud/versionThe 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/deployerThe email address (or, for GitHub users, GitHub user id) of the person who triggered the rollout.
buoyant.cloud/repo-ownerThe GitHub Org of the deployed code, e.g. BuoyantIO.
buoyant.cloud/repo-nameThe name of the Github repo for this service
buoyant.cloud/git-shaThe corresponding git SHA of the deployed code, e.g. abc123.
buoyant.cloud/rollout-descriptionAny 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.

Example: Automatic changelog

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.