Skip to content

New Release Process

Paul Bernier edited this page Feb 17, 2021 · 6 revisions

Follow these steps to release a new version of factomd:

Local testing

  • Run the full test suit ./test.sh full
  • Run factomd locally with a short blocktime factomd -network=LOCAL -blktime=60. Open the dashboard and confirm blocks are advancing.

Generating Release Candidate (RC) images

  • Generate a new RC image by tagging a specific commit. The tag should have the format vX.Y.Z-rc1. Increment the RC number for every batch of fixes.
  • Images are made available on Docker Hub in this repo: https://hub.docker.com/r/factominc/factomd

Testnet testing

  • Deploy RC image on a follower and verify it follows blocks and minutes.
  • Execute factom.js API test suite against that node (basic verification of API capabilities).
  • Deploy RC image on a few authority set nodes (at least 1 audit and 1 leader). Verify they follow blocks and minutes and that the leader doesn't get demoted.
  • Apply baseline load on the network (5 EPS/s) via ChockaBlock and monitor upgraded nodes are still file.
  • Deploy RC image to 100% of the authority set. Monitor elections, ask operators to report any abnormalities.
  • Voluntarily trigger an election by turning off a leader node and monitor the election.
  • Apply baseline load on the network (5 EPS/s) and monitor elections.
  • Perform a load test against the network.

Release to mainnet

  • Deploy the RC image to a node on mainnet and verify basic stability.
  • Don't forget to update https://github.com/FactomProject/factomd/blob/master/VERSION.
  • Merge develop branch into master.
  • Build the binaries for all platforms with make all.
  • Create a new GitHub release with version format vX.Y.Z and attach all the binaries generated at the previous step. The tag will also trigger the creation of a new Docker image. The image will be available on Docker Hub at https://hub.docker.com/r/factominc/factomd.
  • Deploy to a few mainnet authority set nodes (at least 1 audit and 1 leader). Confirm stability.
  • Deploy to the complete authority set.
  • Update documentation (API...).
  • Update changelog at https://github.com/FactomProject/distribution.
  • 🥳