@@ -4,26 +4,21 @@ PaddlePaddle manages its branches using "git-flow branching model", and [Semanti
...
@@ -4,26 +4,21 @@ PaddlePaddle manages its branches using "git-flow branching model", and [Semanti
Each time we release a new PaddlePaddle version, we should follow the below steps:
Each time we release a new PaddlePaddle version, we should follow the below steps:
1. Fork a new branch from `develop` named `release/[version]`, e.g. `release/0.10.0`.
1. Create a new release branch from `develop`,named `release/[version]`. E.g.,`release/0.10.0`
1. Push a new tag on the release branch, the tag name should be like `[version]rc.patch`. The
2. Create a new tag for the release branch, tag format: `version-rc.Patch`. E.g. the first tag is `0.10.0-rc0`。
first tag should be `0.10.0rc1`, and the second should be `0.10.0.rc2` and so on.
3. New release branch normally doesn't accept new features or optimizations. QA will test on the release branch. Developer should develop based on `develop` branch.
1. After that, we should do:
4. If QA or Developer find bugs. They should first fix and verify on `develop` branch. Then cherry-pick the fix to the release branch. Wait until the release branch is stable.
* Run all regression test on the Regression Test List (see PaddlePaddle TeamCity CI), to confirm
5. If necessary, create a new tag on the relese branch, e.g. `0.10.0-rc1`. Involve more users to try it and repeat step 3-4.
that this release has no major bugs.
6. After release branch is stable,Create the official release tag,such as `0.10.0`.
* If regression test fails, we must fix those bugs and create a new `release/[version]`
7. Release the python wheel package to pypi.
branch from previous release branch.
8. Update the docker image (More details below).
* Modify `python/setup.py.in`, change the version number and change `ISTAGED` to `True`.
* Publish PaddlePaddle release wheel packages to pypi (see below instructions for detail).
NOTE:
* Update the Docker images (see below instructions for detail).
1. After above step, merge `release/[version]` branch to master and push a tag on the master commit,
* bug fix should happen on `develop` branch, then cherry-pick to relese branch. Avoid developing directly on release branch.
then merge `master` to `develop`.
1. Update the Release Note.
* release normally only accept bug fixes. Don't add new features.
***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
## Publish Wheel Packages to pypi
...
@@ -97,26 +92,22 @@ You can then checkout the latest pushed tags at https://hub.docker.com/r/paddlep
...
@@ -97,26 +92,22 @@ You can then checkout the latest pushed tags at https://hub.docker.com/r/paddlep
## Branching Model
## Branching Model
We use [git-flow](http://nvie.com/posts/a-successful-git-branching-model/) as our branching model,
PaddlePaddle uses [Trunk Based Development](https://trunkbaseddevelopment.com/) as our branching model.
with some modifications:
*`develop` branch is used for development. Each comment to `develop` branc goes through unit tests and model regression tests.
*`master` branch is the stable branch. Each version on the master branch is tested and guaranteed.
*`release/[version]` branch is used for each release. Release branch is used for tests, bug fix and evetual release.
*`develop` branch is for development. Each commit on develop branch has passed CI unit test, but no
*`master` branch as been deprecated for historical reasons
regression tests are run.
*`release/[version]` branch is used to publish each release. Latest release version branches have
* Developer's feature branch。
bugfix only for that version, but no feature updates.
* Developer's feature branch should sync with upstream `develop` branch.
* Developer forks are not required to follow
* Developer's feature branch should be forked from upstream `develop` branch.