5.9 KiB
PaddleOCR Release SOP
Scope
This document describes the standard release process for PaddleOCR.
Release Types
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
Release Principles
- 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
Standard Release Process
1. Confirm the release target
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
2. Create or switch to the release branch
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
3. Pick release content from main
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
4. Complete pre-release checks
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
5. Create the official tag
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
6. Publish the GitHub Release
Create a GitHub Release based on the official tag for this release.
7. Update dependency constraints and release notes
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
8. Sync the release branch lineage back to main
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
9. Move on to the next development cycle or patch release
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
How to Handle Different Bump Types
Patch Release
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
Minor Release
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
Major 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.
Release Checklist
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
Daily Maintenance Recommendations
- 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.