This document describes the standard release process for PaddleOCR.
The current process supports the following two release types:
bump patch: for example,3.4.0 -> 3.4.1bump minor: for example,3.4.x -> 3.5.0
For bump major:
- The current process does not directly support this scenario
- A major release process should be discussed and designed separately, for example by introducing an additional branch or a new preparation flow
- Daily development happens on
main - Official releases are made only from
release/X.Y - Official tags must use
vX.Y.Z - Do not create official release tags on
main
First confirm which release line this release belongs to and what the target version is.
Examples:
- Release
3.4.1onrelease/3.4 - Release
3.5.0onrelease/3.5
If the release line does not exist yet, create the corresponding release/X.Y branch from main.
If it already exists, switch to that branch and continue release preparation there.
Requirements:
- One minor release line corresponds to one fixed
release/X.Ybranch - That branch should contain only the release content and patch fixes for that line
Based on the release scope, cherry-pick the required commits from main into release/X.Y until the release content is ready.
Requirements:
- Only pick what is needed for the current release
- Avoid bringing unrelated new features into the release branch
- If there are release-specific fixes on the release branch, keep them limited to the current release scope
Complete pre-release checks on release/X.Y.
At minimum, this should include:
- The current branch is correct
- The working tree is clean
- The version is as expected
- Key functionality is verified
- Required tests, builds, packaging, and regression checks have passed
- Release notes are ready
Once the release is ready, create the official tag on release/X.Y:
- The tag format must be
vX.Y.Z
Examples:
v3.4.1v3.5.0
Requirements:
- The tag must be created on the release branch for the current official release
- Do not use development tags as official release tags
Create a GitHub Release based on the official tag for this release.
If this release is the first release of a new minor line, or if it changes PaddleX dependency requirements, update the related release materials before or after the official tag is published.
At minimum, this should include:
- Checking whether the
paddlexdependency constraints inpyproject.tomlmatch the target release - Checking whether installation docs, upgrade notes, and release notes are aligned with the release version
Completion criteria:
- The
paddlexdependency constraints match the target release - The version information in the documentation matches the released version
After the first official release of a new release/X.Y line is completed, sync the lineage of that release/X.Y branch back to main.
This is a fixed step in the current workflow and should be done at least once for each new minor release line.
Purpose:
- Ensure
maincorrectly reflects that the release line has produced an official version - Keep subsequent development and release cadence aligned
Requirements:
- Perform this once after the first official release of each new
release/X.Y - For later patch releases on the same
release/X.Y, it is usually not necessary to repeat it
After the release:
maincontinues with ongoing developmentrelease/X.Ycontinues to maintain that release line
If more patch releases are needed later on the same line:
- Continue preparing patches on
release/X.Y cherry-pickfrommainas needed- Repeat the relevant steps in this SOP
Applicable scenarios:
- Fixing production issues
- Small compatibility fixes
- Documentation, dependency, or stability patches
How to handle it:
- Continue preparing changes on the existing
release/X.Y - Create the next patch tag, for example
v3.4.2
Applicable scenarios:
- Starting a new release line
- Releasing the next stable version, for example
3.5.0
How to handle it:
- Create a new
release/X.Yfrommain - Prepare the release following the standard process
- Create the first official tag, for example
v3.5.0 - Update
paddlexdependency constraints if needed - Sync the lineage of that release branch back to
mainafter the release
Current conclusion:
- It is not included in this SOP for now
- A separate process needs to be discussed and designed later
Before a dedicated solution is defined, do not directly reuse the current minor/patch process for a major release.
Before each release, confirm the following:
- The target version and corresponding release branch have been confirmed
- The content on the release branch is ready
- The release scope has been finalized
- Key tests and regression checks have passed
- Release notes are ready
- The official tag uses the
vX.Y.Zformat - The GitHub Release has been created
- If this is the first official release on
release/X.Y, its lineage has been synced back tomain
- New features should go to
mainfirst - Official releases should always be performed through
release/X.Y - Patch releases should always be maintained on the corresponding
release/X.Y - For each new
release/X.Y, sync its lineage once after the first official release
If the current process changes, this document should be updated accordingly.