Book

PaddlePaddle Releasing Process

PaddlePaddle manages its branches using "git-flow branching model", and Semantic Versioning as it's version number semantics.

Each time we release a new PaddlePaddle version, we should follow the below steps:

Fork a new branch from develop named release/[version], e.g. release/0.10.0.

Push a new tag on the release branch, the tag name should be like [version]rc.patch. The
first tag should be 0.10.0rc1, and the second should be 0.10.0.rc2 and so on.

After that, we should do:

Run all regression test on the Regression Test List (see PaddlePaddle TeamCity CI), to confirm
that this release has no major bugs.
* If regression test fails, we must fix those bugs and create a new release/[version]
branch from previous release branch.

Modify python/setup.py.in, change the version number and change ISTAGED to True.

After above step, merge release/[version] branch to master and push a tag on the master commit,
then merge master to develop.

Update the Release Note.

NOTE:

Do NOT merge commits from develop branch to release branches to keep the release branch contain
features only for current release, so that we can test on that version.

If we want to fix bugs on release branches, we must merge the fix to master, develop and release branch.

Publish Wheel Packages to pypi

Use our CI tool
to build all wheel packages needed to publish. As shown in the following picture, choose a build
version, click "..." button on the right side of "Run" button, and switch to the second tab in the
pop-up box, choose the current release branch and click "Run Build" button. You may repeat this
step to start different versions of builds.

After the build succeeds, download the outputs under "Artifacts" including capi, cp27m and cp27mu.

Since pypi.python.org follows PEP 513, before we
upload the package using twine, we need to rename the package from linux_x86_64 to
manylinux1_x86_64.

NOTE: We use a special Docker image to build our releases to support more Linux distributions, you can
download it from https://hub.docker.com/r/paddlepaddle/paddle_manylinux_devel/tags/, or build it using
scripts under tools/manylinux1.

pypi does not allow overwrite the already uploaded version of wheel package, even if you delete the
old version. you must change the version number before upload a new one.

Publish wheel Packages for MacOS

You need to build the binary wheel package for MacOS before publishing, to
make sure that the package can be used by many versions of MacOS
(10.11, 10.12, 10.13) and different python installs (python.org, homebrew, etc.),
you must build the package exactly following below steps:

Build steps:

install python from python.org downloads, and make sure it's currently in use
in your system.

export MACOSX_DEPLOYMENT_TARGET=10.11, use 10.11 is enough for recent versions.