This document is intended to assist release managers in tracking the progress of required work items for a given release. Lead developers can use this checklist to understand how they might assist the release manager in achieving a release of the FIO protocol.
Release Stakeholders
Whenever checklist items are initiated or completed, communications should be posted to the interested stakeholders so they can remain in the loop with respect to the progress of a release.
Marketing – marketing/marketing discord channel (tag ash).
Account management – internal/account management (Emily)
QA – core team private on discord (Eric and Ben)
BPs – Fio main net and fio test net telegram channel, Block-producers under discussion groups.
Core team – core team private channel
Community developers – FIO developers telegram channel
Product managers – product discord channel
Please refer to the field descriptions below the checklist for more information on each item.
Task | Check Status | Tasks | Status / Deliverables |
---|
Release planning | | | |
Rollout planning | | - Create rollout/release plan for this effort (added actions, removed actions, table migrations, order dependent detailed instructions on how to roll out these changes successfully. include all necessary MSIGs)
- Refer to release script for rollout/plan for this effort
- Detailed instructions on how to verify that the rollout was performed successfully
- Review the rollout plan and verification with architecture and QA/Integration teams
Refer to Master Release Plan for release details | [fio 3.4 fio.contracts 2.8] Release Script |
Stories and scoping | | - Create release management stories and subtasks for release
- Estimate stories
| |
Notes | | Release branches come in two flavors; | BP-facing files to update |
LocalNet | | | |
Local release rollout test | | - Validate release script, updated by developers for each feature, detailing all addaction, createfee, and new and existing contract updates
- Perform local (single machine) test to validate release script
See: https://developers.fioprotocol.io/docs/developers/devnet#local-testing |
BD-3779
-
Getting issue details...
STATUS
|
LocalNet Performance and Scaling | | - Verify performance and scalability tests run on LocalNet (and results added to Dev Spec)
- Identify performance and scalability tests to run on DevNet
| |
Devnet | | | |
DevNet Contract Testing | | - Perform DevNet test to validate release script
- Create story to update the DevNet launch script
See: https://developers.fioprotocol.io/docs/developers/devnet#contract-testing-fiocontracts |
BD-3925
-
Getting issue details...
STATUS
|
DevNet Fork Testing | | - Full devnet fio fork testing
See: https://developers.fioprotocol.io/docs/developers/devnet This task has two flavors: To test a forking change, and that processing executes as normal before and after the (DevNet customized) timestamp To verify that no forking occurs in any BP node (standard DevNet testing)
| While not necessary for this release fork testing performed. |
DevNet Performance/Scalability testing | | - Perform DevNet performance and scalability tests
| Performance and Scalability testing is a responsibility of the Developer and QA, however, it may be necessary to identify release level performance and scaling requirements |
QA regression testing | | - fio.test regression tests completed and run cleanly on Devnet
| Smoke test only |
erc20 | | - Deploy devnet contract
- Test wrap / unwrap
- Update dashboard with devnet contract
- Dashboard testing
|
DASH-320
-
Getting issue details...
STATUS
|
erc721 | | - Deploy devnet contract
- Test wrap / unwrap
- Update dashboard with devnet contract
- Dashboard testing
|
DASH-320
-
Getting issue details...
STATUS
|
TestNet | | | |
fiosdk_typescript repo | | - Create release/n.n.x branch (where n=contract release number)
- Create pre-release (Release Candidate - FIO Typescript SDK vx.x.x-rc1)
| |
fio.test repo | | - Create release/n.n.x_m.m.x branch (where n=contract release number and m=chain release number)
- Confirm that the package.json references the new fiosdk_typescript branch
|
BD-3928
-
Getting issue details...
STATUS
|
fio.devtools repo | | - Create release/n.n.x_m.m.x branch (where n=contract release number and m=chain release number)
|
BD-3929
-
Getting issue details...
STATUS
|
fio.contracts repo | | - Create release/n.n.x branch (where n=contract release number)
- Create pre-release (Testnet Release Candidate - FIO Contracts vx.x.x-rc1)
- Update release notes and Tag branch
- Package release (Note: update local release branch (git fetch --all --tags))
- Create PR to update hashes in fio.mainnet repo (releases-testnet.md)
|
BD-3930
-
Getting issue details...
STATUS
|
Release msigs | | - BP to create msig to set addaction and createfee for new actions
- BP to create msig to create accounts, set perms and RAM limits
- BP to create msigs for updated and new contracts
- Review msigs
- BP to post msigs to Testnet
MSIG Rollout Process |
BD-3813
-
Getting issue details...
STATUS
BD-3861
-
Getting issue details...
STATUS
BD-3862
-
Getting issue details...
STATUS
|
Communication | | - Socialize changes with all BPs on TestNet and the community and marketing
- Monitor and coordinate the rollout with BPs
| |
fio repo | | - Create release/m.m.x branch (where m=chain release number)
- Create pre-release (TestNet Release Candidate - FIO vx.x.x-rc1)
- Update release notes and Tag branch
- Package release (Note: update local release branch (git fetch --all --tags))
- Replay test by BP - Get w/Todd/Eric to review
- Track chain upgrade of BPs
|
BD-3931
-
Getting issue details...
STATUS
|
TestNet validation | | - Run fio.test TestNet smoketest, confirm FIO Request getters still work
- Confirm hashes in TestNet
- Confirm ABIs deployed correctly (using ./clio get abi)
- Confirm createfee added fees with correct endpoint and type
- Confirm addaction added correct actions with correct contracts
| Story to track development of fio.devtools so it automatically checks some of these:
BD-3056
-
Getting issue details...
STATUS
|
TestNet Launch for Michael | | - Build & Launch TestNet node (replays, etc)
| https://developers.fioprotocol.io/docs/chain/node-build |
fio.erc20 | | - Create pre-release (TestNet Release Candidate - FIO vx.x.x-rc1)
- Update release notes and Tag branch
- Package release (Note: update local release branch (git fetch --all --tags))
- Update Dashboard with latest
|
BD-4126
-
Getting issue details...
STATUS
|
fio.erc721 | | - Create pre-release (TestNet Release Candidate - FIO vx.x.x-rc1)
- Update release notes and Tag branch
- Update Dashboard with latest
|
BD-4127
-
Getting issue details...
STATUS
|
fio.oracle | | - Create pre-release (TestNet Release Candidate - FIO vx.x.x-rc1)
- Update release notes and Tag branch
- Get BP ETH and MATIC Testnet Addresses
- Deploy release to oracles
- Manual test of wrap/unwrap
- Update dashboard and UAT
|
BD-4134
-
Getting issue details...
STATUS
BD-4135
-
Getting issue details...
STATUS
BD-4136
-
Getting issue details...
STATUS
|
MainNet | | | |
Mainnet prep | | - Create upgrade checklist of BPs and integration partners
- Work with account management to coordinate Mainnet rollout plan with the BP, wallet, and exchange community, watch over the execution and help to ensure rollout is completed in full.
- Socialize release changes with all BPs and the community and marketing
| |
fio.test repo | | - Merge release/n.n.x_m.m.x branch to master, create vn.n.n_m.m.m tag
- Run test tag against new release
| |
fio.devtools repo | | - Merge release/n.n.x_m.m.x branch to master, create vn.n.n_m.m.m tag
- Update base contracts to current mainnet contracts
- Update readme to show new version changes on fio
- Merge to master and cut a new tag/release
| |
fio.contract repo | | - Merge release/n.n.x branch to master, create vn.n.n tag
- Move pre-release to release (Release - FIO Contracts vx.x.x)
- Create PR for hashes on fio.mainnet
- Encourage BPs to vote on new endpoint fee
- msig fio.contracts release
- Perform the rollout verification and report findings
- Post msig links to main FIO Telegram channel so member can track progress
| |
addaction and createfee msigs | | - msig to set addaction and createfee for new actions
- Encourage BPs to vote on new endpoint fee
Example: createfee '{"end_point":"transfer_tokens_fio_add","type":"1","suf_amount":"958695652"}'
addaction '{"action":"trnsloctoks","contract":"fio.token","actor":"eosio"}'
| |
Contract msigs | | - BP to create msigs for updated and new contracts
- Review msigs
- BP to post msigs to Mainnet
| |
fio repo | | - Merge release/m.m.x branch to master, create vm.m.m tag
- Move pre-release to release (Release - FIO vx.x.x)
- Generate .deb and .tgz build files using fio.package
- Upload .deb and .tgz build files to AWS > S3 > fioprotocol > Mainnet for use with fio-docker
- BP mainnet node upgrade checklist is complete (BP spreadsheet, or create one in Jira)
- Perform the rollout verification and report findings
- Confirm BP upgrade: https://health.fioprotocol.io
| |
Mainnet validation | | - Confirm hashes of mainnet
- Confirm versions of mainnet nodes (chain)
- Confirm ABIs deployed correctly (using ./clio get abi)
- Confirm createfee added fees with correct endpoint and type
- Confirm addaction added correct actions with correct contracts
| |
SDK and Wallet Testing | | - Run Typescript SDK regression tests against latest build, confirm new actions and getters are included in the tests
- Run Kotlin SDK regression tests against latest build, confirm new actions and getters are included in the tests
- Run GO SDK regression tests against latest build, confirm new actions and getters are included in the tests
| |
fio.erc20 | | - Move pre-release to release (Release - FIO vx.x.x)
|
BD-4124
-
Getting issue details...
STATUS
|
fio.erc721 | | - Move pre-release to release (Release - FIO vx.x.x)
|
BD-4125
-
Getting issue details...
STATUS
|
fio.oracle | | - Get Mainnet ETH and MATIC addresses
- Move pre-release to release (Release - FIO vx.x.x)
- Deploy release to oracles
- Manual test of wrap/unwrap
- Update dashboard and UAT
|
BD-4129
-
Getting issue details...
STATUS
BD-4130
-
Getting issue details...
STATUS
BD-4131
-
Getting issue details...
STATUS
BD-4132
-
Getting issue details...
STATUS
BD-4133
-
Getting issue details...
STATUS
|
fio-wrap-status-page | | | |
Post-deployment | | | |
Mainnet validation - fio chain | | | |
Update FIO Hosted API Nodes | | - Upgrade Registration site API nodes (2 load balanced nodes)
- Notify Todd to upgrade Analytics API node (single State History node)
|
BD-3722
-
Getting issue details...
STATUS
|
SDK | | | |
Typescript SDK Release | | - Create fiosdk_typescript release candidate tag from develop
- Test SDK release tag version against latest production releases (master branches) of fio, fio.contracts, fio.devtools, fio.test (If updates to test are needed, confirm fixes are put into the fio.test release/vn.n.n release branch and the develop branch (i.e., merge fixes from release branch))
- Merge develop to master and create production release tag from master
- Typescript: Publish new SDK release on NPM
- QA: Test published SDK release tag version against latest production releases (master branches) of fio, fio.contracts, fio.devtools, fio.test
| |
Process Description --
Each item that is to be addressed in the checklist should have a story associate with it under the release epic in jira. also there should be a release section of the wiki which contains all of the artifacts generated for a given release, and under this wiki should also be contained all the details of the release planning and execution for future reference of the community.
Devnet testing
Background – In order for a release of the FIO protocol to be rolled out on test net and main net, the release manager must first assemble the set of commands that will upgrade the current main net version to become the new release. The commands may include adding actions to FIOs list of allowed contract actions, adding/modifying the fees associated with FIO actions, creating new FIO system accounts and contracts, and updating all of the required FIO contracts with the changes for the new release. The release manager must assemble a complete list of the required commands, and execute them on a private test network, then perform validations of the resulting release. The commands, and test results must be posted on the wiki for this release.
Objective – The objective of dev net testing is to assemble the list of commands required to upgrade FIO for this release, and to complete acceptance testing of a local private FIO network upgraded using these commands.
Tactics – on dev net, build the release version of the FIO Core code and the FIO contracts, copy these off to the side. Then build the dev net using the Main net versions of the contracts and core, and spin up the dev net. Perform all of the necessary clio commands to upgrade the contracts. once this is completed run a regression test to ensure all chain operations function as expected. if there are significant changes to the FIO Core code which result in special logic and timing regarding the core and contracts rollout (this is called a forking change), then special test plans must be made and executed in accordance with the needs of the releases unique needs. If no forking logic is being released then acceptance and QA tests and some performance tests will be performed and published onto the wiki
Deliverables – The release manager will post on the wiki the commands for this release, and they will also post on the wiki the test results for the tests performed.
Contract rollout commands – The release commands for each project included in the release should be a part of the rollout plan for each project included in the release, assemble the commands for the release into one list of commands, and fill any missing gaps by cooperating with the necessary leads if commands have not yet been provided. the following actions are commonly required --
Add action – add an action to the permitted list of actions in the FIO protocol
Add Fee – add a new fee for a new action in the FIO protocol.
Add new system account – When new contracts are added to FIO an owning account must be created.
Set system account authorizations – set permissions and authorizations on new system accounts
Set privileged.
update authorizations
Set Contract – set a new contract on the FIO protocol, or update an existing contract.
Set ABI – set a new ABI on the FIO protocol, or update an existing ABI.
Example: https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/471040008/New+contract+deployment
See also
https://developers.fioprotocol.io/docs/developers/devnet
Contract testing – After contracts have been upgraded, acceptance testing must be completed, and findings must be published to the wiki.
Fork testing – If there are changes to the protocol which require backwards compatibility considerations then forking tests must be performed, these test require code changes to be made before the fork testing to ensure that the forking logic works equivalently in the dev net environment. Results and findings must be published to the wiki upon completion.
Performance testing – Some projects have dev net level performance test considerations, when a release includes the need for performance testing then tests must be run and findings published to the wiki for the release.
QA testing – QA regression tests should be completed on each release before dev net testing, but full regression on dev net only increases our confidence in a release. findings should be published to the wiki.
NOTE – other descriptions may be added if this is seen as helpful for the document
Add Comment