该文章内容发布已经超过一年,请注意检查文章中内容是否过时。
总的来说,Source Release是Apache关注的重点,也是发布的必须内容;而Binary Release是可选项,Dubbo可以选择是否发布二进制包到Apache仓库或者发布到Maven中央仓库。
请参考以下链接,找到更多关于ASF的发布指南:
主要包括签名工具、Maven仓库认证相关准备
详细文档请参见这里, Mac OS下配置如下
根据提示,生成key
如果有多个public key,设置默认key。修改~/.gnupg/gpg.conf
如果有多个public key, 也可以删除无用的key:
PS: 最新版本经过实测,本地没有gpg.conf这个文件,因此如果在执行过程中遇到签名失败,可以参考这个文章:https://blog.csdn.net/wenbo20182/article/details/72850810 或 https://d.sb/2016/11/gpg-inappropriate-ioctl-for-device-errors
Dubbo项目的父pom为Apache pom(2.7.0以上版本需要,2.6.x发布版本不需要此操作)
添加以下内容到.m2/settings.xml 所有密码请使用maven-encryption-plugin加密后再填入
从主干分支拉取新分支作为发布分支,如现在要发布${release_version}
版本,则从2.6.x拉出新分支${release_version}-release
,此后${release_version}
Release Candidates涉及的修改及打标签等都在${release_version}-release
分支进行,最终发布完成后合入主干分支。
首先,在${release_version}-release
分支验证maven组件打包、source源码打包、签名等是否都正常工作。2.6.x记得要使用1.6进行编译打包
上述命令将snapshot包推送到maven中央仓库
先用dryRun验证是否ok
验证通过后,执行release:prepare
执行release插件时,如果指定了
-DpushChanges=true
, 插件会自动提交到远端的GitHub仓库中,此时就需要输入GitHub的密码,注意不是输入web页面的登录密码,而是一个Personal access tokens
,获取方式详见这里
这里有一点要注意的是tag, 在执行过程中,需要选择发布的artifactId, 下一个版本artifactId以及发布版本的tag, tag默认的是dubbo-parent-xxxx,需要改成dubbo-xxxx
执行完上述步骤后,你会发现:
source-release.zip
和 bin-release.zip
包已经生成在dubbo-distribution
目录下,请解压并检查文件是否完整[maven-release-plugin] prepare release dubbo-x.x.x
${release_version+1}-SNAPSHOT
,同时新增一个commit,名叫[[maven-release-plugin] prepare for next development iteration
如果指定了
-DpushChanges=true
, 则本地提交会自动推送到远端的GitHub仓库。根据经验,建议不要指定为true,请设置为false,待本地检查通过之后再手动提交
执行release:perform,做staging发布
此时插件会自动下载远端的tag对应的源码,编译后,将所有Artifacts发布到配置的远程maven仓库,处于staging状态。
准备svn本机环境(Apache使用svn托管项目的发布内容)
将dubbo checkout到本地目录
当前发布版本为${release_version},新建目录
添加public key到KEYS文件并提交到SVN仓库(第一次做发布的人需要做这个操作,具体操作参考KEYS文件里的说明)。KEYS主要是让参与投票的人在本地导入,用来校验sign的正确性
拷贝distribution/target
下的source相关的包到svn本地仓库dubbo/${release_version}
生成sha512签名
针对source-release.zip
针对bin-release.zip
,需要增加-b
参数,表明是一个二进制文件
如果有binary release要同时发布
在distribution/target
目录下,拷贝bin-release.zip
以及bin-release.zip.asc
到svn本地仓库dubbo/${release_version}
,参考第6步,生成sha512签名。
提交到Apache svn
详细的检查列表请参考官方的check list
首先,从一下地址下载要发布的Release Candidate到本地环境:
https://dist.apache.org/repos/dist/dev/dubbo/${release_version}/
然后,开始验证环节,验证包含但不限于以下内容和形式
如果是第一次检查,需要首先导入公钥。
然后使用如下命令检查签名
解压缩apache-dubbo-${release_version}-source-release.zip
,进行如下检查:
apache-dubbo-${release_version}-source-release
diff -r a rc_dir tag_dir
解压缩apache-dubbo-${release_version}-bin-release.zip
,进行如下检查:
注意,如果二进制包里面引入了第三方依赖,则需要更新LICENSE,加入第三方依赖的LICENSE,如果第三方依赖的LICENSE是Apache 2.0,并且对应的项目中包含了NOTICE,还需要更新NOTICE文件
投票分两个阶段:
Dubbo社区投票邮件模板:
Apache社区投票邮件模板:
宣布投票结果模板:
https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/$VERSION/apache-dubbo-$VERSION-source-release.zip
. 同时更新以前版本的下载链接,改为类似https://archive.apache.org/dist/dubbo/$VERSION/apache-dubbo-$VERSION-bin-release.zip
. 具体可以参考过往的下载链接${release-version}-release
分支到对应的主干分支, 然后删除相应的release分支,例如: git push origin --delete 2.7.0-release
dev@dubbo.apache.org
和 general@incubator.apache.org
宣布release邮件模板:repository.apache.org nexus仓库的权限已经申请,参见jira
发布jar包到maven仓库,首先访问repository.apache.org, 选择staging repository
, 点击release
按钮。等待一段时间之后,在这里确认完整性和正确性. 发布到Maven中央仓库则还需要等待一段时间。可以在这里进行确认。
If you’ve encoutered this error, try the following commands: