$ ./configure $ make # make install
姜宁
TODO 添加讲师相关的内容
版本发布的策略
完全关闭道路,维修人员完全投入
多分支并行开发,保证版本的持续维护
开源项目版本的持续小修小补
开发人员的工作时间不好保证,需要并行处理问题
修复了老的版本Bug
添加了新特性
添置的新的配置选项
引入了不兼容的修改
体现特定系列内的版本顺序
表明每个版本中变更的程度和性质
三位数的版本号
主版本号.次版本号.小版本号
Singer 5.11.4
版本号 + 限定词
Scanley 2.3.0 (RC1)
Singer 5.11.4 (Beta)
小版本的变化为需要保证前后的兼容性
次版本号变化必须保证后向兼容
主版本变更不必考虑兼容性
大多应用在次版本号上
偶数表示稳定版
奇数表示不稳定版
适合发布周期较长的项目
也可以通过其他方式进行标注
开发分支要保证可以持续合如代码
隔离版本工作与日常开发变动
多分支策略可以保证大家各司其职
分支维护的技巧
稳定版本 Bug fix 策略
分支上游优先的维护关系
处于可以随时发布状态的版本
通过冻结新功能达成稳定版
基于时间的版本
基于特性的版本
可以决定那些变更可以合入版本
具备理解所有变更的技术能力
具备社群威望和社交技巧
能够掌控有关版本发布的讨论
开发者有权对是否合入变更进行投票
投票必须有正当的(技术)理由
先review在合入 +2 投票
先合入再review -1 投票
按照发布流程推动版本发布
确定版本发布时间点
维护和执行发布脚本
准备release note
发起和追踪投票
完成发布版本工作
版本发布包含:源代码和二进制便利包
格式 Unix tar.gz; Windows zip
文件包含:
README, COPYING 或者 LICNESE
Apache Notice 文件
CHANGES 或者 NEWS
INSTALL
提供文档描述,常规的编译操作
C、C++代码
$ ./configure $ make # make install
Java项目,使用 maven
$ mvn clean install
发送邮件邀请相关人员试用投票
Apache使用GnuPG对发布件进行数字签名
需要引入发布人的Public key进行验证
二进制哈希识别确保文件没有被篡改
通过公开的途径宣布版本发布
提供URL下载相关tar文件
确保签名和SHA1校验文件提供
提供版本修改记录(Github也支持自动生成)
感谢开发团队和测试人员以及提bug的贡献者
开源项目的生命周期支持
常规维护分支 Bug fix,安全漏洞修补
主线开发版本合入所有的修改
一般不提供超过三个以上分支版本的维护
控制好各个分支的修改提交粒度
以志愿者贡献为基础的版本规划,发布时间不好安排
一般通过商议的方式确定特性集
需要平衡开源版本和商用版本发版策略
提高版本发布频率可以降低版本规划矛盾
大家可以现场提问
在演讲之后沟通
给我发送邮件