Skip to content

Releasing

Evan edited this page Jan 27, 2021 · 13 revisions

Whenever someone runs npm install @patternfly/react-core they aren't using our latest code from master. Instead, they're using a "promoted" version that we've tested in product.

Prereleasing

Every commit to master runs lerna publish, which causes packages whose files have changed to be released to NPM under a prerelease tag. Some packages do not use prereleases, like react-icons, and some packages are not released at all like react-integration. Some like react-styled-system haven't been released in 7+ months, are unused, and can be ignored in all steps.

Testing in product

Since most of our @patternfly/react-* packages release on a prerelease cycle and might break products, we periodically promote them from "prerelease" to "latest" after testing in-product. The version numbers can be gathered by checking NPM or repo tags, or by simply running ./scripts/promote.sh from the root of the patternfly-react repo. Grab the latest version numbers for the following 12 packages (note this number can change if new packages are added in future PF releases):

  • @patternfly/patternfly
  • @patternfly/react-catalog-view-extension
  • @patternfly/react-charts
  • @patternfly/react-code-editor
  • @patternfly/react-core
  • @patternfly/react-icons
  • @patternfly/react-inline-edit-extension
  • @patternfly/react-styles
  • @patternfly/react-table
  • @patternfly/react-tokens
  • @patternfly/react-topology
  • @patternfly/react-virtualized-extension

and share them with product testers. You might have to do this a few more times if product testers require changes to our packages to not break their products.

Promoting

Once product testers have approved, @redallen has written a script to echo the commands to promote, which should always be done manually after verification from products. To log out the commands you'll need to copy/paste in order to promote, simply run ./scripts/promote.sh promote from the root of the patternfly-react repo.

The output looks like:

Promoting @patternfly/[email protected] to latest from 1.2.5
npm dist-tag add @patternfly/[email protected] latest
...

Simply run the npm dist-tag add @patternfly/react-*@version latest commands after verifying the @version part is the same version as was tested in product. Once all packages are promoted, we have a release! 🎉

Next steps: update patternfly.org to reflect the new release & release notes.