Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

While the checklists capture the ToDos for a release, the following notes address the what and how of a release.

References:

Git Branching and Release This document details the process of creating, deploying and testing FIO on localnet as if it were a release. This process may be used as a final test for a major change, i.e. FIP, delivery before merge to Develop.

References:

Deploying FIO Contracts (fioprotocol.io)<template> [Release n.n] Release Management Checklist

Tasks

Jira Legacy
serverSystem JIRA
serverId5f0d8161-d4cf-3d17-96b1-53b2b2b5013d
keyBD-3615

Overview/Notes

Release Management focuses on the capture (release branching) and delivery (deployment and test to *DevNet, TestNet, MainNet) of features, bugs, etc.

MainNet deliveries: most changes will be merged into the Develop branch and flow down through DevNet, and TestNet but some (Hot Fixes) may not.

*DevNet deployment/test is considered happy path deployment and testing. It may be prudent to smoketest FIP branches (to be/are merged into Develop) to verify a Develop branch.

Release Content

The Project Manager will provide details and links to Development Documents, Development Documents (Active), to be included in a release.

Release Branching

The release branch naming will looking follow the release as documented in Releases folder.

Release Readiness

Release readiness entails the process of gathering the information noted above but also the deployment and testing of FIP, Develop branches along with application of the Release script on these branches to identify any issues, gaps in functionality, prior to cutting a release branch. This could include a formal review/demo of the Feature(s) with the Project Manager and the team.

Jira Legacy
serverSystem JIRA
serverId5f0d8161-d4cf-3d17-96b1-53b2b2b5013d
keyBD-3779

LocalNet/FIP Build, Deploy and Test Process (Review w/ Casey again!)

  1. Review the Master Release Plan at Master Release Plan and identify the current MainNet release branches. For example, the 3.3.0 Release has the following repos/branches:

    1. fio - release/3.3.x-dev

    2. fio.contracts - release/2.7.x

    3. fio.test - release/2.7.x_3.3.x

    4. fio.devtools - release/2.7.x_3.3.x

    5. fiosdk_typescript - release/1.6.x

  2. On the server, create clone and build a develop version of FIO core and the contracts

    1. Clone the FIO Core branches and checkout each repo to the develop branch.

      1. fio - develop

      2. fio.contracts - develop

      3. fio.devtools - develop

    2. Build and install FIO

      1. cd fio/scripts

      2. Execute ./fio_build.sh

      3. Execute ./fio_install.sh

    3. Build the contracts

      1. cd fio.contractsdevtools

      2. Execute ./start.sh <FIO Version>

        1. Local Startup (1)

        2. Update/Build Contracts (2)

    4. [Important] Copy this version of the fio.contracts to fio.contracts-<branch name>

    5. To perform a smoketest against the develop version;

      1. Start up the chain (see step 3c) and then run fio.test develop test suite (see step 6).

      2. Clean the chain of runtime artifacts

        1. cd fio.devtools

        2. execute ./start.sh <FIO Version>

          1. Local Startup (1)

          2. Nuke All (3)

          3. Continue - Yes (1)

  3. On the server, update the repos cloned above (checkout to the current MainNet release) to test the functionality that will be in the upcoming release. For example to

    1. To build, deploy and test the release, check out the appropriate branch in the following repos:

      1. fio.contracts

      2. fio.devtools

      3. For instance, to test the FIP-41, FIP-17a, FIP-

    1
      1. 17b release (future), checkout out the

    FIO core
      1. repos

    were checked out
      1. as follows:

        1. fio.contracts - release/2.7.x

        2. fio.devtools - release/2.7.x_3.3.x

    To test the
    1. Build the contracts

      1. cd fio.devtools

      2. Execute ./start.sh <FIO Version> and specify the following responses to the runtime options

        1. Local Startup (1)

        2. Update/Build Contracts (2)

    2. Start the Local Chain

      1. Execute ./start.sh <FIO Version> and specify the following responses to the runtime options

        1. Local Startup (1)

        2. Local Blockchain (1)

        3. Increased Transaction Time (2)

  4. On the server, execute the Release Script commands pointing to the contracts built in steps 2c and 2d. For example to update the chain to the FIO Core 3.4 Contracts 2.8 release, apply the actions in [fio 3.4 fio.contracts 2.8] release script.

  5. On the client, clone and check out the repo, fio.test, to the develop branch

    1. fio.test - develop

  6. Update the fio.test config.js to point to the server

    1. cd fio.test

    2. vi config.js

    3. Edit the test url to point to the server configured and running above

      1. const TESTURL = 'http://<server ip>:8889'

      2. This should be the only ‘active’ TESTURL

    4. Execute the command ‘npm test’

      1. Edit the index.js to run a custom set of tests

    5. Document the results

  7. To test against and individual FIP branches, identify those branches the branch(es) via the developer, the FIO github project or via the project development spec (reference Release Content above) and checkout the modified branches. For example, to test the FIP-41 updates, fio.contracts, fio.devtools were updated. Checkout the branches repos were checked out as follows:

    1. fio.contracts - feature/FIP-41-develop-03012022

    2. fio.devtools - feature/FIP-41-develop-03012022