Release 2.10 Release Checklist

Release 2.10 Release Checklist

his 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.

Subject

Owner

Description

Jira Links and Notes

Subject

Owner

Description

Jira Links and Notes

Release planning

 

 

 

Update Master Release Schedule

PM

Update master release schedule, https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/46596098 , with all release info

Done

Create project wiki

PM

Create a project wiki created for release under https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/43122906 This will be used to store all relevant release documents.

N/A

Release stories and subtasks

PM

Create and epic, stories, and subtasks for release. There should be a story for:

  • Release N.N Project Management

  • Release N.N QA

  • Release N.N Release Management

Subtasks should be created for each item in this checklist.

In-work

Release kickoff meeting

PM

Set up a kickoff meeting with team to review release

N/A

Release script

Release

Create rollout/release script 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). This should include detailed instructions on how to verify that the rollout was performed successfully.

Refer to the Master Release Plan, https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/46596098, for deliverables to capture.

Refer to FIPs Repo, https://github.com/fioprotocol/fips , for actions, fees, etc., to capture in release script

Once complete, review the rollout plan and verification with architecture and QA/Integration teams.

Release script template: https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/498270243

See example: https://fioprotocol.atlassian.net/wiki/spaces/FD/pages/471040008

Done

Security

 

 

 

Code audit

PM

A security focused audit of contract modifications should be strongly considered for any new actions, or any modifications to actions that involve changes in authorizations, or error logic. Code audits can be performed by core team members, or they can be performed by third parties specializing in EOSIO security issues.

Findings for security audits are sensitive and may be published to the public after careful consideration of the consequences of publishing this material. Once vulnerabilities have been adequately addressed all findings and remediations should be posted to the wiki for the project in question. Provide a set of links to completed items, or provide a point of contact for your project if items are in work.

Security documentation: https://fioprotocol.atlassian.net/wiki/spaces/FO/pages/141262894

TBD

Devnet

 

 

 

DevNet Smoke Testing

Release

Complete full devnet fio.test testing

Done

DevNet Fork Testing

Release

Complete 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)

Done

DevNet - Performance/Scalability testing

Release

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

N/A

DevNet - QA testing

Release

fio.test regression tests completed and run cleanly on Devnet

Done

LocalNet/DevNet

 

 

 

*Net Release rollout test

Release

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

Update the Rollout Plan with any new information

See: https://developers.fioprotocol.io/docs/developers/devnet#contract-testing-fiocontracts

See: https://developers.fioprotocol.io/docs/developers/devnet#local-testing

Done.

Included execution of release script as well as proposal, approval and execution of actual (to be proposed on TestNet).

Verification of contract abi and wasm performed against localnet.

*Net Performance and Scaling

Release

Verify performance and scalability tests run on LocalNet (and results added to Dev Spec)

Identify performance and scalability tests to run on DevNet

 

SDK Pre Release

 

Changes to Typescript SDK may be necessary for each release of the FIO protocol. SDK changes should go through a QA process. The release manager must integrate the SDK changes required for a release, then perform acceptance tests on these changes.

 

SDK release story

PM

Create story (if not already done) to track SDK Release

N/A

SDK dev complete

PM

Confirm that SDK development is complete for all features in release

Make sure the package.json in fiosdk_typescript has the correct version

N/A

SDK release candidate

Release

Create release/n.n.x branch (where n=contract release number)

Create pre-release (Release Candidate - FIO Typescript SDK x.x.x-rc1)

TBD

Testnet - Setup & QA

 

 

 

fio.test pre-release

Release

  • Create release/m.m.x_n.n.x branch (where m=chain release number and n=contract release number)

  • Confirm that the package.json references the new kiosk_typescript branch

In-Work

SDK Update fio.test to point to SDK release branch

Release

Update fio.test package.json file to point to the SDK pre-release.

 

fio.devtools pre-release

Release

Create release/m.m.x_n.n.x branch (where m=chain release number and n=contract release number)

 

fio.contracts pre-release

