The web3.js project follows the semver 2.0.0 specification.
The major version has to be increased as soon as a breaking change is introduced. The definition of a breaking change is anything that requires a depending project to update their code base, build pipeline or tests.
The minor is increased as soon as new smaller features do get introduced. A minor release will not affect any depending project. Such a release only introduces smaller enhancements and features a project could use.
A patch release only contains required bug fixes with a low risk to impact depending project.
Further details about versioning can be found in the semver 2.0.0 specification we follow.
E2E Network Tests will be triggered to run via a Github workflow when a PR is open for a branch prefixed with release/ and is being merged into 4.x branch. These tests depend on a couple of ENVs to be set that are configurable in Github's Action Secrets when running these tests in CI. The following required secrets are:
E2E_TESTS_ALLOWED_SEND_TRANSACTION: If set tofalsethis will keep the Sepolia tests that spend ETH from runnning, setting to anything else will cause them to runTEST_ACCOUNT_PRIVATE_KEY: The private key of the Sepolia account to use when submitting transactionsINFURA_SEPOLIA_HTTP: The provider to be used to access the Sepolia networkINFURA_MAINNET_HTTP: The provider to be used to access Mainnet
git checkout 4.x: Verify you are on the4.xbase branchgit checkout -b release/bumped-version: Create and checkout a branch with thebumped-versione.g.git checkout -b release/4.0.0-alpha.0bumped-versionof release branch should be of main web3 package.
yarn: Verify all dependencies have been installed- Bump packages version numbers using
lerna version --no-push --no-private --no-git-tag-version. This will update package versions and also run lifecycle scripts.- It will prompt for new version , modify package metadata and run life cycle scripts (in our case
version), for bootstrapping lerna will use underlying yarn.
- It will prompt for new version , modify package metadata and run life cycle scripts (in our case
- Update the root and each package's
CHANGELOG.md: Replace the## [Unreleased]header with new package version, and move## [Unreleased]header below listed changes- For root
CHANGELOG.mdcopy over all the listed changes for each package
- For root
- Run
yarn build:webafter lerna updates version and builds lib . This will bundle minified builds. - Commit the version bump changes and builds in release branch created in step 2
git tag bumped-version: Tag the commit with bumped version having prefixv, e.g.git tag v4.0.1-alpha.0git push origin release/bumped-version: Push release branch toorigingit push origin --tags: Push release tag created inStep 8toorigin- Create a draft release on Github similar to this
- Check
This is a pre-release - In the release description, copy all entries in
CHANGELOG.mdfor the version being released
- Check
- Click
Save draft - Open pull request to merge branch created in
Step 2(release/bumped-version) into4.x - Wait for all tests to pass in github CI/CD , If there are any unusual warnings or errors in logs, discuss with team
- When sufficient approvals have been met, merge the pull request
- Publish documentation changes
- Publish draft release created in
Step 11 - Run
npx lerna publish from-package --ignore-scripts --dist-tag alphain the root directory to publish packages to NPM- lerna will not invoke life cycle scripts before publishing and this will publish all packages to NPM public registry