Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle
提交
12c0344e
P
Paddle
项目概览
PaddlePaddle
/
Paddle
大约 1 年 前同步成功
通知
2298
Star
20931
Fork
5422
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1423
列表
看板
标记
里程碑
合并请求
543
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1,423
Issue
1,423
列表
看板
标记
里程碑
合并请求
543
合并请求
543
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
12c0344e
编写于
1月 08, 2018
作者:
T
Travis CI
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Deploy to GitHub Pages:
24341d3a
上级
19d4e1d3
变更
6
展开全部
隐藏空白更改
内联
并排
Showing
6 changed file
with
136 addition
and
54 deletion
+136
-54
develop/doc/_sources/design/releasing_process.md.txt
develop/doc/_sources/design/releasing_process.md.txt
+27
-5
develop/doc/design/releasing_process.html
develop/doc/design/releasing_process.html
+40
-21
develop/doc/searchindex.js
develop/doc/searchindex.js
+1
-1
develop/doc_cn/_sources/design/releasing_process.md.txt
develop/doc_cn/_sources/design/releasing_process.md.txt
+27
-5
develop/doc_cn/design/releasing_process.html
develop/doc_cn/design/releasing_process.html
+40
-21
develop/doc_cn/searchindex.js
develop/doc_cn/searchindex.js
+1
-1
未找到文件。
develop/doc/_sources/design/releasing_process.md.txt
浏览文件 @
12c0344e
...
...
@@ -7,11 +7,9 @@ PaddlePaddle每次发新的版本,遵循以下流程:
1. 从`develop`分支派生出新的分支,分支名为`release/版本号`。例如,`release/0.10.0`
1. 将新分支的版本打上tag,tag为`版本号rc.Patch号`。第一个tag为`0.10.0rc1`,第二个为`0.10.0rc2`,依次类推。
1. 对这个版本的提交,做如下几个操作:
* 使用Regression Test List作为检查列表,测试本次release的正确性。
* 如果失败,记录下所有失败的例子,在这个`release/版本号`分支中,修复所有bug后,Patch号加一,到第二步
* 修改`python/setup.py.in`中的版本信息,并将`istaged`字段设为`True`。
* 编译这个版本的Docker发行镜像,发布到dockerhub。如果失败,修复Docker编译镜像问题,Patch号加一,返回第二步
* 编译这个版本的Ubuntu Deb包。如果失败,修复Ubuntu Deb包编译问题,Patch号加一,返回第二步。
* 使用Regression Test List作为检查列表,测试Docker镜像/ubuntu安装包的功能正确性
* 如果失败,记录下所有失败的例子,在这个`release/版本号`分支中,修复所有bug后,Patch号加一,返回第二步
* 编译这个版本的python wheel包,并发布到pypi。
* 由于pypi.python.org目前遵循[严格的命名规范PEP 513](https://www.python.org/dev/peps/pep-0513),在使用twine上传之前,需要重命名wheel包中platform相关的后缀,比如将`linux_x86_64`修改成`manylinux1_x86_64`。
* pypi上的package名称为paddlepaddle和paddlepaddle_gpu,如果要上传GPU版本的包,需要修改build/python/setup.py中,name: "paddlepaddle_gpu"并重新打包wheel包:`python setup.py bdist_wheel`。
...
...
@@ -21,8 +19,8 @@ PaddlePaddle每次发新的版本,遵循以下流程:
pip install twine
twine upload dist/[package to upload]
```
* 编译这个版本的Docker发行镜像,发布到dockerhub。如果失败,修复Docker编译镜像问题,Patch号加一,返回第二步
1. 第三步完成后,将`release/版本号`分支合入master分支,并删除`release/版本号`分支。将master分支的合入commit打上tag,tag为`版本号`。同时再将`master`分支合入`develop`分支。最后删除`release/版本号`分支。
1. 编译master分支的Docker发行镜像,发布到dockerhub。编译ubuntu的deb包,发布到github release页面
1. 协同完成Release Note的书写
...
...
@@ -31,6 +29,30 @@ PaddlePaddle每次发新的版本,遵循以下流程:
* `release/版本号`分支一旦建立,一般不允许再从`develop`分支合入`release/版本号`。这样保证`release/版本号`分支功能的封闭,方便测试人员测试PaddlePaddle的行为。
* 在`release/版本号`分支存在的时候,如果有bugfix的行为,需要将bugfix的分支同时merge到`master`, `develop`和`release/版本号`这三个分支。
## 发布wheel包到pypi
使用[PaddlePaddle CI](https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview)
完成自动化二进制编译,参考下图,选择需要发布的版本(通常包含一个CPU版本和一个GPU版本),点击"run"右侧的"..."按钮,可以
弹出下面的选择框,在第二个tab (Changes)里选择需要发布的分支,这里选择0.11.0,然后点击"Run Build"按钮。等待编译完成后
可以在此页面的"Artifacts"下拉框中找到生成的3个二进制文件,分别对应CAPI,`cp27m`和`cp27mu`的版本。然后按照上述的方法
使用`twine`工具上传即可。
<img src="ci_build_whl.png">
* 注:CI环境使用 https://github.com/PaddlePaddle/buildtools 这里的DockerImage作为编译环境以支持更多的Linux
发型版,如果需要手动编译,也可以使用这些镜像。这些镜像也可以从 https://hub.docker.com/r/paddlepaddle/paddle_manylinux_devel/tags/ 下载得到。
* pypi不支持覆盖上传,所以一个版本号的wheel包发布之后,不可以更改。下一个wheel包需要更新版本号才可以上传。
## 发布Docker镜像
上述PaddlePaddle CI编译wheel完成后会自动将Docker镜像push到DockerHub,所以,发布Docker镜像只需要对自动push的镜像打上
版本号对应的tag即可:
1. 进入 https://hub.docker.com/r/paddlepaddle/paddle/tags/ 查看latest tag的更新时间是否在上述编译wheel包完成后是否最新。
1. 执行 `docker pull paddlepaddle/paddle:[latest tag]`,latest tag可以是latest或latest-gpu等。
1. 执行 `docker tag paddlepaddle/paddle:[latest tag] paddlepaddle/paddle:[version]`
1. 执行 `docker push paddlepaddle/paddle:[version]`
## PaddlePaddle 分支规范
PaddlePaddle开发过程使用[git-flow](http://nvie.com/posts/a-successful-git-branching-model/)分支规范,并适应github的特性做了一些区别。
...
...
develop/doc/design/releasing_process.html
浏览文件 @
12c0344e
...
...
@@ -212,23 +212,17 @@
<span
id=
"paddlepaddle"
></span><h1>
PaddlePaddle发行规范
<a
class=
"headerlink"
href=
"#paddlepaddle"
title=
"Permalink to this headline"
>
¶
</a></h1>
<p>
PaddlePaddle使用git-flow branching model做分支管理,使用
<a
class=
"reference external"
href=
"http://semver.org/"
>
Semantic Versioning
</a>
标准表示PaddlePaddle版本号。
</p>
<p>
PaddlePaddle每次发新的版本,遵循以下流程:
</p>
<ol>
<li><p
class=
"first"
>
从
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
分支派生出新的分支,分支名为
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
。例如,
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/0.10.0
</span></code></p>
</li>
<li><p
class=
"first"
>
将新分支的版本打上tag,tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
版本号rc.Patch号
</span></code>
。第一个tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
0.10.0rc1
</span></code>
,第二个为
<code
class=
"docutils literal"
><span
class=
"pre"
>
0.10.0rc2
</span></code>
,依次类推。
</p>
</li>
<li><p
class=
"first"
>
对这个版本的提交,做如下几个操作:
</p>
<ol
class=
"simple"
>
<li>
从
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
分支派生出新的分支,分支名为
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
。例如,
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/0.10.0
</span></code></li>
<li>
将新分支的版本打上tag,tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
版本号rc.Patch号
</span></code>
。第一个tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
0.10.0rc1
</span></code>
,第二个为
<code
class=
"docutils literal"
><span
class=
"pre"
>
0.10.0rc2
</span></code>
,依次类推。
</li>
<li>
对这个版本的提交,做如下几个操作:
</li>
</ol>
<ul>
<li><p
class=
"first"
>
修改
<code
class=
"docutils literal"
><span
class=
"pre"
>
python/setup.py.in
</span></code>
中的版本信息,并将
<code
class=
"docutils literal"
><span
class=
"pre"
>
istaged
</span></code>
字段设为
<code
class=
"docutils literal"
><span
class=
"pre"
>
True
</span></code>
。
</p>
</li>
<li><p
class=
"first"
>
编译这个版本的Docker发行镜像,发布到dockerhub。如果失败,修复Docker编译镜像问题,Patch号加一,返回第二步
</p>
</li>
<li><p
class=
"first"
>
编译这个版本的Ubuntu Deb包。如果失败,修复Ubuntu Deb包编译问题,Patch号加一,返回第二步。
</p>
<li><p
class=
"first"
>
使用Regression Test List作为检查列表,测试本次release的正确性。
</p>
<ul>
<li><p
class=
"first"
>
如果失败,记录下所有失败的例子,在这个
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支中,修复所有bug后,Patch号加一,到第二步
</p>
</li>
<li><p
class=
"first"
>
使用Regression Test List作为检查列表,测试Docker镜像/ubuntu安装包的功能正确性
</p>
<ul
class=
"simple"
>
<li>
如果失败,记录下所有失败的例子,在这个
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支中,修复所有bug后,Patch号加一,返回第二步
</li>
</ul>
<li><p
class=
"first"
>
修改
<code
class=
"docutils literal"
><span
class=
"pre"
>
python/setup.py.in
</span></code>
中的版本信息,并将
<code
class=
"docutils literal"
><span
class=
"pre"
>
istaged
</span></code>
字段设为
<code
class=
"docutils literal"
><span
class=
"pre"
>
True
</span></code>
。
</p>
</li>
<li><p
class=
"first"
>
编译这个版本的python wheel包,并发布到pypi。
</p>
<ul>
...
...
@@ -243,22 +237,47 @@
</pre></div>
</div>
</li>
<
/ul
>
<
li><p
class=
"first"
>
编译这个版本的Docker发行镜像,发布到dockerhub。如果失败,修复Docker编译镜像问题,Patch号加一,返回第二步
</p
>
</li>
</ul>
</li>
<li><p
class=
"first"
>
第三步完成后,将
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支合入master分支,并删除
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支。将master分支的合入commit打上tag,tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
版本号
</span></code>
。同时再将
<code
class=
"docutils literal"
><span
class=
"pre"
>
master
</span></code>
分支合入
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
分支。最后删除
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支。
</p>
</li>
<li><p
class=
"first"
>
编译master分支的Docker发行镜像,发布到dockerhub。编译ubuntu的deb包,发布到github release页面
</p>
</li>
<li><p
class=
"first"
>
协同完成Release Note的书写
</p>
</ul>
</li>
</ul>
<ol
class=
"simple"
>
<li>
第三步完成后,将
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支合入master分支,并删除
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支。将master分支的合入commit打上tag,tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
版本号
</span></code>
。同时再将
<code
class=
"docutils literal"
><span
class=
"pre"
>
master
</span></code>
分支合入
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
分支。最后删除
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支。
</li>
<li>
协同完成Release Note的书写
</li>
</ol>
<p>
需要注意的是:
</p>
<ul
class=
"simple"
>
<li><code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支一旦建立,一般不允许再从
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
分支合入
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
。这样保证
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支功能的封闭,方便测试人员测试PaddlePaddle的行为。
</li>
<li>
在
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支存在的时候,如果有bugfix的行为,需要将bugfix的分支同时merge到
<code
class=
"docutils literal"
><span
class=
"pre"
>
master
</span></code>
,
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
和
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
这三个分支。
</li>
</ul>
<div
class=
"section"
id=
"wheelpypi"
>
<span
id=
"wheelpypi"
></span><h2>
发布wheel包到pypi
<a
class=
"headerlink"
href=
"#wheelpypi"
title=
"Permalink to this headline"
>
¶
</a></h2>
<p>
使用
<a
class=
"reference external"
href=
"https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview"
>
PaddlePaddle CI
</a>
完成自动化二进制编译,参考下图,选择需要发布的版本(通常包含一个CPU版本和一个GPU版本),点击
”
run
”
右侧的
”
...
”
按钮,可以
弹出下面的选择框,在第二个tab (Changes)里选择需要发布的分支,这里选择0.11.0,然后点击
”
Run Build
”
按钮。等待编译完成后
可以在此页面的
”
Artifacts
”
下拉框中找到生成的3个二进制文件,分别对应CAPI,
<code
class=
"docutils literal"
><span
class=
"pre"
>
cp27m
</span></code>
和
<code
class=
"docutils literal"
><span
class=
"pre"
>
cp27mu
</span></code>
的版本。然后按照上述的方法
使用
<code
class=
"docutils literal"
><span
class=
"pre"
>
twine
</span></code>
工具上传即可。
</p>
<p><img
src=
"ci_build_whl.png"
></p>
<ul
class=
"simple"
>
<li>
注:CI环境使用 https://github.com/PaddlePaddle/buildtools 这里的DockerImage作为编译环境以支持更多的Linux
发型版,如果需要手动编译,也可以使用这些镜像。这些镜像也可以从 https://hub.docker.com/r/paddlepaddle/paddle_manylinux_devel/tags/ 下载得到。
</li>
<li>
pypi不支持覆盖上传,所以一个版本号的wheel包发布之后,不可以更改。下一个wheel包需要更新版本号才可以上传。
</li>
</ul>
</div>
<div
class=
"section"
id=
"docker"
>
<span
id=
"docker"
></span><h2>
发布Docker镜像
<a
class=
"headerlink"
href=
"#docker"
title=
"Permalink to this headline"
>
¶
</a></h2>
<p>
上述PaddlePaddle CI编译wheel完成后会自动将Docker镜像push到DockerHub,所以,发布Docker镜像只需要对自动push的镜像打上
版本号对应的tag即可:
</p>
<ol
class=
"simple"
>
<li>
进入 https://hub.docker.com/r/paddlepaddle/paddle/tags/ 查看latest tag的更新时间是否在上述编译wheel包完成后是否最新。
</li>
<li>
执行
<code
class=
"docutils literal"
><span
class=
"pre"
>
docker
</span>
<span
class=
"pre"
>
pull
</span>
<span
class=
"pre"
>
paddlepaddle/paddle:[latest
</span>
<span
class=
"pre"
>
tag]
</span></code>
,latest tag可以是latest或latest-gpu等。
</li>
<li>
执行
<code
class=
"docutils literal"
><span
class=
"pre"
>
docker
</span>
<span
class=
"pre"
>
tag
</span>
<span
class=
"pre"
>
paddlepaddle/paddle:[latest
</span>
<span
class=
"pre"
>
tag]
</span>
<span
class=
"pre"
>
paddlepaddle/paddle:[version]
</span></code></li>
<li>
执行
<code
class=
"docutils literal"
><span
class=
"pre"
>
docker
</span>
<span
class=
"pre"
>
push
</span>
<span
class=
"pre"
>
paddlepaddle/paddle:[version]
</span></code></li>
</ol>
</div>
<div
class=
"section"
id=
"paddlepaddle"
>
<span
id=
"id1"
></span><h2>
PaddlePaddle 分支规范
<a
class=
"headerlink"
href=
"#paddlepaddle"
title=
"Permalink to this headline"
>
¶
</a></h2>
<p>
PaddlePaddle开发过程使用
<a
class=
"reference external"
href=
"http://nvie.com/posts/a-successful-git-branching-model/"
>
git-flow
</a>
分支规范,并适应github的特性做了一些区别。
</p>
...
...
develop/doc/searchindex.js
浏览文件 @
12c0344e
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
develop/doc_cn/_sources/design/releasing_process.md.txt
浏览文件 @
12c0344e
...
...
@@ -7,11 +7,9 @@ PaddlePaddle每次发新的版本,遵循以下流程:
1. 从`develop`分支派生出新的分支,分支名为`release/版本号`。例如,`release/0.10.0`
1. 将新分支的版本打上tag,tag为`版本号rc.Patch号`。第一个tag为`0.10.0rc1`,第二个为`0.10.0rc2`,依次类推。
1. 对这个版本的提交,做如下几个操作:
* 使用Regression Test List作为检查列表,测试本次release的正确性。
* 如果失败,记录下所有失败的例子,在这个`release/版本号`分支中,修复所有bug后,Patch号加一,到第二步
* 修改`python/setup.py.in`中的版本信息,并将`istaged`字段设为`True`。
* 编译这个版本的Docker发行镜像,发布到dockerhub。如果失败,修复Docker编译镜像问题,Patch号加一,返回第二步
* 编译这个版本的Ubuntu Deb包。如果失败,修复Ubuntu Deb包编译问题,Patch号加一,返回第二步。
* 使用Regression Test List作为检查列表,测试Docker镜像/ubuntu安装包的功能正确性
* 如果失败,记录下所有失败的例子,在这个`release/版本号`分支中,修复所有bug后,Patch号加一,返回第二步
* 编译这个版本的python wheel包,并发布到pypi。
* 由于pypi.python.org目前遵循[严格的命名规范PEP 513](https://www.python.org/dev/peps/pep-0513),在使用twine上传之前,需要重命名wheel包中platform相关的后缀,比如将`linux_x86_64`修改成`manylinux1_x86_64`。
* pypi上的package名称为paddlepaddle和paddlepaddle_gpu,如果要上传GPU版本的包,需要修改build/python/setup.py中,name: "paddlepaddle_gpu"并重新打包wheel包:`python setup.py bdist_wheel`。
...
...
@@ -21,8 +19,8 @@ PaddlePaddle每次发新的版本,遵循以下流程:
pip install twine
twine upload dist/[package to upload]
```
* 编译这个版本的Docker发行镜像,发布到dockerhub。如果失败,修复Docker编译镜像问题,Patch号加一,返回第二步
1. 第三步完成后,将`release/版本号`分支合入master分支,并删除`release/版本号`分支。将master分支的合入commit打上tag,tag为`版本号`。同时再将`master`分支合入`develop`分支。最后删除`release/版本号`分支。
1. 编译master分支的Docker发行镜像,发布到dockerhub。编译ubuntu的deb包,发布到github release页面
1. 协同完成Release Note的书写
...
...
@@ -31,6 +29,30 @@ PaddlePaddle每次发新的版本,遵循以下流程:
* `release/版本号`分支一旦建立,一般不允许再从`develop`分支合入`release/版本号`。这样保证`release/版本号`分支功能的封闭,方便测试人员测试PaddlePaddle的行为。
* 在`release/版本号`分支存在的时候,如果有bugfix的行为,需要将bugfix的分支同时merge到`master`, `develop`和`release/版本号`这三个分支。
## 发布wheel包到pypi
使用[PaddlePaddle CI](https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview)
完成自动化二进制编译,参考下图,选择需要发布的版本(通常包含一个CPU版本和一个GPU版本),点击"run"右侧的"..."按钮,可以
弹出下面的选择框,在第二个tab (Changes)里选择需要发布的分支,这里选择0.11.0,然后点击"Run Build"按钮。等待编译完成后
可以在此页面的"Artifacts"下拉框中找到生成的3个二进制文件,分别对应CAPI,`cp27m`和`cp27mu`的版本。然后按照上述的方法
使用`twine`工具上传即可。
<img src="ci_build_whl.png">
* 注:CI环境使用 https://github.com/PaddlePaddle/buildtools 这里的DockerImage作为编译环境以支持更多的Linux
发型版,如果需要手动编译,也可以使用这些镜像。这些镜像也可以从 https://hub.docker.com/r/paddlepaddle/paddle_manylinux_devel/tags/ 下载得到。
* pypi不支持覆盖上传,所以一个版本号的wheel包发布之后,不可以更改。下一个wheel包需要更新版本号才可以上传。
## 发布Docker镜像
上述PaddlePaddle CI编译wheel完成后会自动将Docker镜像push到DockerHub,所以,发布Docker镜像只需要对自动push的镜像打上
版本号对应的tag即可:
1. 进入 https://hub.docker.com/r/paddlepaddle/paddle/tags/ 查看latest tag的更新时间是否在上述编译wheel包完成后是否最新。
1. 执行 `docker pull paddlepaddle/paddle:[latest tag]`,latest tag可以是latest或latest-gpu等。
1. 执行 `docker tag paddlepaddle/paddle:[latest tag] paddlepaddle/paddle:[version]`
1. 执行 `docker push paddlepaddle/paddle:[version]`
## PaddlePaddle 分支规范
PaddlePaddle开发过程使用[git-flow](http://nvie.com/posts/a-successful-git-branching-model/)分支规范,并适应github的特性做了一些区别。
...
...
develop/doc_cn/design/releasing_process.html
浏览文件 @
12c0344e
...
...
@@ -225,23 +225,17 @@
<span
id=
"paddlepaddle"
></span><h1>
PaddlePaddle发行规范
<a
class=
"headerlink"
href=
"#paddlepaddle"
title=
"永久链接至标题"
>
¶
</a></h1>
<p>
PaddlePaddle使用git-flow branching model做分支管理,使用
<a
class=
"reference external"
href=
"http://semver.org/"
>
Semantic Versioning
</a>
标准表示PaddlePaddle版本号。
</p>
<p>
PaddlePaddle每次发新的版本,遵循以下流程:
</p>
<ol>
<li><p
class=
"first"
>
从
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
分支派生出新的分支,分支名为
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
。例如,
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/0.10.0
</span></code></p>
</li>
<li><p
class=
"first"
>
将新分支的版本打上tag,tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
版本号rc.Patch号
</span></code>
。第一个tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
0.10.0rc1
</span></code>
,第二个为
<code
class=
"docutils literal"
><span
class=
"pre"
>
0.10.0rc2
</span></code>
,依次类推。
</p>
</li>
<li><p
class=
"first"
>
对这个版本的提交,做如下几个操作:
</p>
<ol
class=
"simple"
>
<li>
从
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
分支派生出新的分支,分支名为
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
。例如,
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/0.10.0
</span></code></li>
<li>
将新分支的版本打上tag,tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
版本号rc.Patch号
</span></code>
。第一个tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
0.10.0rc1
</span></code>
,第二个为
<code
class=
"docutils literal"
><span
class=
"pre"
>
0.10.0rc2
</span></code>
,依次类推。
</li>
<li>
对这个版本的提交,做如下几个操作:
</li>
</ol>
<ul>
<li><p
class=
"first"
>
修改
<code
class=
"docutils literal"
><span
class=
"pre"
>
python/setup.py.in
</span></code>
中的版本信息,并将
<code
class=
"docutils literal"
><span
class=
"pre"
>
istaged
</span></code>
字段设为
<code
class=
"docutils literal"
><span
class=
"pre"
>
True
</span></code>
。
</p>
</li>
<li><p
class=
"first"
>
编译这个版本的Docker发行镜像,发布到dockerhub。如果失败,修复Docker编译镜像问题,Patch号加一,返回第二步
</p>
</li>
<li><p
class=
"first"
>
编译这个版本的Ubuntu Deb包。如果失败,修复Ubuntu Deb包编译问题,Patch号加一,返回第二步。
</p>
<li><p
class=
"first"
>
使用Regression Test List作为检查列表,测试本次release的正确性。
</p>
<ul>
<li><p
class=
"first"
>
如果失败,记录下所有失败的例子,在这个
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支中,修复所有bug后,Patch号加一,到第二步
</p>
</li>
<li><p
class=
"first"
>
使用Regression Test List作为检查列表,测试Docker镜像/ubuntu安装包的功能正确性
</p>
<ul
class=
"simple"
>
<li>
如果失败,记录下所有失败的例子,在这个
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支中,修复所有bug后,Patch号加一,返回第二步
</li>
</ul>
<li><p
class=
"first"
>
修改
<code
class=
"docutils literal"
><span
class=
"pre"
>
python/setup.py.in
</span></code>
中的版本信息,并将
<code
class=
"docutils literal"
><span
class=
"pre"
>
istaged
</span></code>
字段设为
<code
class=
"docutils literal"
><span
class=
"pre"
>
True
</span></code>
。
</p>
</li>
<li><p
class=
"first"
>
编译这个版本的python wheel包,并发布到pypi。
</p>
<ul>
...
...
@@ -256,22 +250,47 @@
</pre></div>
</div>
</li>
<
/ul
>
<
li><p
class=
"first"
>
编译这个版本的Docker发行镜像,发布到dockerhub。如果失败,修复Docker编译镜像问题,Patch号加一,返回第二步
</p
>
</li>
</ul>
</li>
<li><p
class=
"first"
>
第三步完成后,将
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支合入master分支,并删除
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支。将master分支的合入commit打上tag,tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
版本号
</span></code>
。同时再将
<code
class=
"docutils literal"
><span
class=
"pre"
>
master
</span></code>
分支合入
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
分支。最后删除
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支。
</p>
</li>
<li><p
class=
"first"
>
编译master分支的Docker发行镜像,发布到dockerhub。编译ubuntu的deb包,发布到github release页面
</p>
</li>
<li><p
class=
"first"
>
协同完成Release Note的书写
</p>
</ul>
</li>
</ul>
<ol
class=
"simple"
>
<li>
第三步完成后,将
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支合入master分支,并删除
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支。将master分支的合入commit打上tag,tag为
<code
class=
"docutils literal"
><span
class=
"pre"
>
版本号
</span></code>
。同时再将
<code
class=
"docutils literal"
><span
class=
"pre"
>
master
</span></code>
分支合入
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
分支。最后删除
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支。
</li>
<li>
协同完成Release Note的书写
</li>
</ol>
<p>
需要注意的是:
</p>
<ul
class=
"simple"
>
<li><code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支一旦建立,一般不允许再从
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
分支合入
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
。这样保证
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支功能的封闭,方便测试人员测试PaddlePaddle的行为。
</li>
<li>
在
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
分支存在的时候,如果有bugfix的行为,需要将bugfix的分支同时merge到
<code
class=
"docutils literal"
><span
class=
"pre"
>
master
</span></code>
,
<code
class=
"docutils literal"
><span
class=
"pre"
>
develop
</span></code>
和
<code
class=
"docutils literal"
><span
class=
"pre"
>
release/版本号
</span></code>
这三个分支。
</li>
</ul>
<div
class=
"section"
id=
"wheelpypi"
>
<span
id=
"wheelpypi"
></span><h2>
发布wheel包到pypi
<a
class=
"headerlink"
href=
"#wheelpypi"
title=
"永久链接至标题"
>
¶
</a></h2>
<p>
使用
<a
class=
"reference external"
href=
"https://paddleci.ngrok.io/project.html?projectId=Manylinux1&tab=projectOverview"
>
PaddlePaddle CI
</a>
完成自动化二进制编译,参考下图,选择需要发布的版本(通常包含一个CPU版本和一个GPU版本),点击
”
run
”
右侧的
”
...
”
按钮,可以
弹出下面的选择框,在第二个tab (Changes)里选择需要发布的分支,这里选择0.11.0,然后点击
”
Run Build
”
按钮。等待编译完成后
可以在此页面的
”
Artifacts
”
下拉框中找到生成的3个二进制文件,分别对应CAPI,
<code
class=
"docutils literal"
><span
class=
"pre"
>
cp27m
</span></code>
和
<code
class=
"docutils literal"
><span
class=
"pre"
>
cp27mu
</span></code>
的版本。然后按照上述的方法
使用
<code
class=
"docutils literal"
><span
class=
"pre"
>
twine
</span></code>
工具上传即可。
</p>
<p><img
src=
"ci_build_whl.png"
></p>
<ul
class=
"simple"
>
<li>
注:CI环境使用 https://github.com/PaddlePaddle/buildtools 这里的DockerImage作为编译环境以支持更多的Linux
发型版,如果需要手动编译,也可以使用这些镜像。这些镜像也可以从 https://hub.docker.com/r/paddlepaddle/paddle_manylinux_devel/tags/ 下载得到。
</li>
<li>
pypi不支持覆盖上传,所以一个版本号的wheel包发布之后,不可以更改。下一个wheel包需要更新版本号才可以上传。
</li>
</ul>
</div>
<div
class=
"section"
id=
"docker"
>
<span
id=
"docker"
></span><h2>
发布Docker镜像
<a
class=
"headerlink"
href=
"#docker"
title=
"永久链接至标题"
>
¶
</a></h2>
<p>
上述PaddlePaddle CI编译wheel完成后会自动将Docker镜像push到DockerHub,所以,发布Docker镜像只需要对自动push的镜像打上
版本号对应的tag即可:
</p>
<ol
class=
"simple"
>
<li>
进入 https://hub.docker.com/r/paddlepaddle/paddle/tags/ 查看latest tag的更新时间是否在上述编译wheel包完成后是否最新。
</li>
<li>
执行
<code
class=
"docutils literal"
><span
class=
"pre"
>
docker
</span>
<span
class=
"pre"
>
pull
</span>
<span
class=
"pre"
>
paddlepaddle/paddle:[latest
</span>
<span
class=
"pre"
>
tag]
</span></code>
,latest tag可以是latest或latest-gpu等。
</li>
<li>
执行
<code
class=
"docutils literal"
><span
class=
"pre"
>
docker
</span>
<span
class=
"pre"
>
tag
</span>
<span
class=
"pre"
>
paddlepaddle/paddle:[latest
</span>
<span
class=
"pre"
>
tag]
</span>
<span
class=
"pre"
>
paddlepaddle/paddle:[version]
</span></code></li>
<li>
执行
<code
class=
"docutils literal"
><span
class=
"pre"
>
docker
</span>
<span
class=
"pre"
>
push
</span>
<span
class=
"pre"
>
paddlepaddle/paddle:[version]
</span></code></li>
</ol>
</div>
<div
class=
"section"
id=
"paddlepaddle"
>
<span
id=
"id1"
></span><h2>
PaddlePaddle 分支规范
<a
class=
"headerlink"
href=
"#paddlepaddle"
title=
"永久链接至标题"
>
¶
</a></h2>
<p>
PaddlePaddle开发过程使用
<a
class=
"reference external"
href=
"http://nvie.com/posts/a-successful-git-branching-model/"
>
git-flow
</a>
分支规范,并适应github的特性做了一些区别。
</p>
...
...
develop/doc_cn/searchindex.js
浏览文件 @
12c0344e
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录