You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Paddle/doc/fluid/dev/releasing_process_cn.md

5.9 KiB

PaddlePaddle发行规范

PaddlePaddle使用Trunk Based Development使用Semantic Versioning标准表示PaddlePaddle版本号。

PaddlePaddle每次发新的版本遵循以下流程:

  1. develop分支派生出新的分支,分支名为release/版本号。例如,release/0.10.0
  2. 将新分支的版本打上tagtag为版本号rc-Patch号。例如第一个tag为0.10.0-rc0
  3. 新分支一般不接受新的feature和优化。QA在release分支上进行测试。研发基于最新的develop开发。
  4. QA和研发发现的bug在develop上修复验证后cherry-pick修复到release分支。直到release分支相对稳定。
  5. 如果有需要在release分支最新代码上打上新的tag比如0.10.0-rc1让更多的用户加入测试。重复3-4步。
  6. release分支稳定后打上正式的release tag比如0.10.0
  7. 将这个版本的python wheel包发布到pypi。
  8. 更新Docker镜像参考后面的操作细节

需要注意的是:

  • bug修复需要先在develop上进行然后进入release分支。而不是直接在release分支上开发。

  • release分支原则上只接受修复类的修改不接受新feature。

发布wheel包到pypi

  1. 使用PaddlePaddle CI 完成自动化二进制编译参考下图选择需要发布的版本通常包含一个CPU版本和一个GPU版本点击"run"右侧的"..."按钮,可以 弹出下面的选择框在第二个tab (Changes)里选择需要发布的分支这里选择0.11.0,然后点击"Run Build"按钮。
  2. 等待编译完成后可以在此页面的"Artifacts"下拉框中找到生成的3个二进制文件分别对应CAPIcp27mcp27mu的版本。
  3. 由于pypi.python.org目前遵循严格的命名规范PEP 513在使用twine上传之前需要重命名wheel包中platform相关的后缀比如将linux_x86_64修改成manylinux1_x86_64
  4. 上传:
cd build/python
pip install twine
twine upload dist/[package to upload]

发布Docker镜像

上述PaddlePaddle CI编译wheel完成后会自动将Docker镜像push到DockerHub所以发布Docker镜像只需要对自动push的镜像打上 版本号对应的tag即可

docker pull [镜像]:latest
docker tag [镜像]:latest [镜像]:[version]
docker push [镜像]:[version]

需要更新的镜像tag包括

  • [version]: CPU版本
  • [version]-openblas: openblas版本
  • [version]-gpu: GPU版本CUDA 8.0 cudnn 5
  • [version]-gpu-[cudaver]-[cudnnver]: 不同cuda, cudnn版本的镜像

之后可进入 https://hub.docker.com/r/paddlepaddle/paddle/tags/ 查看是否发布成功。

PaddlePaddle 分支规范

PaddlePaddle开发过程使用Trunk Based Development 开发规范。

  • develop分支为开发(develop branch)版本分支。每一个develop分支的版本都经过单元测试。并且会经过模型回归测试。

  • release/版本号分支为每一次Release时建立的临时分支。release分支主要用于测试bug修复和最终发版。

  • master分支因为历史原因,已经废弃。

  • 其他开发者fork的feature branch。

    • 建议开发者的feature branch需要同步主版本库的develop分支。
    • 建议开发者的feature branch需要基于主版本库中的develop分支。
    • 当feature branch开发完毕后向PaddlePaddle的主版本库提交Pull Reuqest,进而进行代码评审。
      • 在评审过程中开发者修改自己的代码可以继续在自己的feature branch提交代码。

PaddlePaddle回归测试列表

TODO

PaddlePaddle Book中所有章节

PaddlePaddle每次发版本首先要保证PaddlePaddle Book中所有章节功能的正确性。功能的正确性包括验证PaddlePaddle目前的paddle_trainer训练和纯使用Python训练V2和Fluid模型正确性。

新手入门章节 识别数字 图像分类 词向量 情感分析 语意角色标注 机器翻译 个性化推荐
API.V2 + Docker + GPU
API.V2 + Docker + CPU
`paddle_trainer` + Docker + GPU
`paddle_trainer` + Docker + CPU
API.V2 + Ubuntu + GPU
API.V2 + Ubuntu + CPU
`paddle_trainer` + Ubuntu + GPU
`paddle_trainer` + Ubuntu + CPU