Release

  • Create release/n.n.x branch (where n=contract release number)

  • Create pre-release (Testnet Release Candidate - FIO Contracts x.x.x-rc1)

  • Update release notes

  • Create PR for hashes on fio.mainnet > releases-testnet.md

 

fio pre-release

Release

  • Create release/m.m.x branch (where m=chain release number)

  • Create pre-release (Testnet Release Candidate - FIO x.x.x-rc1)

  • Update release notes

  • Replay test by BP (needs to be defined and documented

  • Track chain upgrade of BPs

 

Testnet - Release branch testing

QA

After all release branches have been created for new release:

  • Run full fio.test regression, including tests that require manual updating of the contracts

 

Testnet - Manual History node testing

QA

For transactions that automatically create accounts (e.g., regdomain) if the public key used is new, we need to make sure that the transaction shows up in bloks.io transaction list.

 

Testnet Release

 

 

 

Release msigs

Release

  • BP to create msig to set addaction and createfee for new actions

  • BP to create msigs for updated and new contracts

  • Review msigs

  • BP to post msigs to Testnet

 

Communication

Release

  • Socialize changes with all BPs on Testnet and the community and marketing

  • Monitor and coordinate the rollout with BPs

 

Testnet - Release validation

Release

  • Confirm hashes of 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

 

Testnet - Smoketest

QA

Update fio.test smoketest with new actions and getters and run against Testnet

 

Testnet - Manual Feature validation

QA

Perform manual validation for all actions and getters listed in the Master Release Plan.

Also work with developer to do any release validation testing noted in the Deployment and Rollout guides.

 

Testnet - Replay test

Release

Perform full replay test (needs to be defined and documented)

 

Testnet Node*

Release

Update FIO Testnet node

See: https://developers.fioprotocol.io/docs/chain/node-build

 

Mainnet - Setup

 

 

 

Mainnet prep

Release

  • 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 Mainnet setup

Release

  • Merge release/m.m.x_n.n.x branch to master, create vm.m.m_n.n.n tag

  • Run test tag against new release

 

fio.devtools Mainnet setup

Release

  • Merge release/m.m.x_n.n.x branch to master, create vm.m.m_n.n.n 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 Mainnet setup

Release

  • Merge release/n.n.x branch to master, create vn.n.n tag

  • Move pre-release to release (Release - FIO Contracts x.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

 

fio Mainnet setup

Release

  • Merge release/m.m.x branch to master, create vm.m.m tag

  • Move pre-release to release (Release - FIO x.x.x), creating the GitHub Release with new functionality, fixes, etc. documented.

  • Build the FIO repo (use -P option) and Generate .deb and .tgz build files using fio.package

  • Upload .deb and .tgz build files to;

  • FIO Releases page for this release

  • AWS > S3 > fioprotocol > Mainnet

  • Update the FIO.docker repo (package release links in dockerfile) and create pull request notifying Todd of the new release artifacts

  • BP mainnet node upgrade checklist is complete (BP spreadsheet, or create one in Jira)

 

Mainnet - Release

 

 

 

addaction and createfee msigs

Release

  • 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

Release

  • BP to create msigs for updated and new contracts

  • Review msigs

  • BP to post msigs to Mainnet

 

Mainnet - Release validation

Release

  • 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

 

Mainnet - Manual QA validation

QA

Perform manual validation for all actions and getters listed in the Master Release Plan.

Also work with developer to do any release validation testing noted in the Deployment and Rollout guides.

 

Post-deployment

 

 

Mainnet validation - fio chain

Release

 

Update FIO Hosted API Nodes

Release

  • Upgrade Registration site API nodes (2 load balanced nodes)

  • Notify Todd to upgrade Analytics API node (single State History node)

 

FIP status

PM

Move FIP status to Final and include release links; update master README index

 

Devhub

PM

 

fiosdk_typescript-examples

PM

Add examples for new actions to fiosdk_typescript-examples repo

 

Partner upgrades

PM

  • Create upgrade blog post and send to Account Management team to manage upgrades

  • 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.

 

SDK Production Release

 

 

 

Typescript SDK Release

Release