GitHub Release and Patch process
This section is for internal usage. It documents the current release and patch process to ensure that anyone is able to run it.
Release process
The release process is mostly automated through the usage of GitHub Actions.
A release should be initiated through the manually triggered GitHub Action Create release PR. When triggering a release,
the reference base that should be chosen is the dev
branch, with a major
or minor
Semver release type, ethereum
light-client and the desired release version. The specified release version should follow the Semver standard.
This action pushes a new branch named ``release/ethereum-v(where
release-versionomits the patch number, e.g.
1.0) based on the most recent corresponding major/minor
release/branch, or
devif none exists. This will be the base of the PR, which will persist across any patches. Then, a PR branch is created off of the base branch called
release-pr-ethereum-v. A commit is then automatically applied to the PR branch to bump all the
Cargo.toml` version of the relevant crates, and the PR is opened. The developer in charge of the release should use this branch to make any necessary updates to the codebase and documentation to have the release ready.
Once all the changes are done, the PR can be merged with a merge commit. This will trigger the Tag release action that is charged with the publication of a release and a tag named ethereum-v<release-version>
. It will use each commit to create a rich changelog categorized by commit prefix, e.g. feat:
, fix:
, and chore:
.
The base branch should be saved as the release source and in case of any future patches.
Patch process
The patch process is similar to that of a major/minor release.
Create release PR should also be triggered with the patch
Semver release type and the desired patch version, e.g. 1.0.1 for a patch to 1.0.0. A PR will be opened from a branch named patch/ethereum-v<patch-version>
(e.g. v1.0.1
) with the base release/ethereum-v<release-to-fix>
(e.g. v1.0
). A commit is automatically applied to bump all the Cargo.toml
version of the relevant crates. The developer in charge of the patch should use this branch to make any necessary updates to the codebase and documentation to have the patch ready.
Once all the changes are done, the PR can be squash and merged in release/ethereum-v<release-to-fix>
. This will trigger the Tag release action that is charged with the publication of a release and a tag named ethereum-v<patch-version>
.
Finally, the developer may also need to port the relevant changes to dev
, such as incrementing the version number for a latest release, so that they are reflected on the latest development stage of the Light Client.