Development release and deployment

Vouch has the following stages of deployment and release for the dev cycle:

  • Deploy WIP binaries manually in dev
  • Release alpha artifacts. Usually deployed via ansible to dev
  • Release beta artifacts intended to be the next stable release candidate

Deploy WIP binaries manually in dev

  • Ensure you update the ReleaseVersion in main.go to something appropriate for your changes, e.g. v1.9.0-alpha.dev.
  • Build a vouch binary from your changes that is appropriate for the target infrastructure - most likely linux/amd64.
  • Copy the binary to the target host, e.g. scp /path/to/vouch eth-val-d04-01.attestant.io:/home/vouch.
  • Log in to the host and execute ./home/vouch/vouch --version to verify it is the same as set in the first step.
  • If you're changes require updates to the config be sure to create a backup of /home/vouch/.vouch.yml and then edit accordingly.
  • Move the new binary to the vouch bin location and restart vouch, e.g. mv /home/vouch/vouch /home/vouch/bin/vouch && chown vouch /home/vouch/bin/vouch && systemctl restart attestant-vouch

Release alpha artifacts

  • Create branch of intended changes and be sure to update ReleaseVersion in main.go to match the tag in the next step.
  • Tag the branch with a dev label, e.g. git tag -a v1.x.0-alpha.y -m "<insert message briefly describing changes>", where x is the target minor version and y is the next iteration of the alpha. For example, if the current version in dev was v1.9.0-alpha.1 the next version would be v1.9.0-alpha.2.
  • Push the tag to github, e.g. git push origin v1.9.0-alpha.7, this will automatically create a Draft release in the github releases page.
  • The Draft release is not immediately visible to others - it needs to be published first. You can do this by navigating to the github releases page, finding the release and clicking the edit button. Once there you should update the release description and ensure Set as a pre-release is selected at the bottom. Finally, click the publish button.
  • Once the release is published it should be possible to update the release ansible and push the new version to dev.
  • Announce the release in #vouch on Discord.
  • Do NOT pin the release announcement.

Release beta artifacts

  • Create branch of intended changes and be sure to update ReleaseVersion in main.go to match the tag in the next step.
  • Tag the branch with a dev label, e.g. git tag -a v1.x.0-beta.y -m "<insert message briefly describing changes>", where x is the target minor version and y is the next iteration of the beta. For example, if the current version in dev was v1.9.0-beta.1 the next version would be v1.9.0-beta.2.
  • Push the tag to github, e.g. git push origin v1.9.0-beta.7, this will automatically create a Draft release in the github releases page.
  • The Draft release is not immediately visible to others - it needs to be published first. You can do this by navigating to the github releases page, finding the release and clicking the edit button. Once there you should update the release description and ensure Set as a pre-release is selected at the bottom. Finally, click the publish button.
  • Once the release is published it should be possible to update the release ansible and push the new version to dev.
  • Announce the release in #vouch on Discord.
  • Do NOT pin the release announcement.

Production release

Vouch has the following release processes for production:

  • Release new minor version artifact to be the latest stable release
  • Release patch version as a backport to current stable release

Release new minor version artifact to be the latest stable release

  • Choose a commit that you would like to be the new minor version, be sure to update ReleaseVersion in main.go to match the tag in the next step.
  • Tag the branch with a release label, e.g. git tag -a v1.x.0 -m "<insert message briefly describing changes>", where x is the target minor version. For example, if the current latest version was v1.8.3 the next version would be v1.9.0.
  • Push the tag to github, e.g. git push origin v1.9.0, this will automatically create a Draft release in the github releases page.
  • The Draft release is not immediately visible to others - it needs to be published first. You can do this by navigating to the github releases page, finding the release and clicking the edit button. Once there you should update the release description and ensure Set as latest release is selected at the bottom. Finally, click the publish button.
  • Announce the release in #vouch on Discord.
  • Pin the release announcement.

Release patch version as a backport to current stable release

  • Create/Find a branch of the current minor release patch version increments. E.g. if the current version of vouch is v1.8.0, you should create a branch off that commit explicitly called v1.8.x, or simply change to that branch if it already exists.
  • Create a new branch from the above branch to add your changes to. E.g. if the latest version is v1.8.2 you would git checkout v1.8.x, then create a branch for the next version, which in this example would be git checkout -b v1.8.3.
  • Add your changes to the new branch, be sure to update ReleaseVersion in main.go to match the tag in the later step. Push your changes to github and raise a PR from your new branch to the patch versions branch. E.g. in the example above you would add your changes to v1.8.3 and raise a PR to merge those changes in to v1.8.x
  • Tag the branch with a release label, e.g. git tag -a v1.x.y -m "<insert message briefly describing changes>", where x is the target minor version and y is the next patch version. For example, if the current latest version was v1.8.1 the next version would be v1.8.2.
  • Push the tag to github, e.g. git push origin v1.8.2, this will automatically create a Draft release in the github releases page.
  • The Draft release is not immediately visible to others - it needs to be published first. You can do this by navigating to the github releases page, finding the release and clicking the edit button. Once there you should update the release description and ensure Set as latest release is selected at the bottom. Finally, click the publish button.
  • Announce the release in #vouch on Discord.
  • Pin the release announcement.