To ease the release process, we use the utility release-it which helps with the process, and towncrier for creating and maintaining change logs.
To start a release, you must fulfill the following requirements:
- Have permission to push to
mainbranch - Have permission on the
@ploneorganization on npm. - Have an environment variable
GITHUB_TOKENwith a GitHub personal token with permissions to write to the Volto Release page on GitHub. - Install
pipxin your system.
To request these permissions, on GitHub tag @plone/release-team, or in Discord post to the release-team channel.
The release process involves pushing directly to the main branch.
Volto's main branch is protected, so the releaser needs to have permission for pushing to it.
At the moment of this writing, members of the GitHub group @plone/volto-team have permission to push to main.
We push Volto's releases to the npm registry.
The releaser has to have permissions for pushing a release in the @plone organization on npm.
Only the current Owners of this organization can grant permissions to the releaser.
The release-it library takes care of creating and pushing a GitHub Release for each release.
It requires you to get a GitHub personal token with permission to write to the Volto's Releases.
This can be acquired in your GitHub profile page.
When making a release, export the environment variable GITHUB_TOKEN in your shell session.
export GITHUB_TOKEN="my_looooong_github_token"See release-it documentation of GitHub releases and GitHub documentation About releases.
The release process calls towncrier.
It is a Python library that uses the Python utility pipx.
This utility allows you to call and execute Python modules without installing them as a prerequisite in your system.
It works similar to the NodeJS npx utility.
Install {term}pipx for your active Python, and ensure it is on your $PATH.
Carefully read the console output for further instructions, if needed.
python3 -m pip install pipx
pipx ensurepathThese are the commands to make a Volto release:
yarn releaseA dry-release command for testing the output is also available:
yarn dry-releaseAn alpha release can be cut using:
yarn release-alpha