For a release,
Bump stuff
Check whether need to bump DB_VERSION
to force a replay after upgraded: if there is a data schema change, or logic change that affects historical data, the answer is yes.
FC version usually has been bumped already during development, but it doesn’t harm if check again.
Bump docs sub-module which links to wiki.
A release branch is created based on develop or hardfork.
Update Doxyfile with the last version tag in release branch.
The release branch is merged into testnet.
For a hardfork release, the hardfork date is adapted directly on the testnet branch.
The testnet branch is tagged as test-version.
Bugfixes for the release are created on the release branch and merged into testnet. Additional test-versions are tagged as needed.
After sufficient testing, the release must be approved. In the case of a hardfork release, witness approval is required.
After approval, the mainnet hardfork date is decided and set in the release branch.
The release branch is merged into master, and a version tag is created on master. Create tag by git command line and then point the release to the created tag in github. This is needed for Docker to catch the new code.
The release branch is merged back into develop and hardfork.
The release branch is merged into testnet. This will produce a merge conflict for the hardfork dates, which must be resolved without changing the testnet hardfork date.
Update online code documentation by using updated Doxyfile as config file in the master branch. Send pull request to https://github.com/bitshares/doxygen.bitshares.org with new content in html format. Send pull to https://github.com/bitshares/dev.bitshares.works with new content in xml format.
Update date of last core download page of bitshares.org site.
14. Create binaries for linux, macos and windows. Once the tag name is known create binaries for this 3 OS. Attach them to release notes.
Example: https://github.com/bitshares/bitshares-core/releases/tag/3.0.0 Binaries names for this release:
Linux: BitShares-core-3.0.0-Linux-cli-tools.tar.gz
Windows: BitShares-Core-3.0.0-Windows-x64-cli-tools.zip
macOS: BitShares-Core-3.0.0-macOS-cli-tools.tar.gz
Note: Solving conflicts by github(web) will merge branches in unintended directions. Avoid solving this way, merge and resolve conflicts manually through the git command line. Conflicts generally occur when merging release to testnet.
Note 2: Follow command line github suggestion to resolve conflicts but at the end of the process you will not have permission to merge directly to testnet
, never push the fix to release
. Create a new branch and push there, then create a new pull request between testnet
and new_branch
, merge new_branch
to testnet
and release
will be automatically added to the merge.
Note 3: When creating tag for testnet do it from the command line with git tag
. Github don’t have the option to create a tag without a release.
Note 4: the tag commit can be changed. Don’t change tags on github. This is a source of confusion, and of irreproducible bug reports. Make new one is better (ex: test-2.0.180321b or wait 1 day).
Note 5: Do not mark releases as pre release unless there is a real new version coming immediately after. Never upgrade pre release to release as new emails to subscribers will not be sent when doing so.
An emergency fix may become necessary when a serious problem in mainnet is discovered. The goal here is to fix the problem as soon as possible, while keeping the risk for creating additional problems as low as possible.
First of all, the problem must be analyzed and debugged. This happens, naturally, directly on the release version.
Presumably the developer who creates the fix will work on his private master branch. That is OK. But for publishing the fix, the following steps should be taken: