@@ -10,19 +10,10 @@ PaddlePaddle每次发新的版本,遵循以下流程:
10
10
* 使用Regression Test List作为检查列表,测试本次release的正确性。
11
11
* 如果失败,记录下所有失败的例子,在这个`release/版本号`分支中,修复所有bug后,Patch号加一,到第二步
12
12
* 修改`python/setup.py.in`中的版本信息,并将`istaged`字段设为`True`。
13
- * 编译这个版本的python wheel包,并发布到pypi。
14
- * 由于pypi.python.org目前遵循[严格的命名规范PEP 513](https://www.python.org/dev/peps/pep-0513),在使用twine上传之前,需要重命名wheel包中platform相关的后缀,比如将`linux_x86_64`修改成`manylinux1_x86_64`。
15
- * pypi上的package名称为paddlepaddle和paddlepaddle_gpu,如果要上传GPU版本的包,需要修改build/python/setup.py中,name: "paddlepaddle_gpu"并重新打包wheel包:`python setup.py bdist_wheel`。
16
- * 上传方法:
17
- ```
18
- cd build/python
19
- pip install twine
20
- twine upload dist/[package to upload]
21
- ```
22
- * 编译这个版本的Docker发行镜像,发布到dockerhub。如果失败,修复Docker编译镜像问题,Patch号加一,返回第二步
23
- 1 . 第三步完成后,将` release/版本号 ` 分支合入master分支,并删除` release/版本号 ` 分支。将master分支的合入commit打上tag,tag为` 版本号 ` 。同时再将` master ` 分支合入` develop ` 分支。最后删除` release/版本号 ` 分支。
24
- 1 . 协同完成Release Note的书写
25
-
13
+ * 将这个版本的python wheel包发布到pypi。
14
+ * 更新Docker镜像(参考后面的操作细节)。
15
+ 1 . 第三步完成后,将` release/版本号 ` 分支合入master分支,将master分支的合入commit打上tag,tag为` 版本号 ` 。同时再将` master ` 分支合入` develop ` 分支。
16
+ 1 . 协同完成Release Note的书写。
26
17
27
18
需要注意的是:
28
19
@@ -31,13 +22,18 @@ PaddlePaddle每次发新的版本,遵循以下流程:
31
22
32
23
## 发布wheel包到pypi
33
24
34
- 使用[ PaddlePaddle CI] ( https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview )
25
+ 1 . 使用[ PaddlePaddle CI] ( https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview )
35
26
完成自动化二进制编译,参考下图,选择需要发布的版本(通常包含一个CPU版本和一个GPU版本),点击"run"右侧的"..."按钮,可以
36
- 弹出下面的选择框,在第二个tab (Changes)里选择需要发布的分支,这里选择0.11.0,然后点击"Run Build"按钮。等待编译完成后
37
- 可以在此页面的"Artifacts"下拉框中找到生成的3个二进制文件,分别对应CAPI,` cp27m ` 和` cp27mu ` 的版本。然后按照上述的方法
38
- 使用` twine ` 工具上传即可。
39
-
40
- <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle/develop/doc/fluid/images/ci_build_whl.png " >
27
+ 弹出下面的选择框,在第二个tab (Changes)里选择需要发布的分支,这里选择0.11.0,然后点击"Run Build"按钮。
28
+ <img src =" https://raw.githubusercontent.com/PaddlePaddle/Paddle/develop/doc/fluid/images/ci_build_whl.png " >
29
+ 1 . 等待编译完成后可以在此页面的"Artifacts"下拉框中找到生成的3个二进制文件,分别对应CAPI,` cp27m ` 和` cp27mu ` 的版本。
30
+ 1 . 由于pypi.python.org目前遵循[ 严格的命名规范PEP 513] ( https://www.python.org/dev/peps/pep-0513 ) ,在使用twine上传之前,需要重命名wheel包中platform相关的后缀,比如将` linux_x86_64 ` 修改成` manylinux1_x86_64 ` 。
31
+ 1 . 上传:
32
+ ```
33
+ cd build/python
34
+ pip install twine
35
+ twine upload dist/[package to upload]
36
+ ```
41
37
42
38
* 注:CI环境使用 https://github.com/PaddlePaddle/buildtools 这里的DockerImage作为编译环境以支持更多的Linux
43
39
发型版,如果需要手动编译,也可以使用这些镜像。这些镜像也可以从 https://hub.docker.com/r/paddlepaddle/paddle_manylinux_devel/tags/ 下载得到。
@@ -48,10 +44,20 @@ PaddlePaddle每次发新的版本,遵循以下流程:
48
44
上述PaddlePaddle CI编译wheel完成后会自动将Docker镜像push到DockerHub,所以,发布Docker镜像只需要对自动push的镜像打上
49
45
版本号对应的tag即可:
50
46
51
- 1 . 进入 https://hub.docker.com/r/paddlepaddle/paddle/tags/ 查看latest tag的更新时间是否在上述编译wheel包完成后是否最新。
52
- 1 . 执行 ` docker pull paddlepaddle/paddle:[latest tag] ` ,latest tag可以是latest或latest-gpu等。
53
- 1 . 执行 ` docker tag paddlepaddle/paddle:[latest tag] paddlepaddle/paddle:[version] `
54
- 1 . 执行 ` docker push paddlepaddle/paddle:[version] `
47
+ ```
48
+ docker pull [镜像]:latest
49
+ docker tag [镜像]:latest [镜像]:[version]
50
+ docker push [镜像]:[version]
51
+ ```
52
+
53
+ 需要更新的镜像tag包括:
54
+
55
+ * ` [version] ` : CPU版本
56
+ * ` [version]-openblas ` : openblas版本
57
+ * ` [version]-gpu ` : GPU版本(CUDA 8.0 cudnn 5)
58
+ * ` [version]-gpu-[cudaver]-[cudnnver] ` : 不同cuda, cudnn版本的镜像
59
+
60
+ 之后可进入 https://hub.docker.com/r/paddlepaddle/paddle/tags/ 查看是否发布成功。
55
61
56
62
## PaddlePaddle 分支规范
57
63
@@ -76,7 +82,7 @@ PaddlePaddle开发过程使用[git-flow](http://nvie.com/posts/a-successful-git-
76
82
77
83
### PaddlePaddle Book中所有章节
78
84
79
- PaddlePaddle每次发版本首先要保证PaddlePaddle Book中所有章节功能的正确性。功能的正确性包括验证PaddlePaddle目前的` paddle_trainer ` 训练和纯使用` Python ` 训练模型正确性 。
85
+ PaddlePaddle每次发版本首先要保证PaddlePaddle Book中所有章节功能的正确性。功能的正确性包括验证PaddlePaddle目前的` paddle_trainer ` 训练和纯使用` Python ` 训练(V2和Fluid)模型正确性 。
80
86
81
87
<table >
82
88
<thead >
0 commit comments