ServiceComb发版指南
本文向大家介绍如何在Apache上进行ServiceComb项目发版.
前期准备
配置Maven
ServiceComb Java-Chassis和Saga使用Maven进行版本发布,我们需要在发布前对Maven进行一些配置。
在使用Maven把发行包发布到仓库之前,参考了Maven项目的设定指南。请特别注意加密密码。
<settings>
...
<servers>
<!-- Per http://maven.apache.org/developers/committer-settings.html -->
<!-- To stage a release of some part of Maven -->
<server>
<id>apache.releases.https</id>
<username> <!-- YOUR APACHE LDAP USERNAME --> </username>
<password> <!-- YOUR APACHE LDAP PASSWORD --> </password>
</server>
</servers>
...
<profiles>
<profile>
<id>apache-release</id>
<properties>
<gpg.useagent>false</gpg.useagent>
<gpg.passphrase><!-- YOUR GPG PASSPHRASE --></gpg.passphrase>
<test>false</test>
</properties>
</profile>
</profiles>
...
</settings>
发行Service-Center
准备和校验发行包
- 克隆service-center代码。
git clone https://github.com/apache/servicecomb-service-center.git cd servicecomb-service-center gvt restore
-
在master分支上打上准备发布版本的标签。
-
运行RAT工具,检查所有源文件头都有合法的ASF声明, 请参考该文档。
-
运行
make_release.sh
脚本,请参考该文档。 -
上一步将会在根目录下生成发行包。
-
在Linux与Windows环境下运行前端与service-center。
-
进行集成测试。
-
如果以上全部测试都通过了,将发行包分发给同事在不同机器上进行验证。
- 将标签推送到主仓库。
给发行包签名
-
从Github下载要发行版本标签的源码包。
-
生成Linux发行包,Windows发行包和源码包的签名和校验和。
-
上传发行版到Apache发行开发仓库.
-
从SVN下载发行包,验证签名和校验。
PMC批准
-
发送投票邮件至 dev@servicecomb.apache.org, 发起PMC批准.
-
等待72小时,或者获得3票+1并且没有-1。如果有-1票,修正问题并从第1步重新开始。
-
将投票结果发布到dev@servicecomb.apache.org。
通告
-
上传发行包至Apache发行仓库。
-
等待24小时,让所有镜像同步。
-
上传发行页面至ServiceComb网站。
-
发送发行通告邮件到dev@servicecomb.apache.org, announce@apache.org。
发行Java-Chassis
发布版本前,首先确定该版本所有的 apache issues 都已经关闭, 并且 登录 apache issue 网站, 点击发布, 生成该版本的 release notes。
-
准备待发布版本
clone 需要发布版本的分支到开发环境(比如 master), 修改版本号, 并提交代码到仓库。 假设当前版本为
2.0.0-SNAPSHOT
,发布版本为2.0.0
。 执行:``` mvn versions:set -DgenerateBackupPoms=false -DnewVersion=2.0.0 ```
然后执行:
``` mvn clean install -Pit ```
如果编译成功,可以提交PR,代码检视通过后合入仓库。
-
进行软件包发布
需要准备 Linux 开发环境,并确保网络能够往 maven 中央库上传文件。
-
如果
~/.gnupg
中没有GPG密钥文件,则将GPG密钥文件拷贝至~/.gnupg
文件夹。 文件列表如下:``` gpg.conf pubring.gpg random_seed secring.gpg trustdb.gpg ```
-
更新
~/.m2/settings.xml
文件中的GPG密码。 -
更新
~/.m2/settings.xml
文件中的Apache帐户用户名和密码。 -
克隆java-chassis代码
``` git clone https://github.com/apache/servicecomb-java-chassis.git ```
-
运行以下命令。运行过程中可能需要输入 gpg 密码,
``` mvn clean deploy -DskipTests -Prelease -Pdistribution ```
如果提示 gpg 失败, 尝试执行下面的命令后,重新执行上面的命令:
``` export GPG_TTY=$(tty) ```
-
如果执行失败,需要解决问题。 并参考第7步
drop
临时仓库,重新执行第5步。 -
如果步骤5命令执行成功,则所有的jar包都已经成功上传至maven临时仓库。
使用apache帐号登录到 Apache Nexus ,点击 “Staging Repositories”, 搜索 “servicecomb”, 根据时间找到最近的java-chassis相关的记录,close该条记录,得到maven临时仓库的链接,例 如:https://repository.apache.org/content/repositories/orgapacheservicecomb-1385
。 -
在 servicecomb-java-chassis 的 github 的 release 页面,点击 release, 发布 pre release 版本, 打上 tag 。
- 给发行包签名
-
从临时仓库下载二进制包及签名, 例如:
``` https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip.asc ```
-
从临时仓库下载源码包及签名,例如:
``` https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-src.zip https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-src.zip.asc ```
-
生成二进制包和源码包的校验和,例如:
``` sha512sum -b apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip > apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip.sha512 sha512sum -b apache-servicecomb-java-chassis-distribution-1.2.0-src.zip > apache-servicecomb-java-chassis-distribution-1.2.0-src.zip.sha512 ```
-
将上述步骤相关的文件,上传到 Apache开发仓库 。 SVN命令:
``` svn co https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-java-chassis cd serviecomb-java-chassis mkdir -p 1.2.0/rc01 cp xxx/* 1.2.0/rc01 svn add 1.2.0 svn ci 1.2.0 ```
-
从SVN下载发行包,验证签名和校验。
- PMC批准
-
发送投票邮件至 dev@servicecomb.apache.org, 发起PMC批准.
-
等待72小时,或者获得3票+1并且没有-1。如果有-1票,修正问题,重新开始版本发布流程(视具体的失败情况,可能 需要重新生成 release notes,删除svn临时文件,删除临时
Staging repositories
等)。 -
将投票结果发布到dev@servicecomb.apache.org。
- 更新文档和通告
-
在 servicecomb-java-chassis 的 github 的 release 页面,将 pre release 修改为正式 release。完成 release notes书写。
-
``` cp dev/servicecomb/servicecomb-java-chassis/2.0.0/* release/servicecomb/servicecomb-java-chassis/2.0.0/ cd release/servicecomb/servicecomb-java-chassis/ svn add 2.0.0 svn ci 2.0.0 ```
同时删除 dev 的临时内容。
``` svn rm 1.2.0 svn ci . ```
-
使用apache帐号登录到 Apache Nexus,点击 “Staging Repositories” ,搜索 “servicecomb” , 找到需要发布的 java-chassis 记录,点击 “Release” 。 如果由其他临时 “Staging Repositories” ,可以点击 “Drop” 一并删除。
-
等待24小时,让所有镜像同步。
-
发送发行通告邮件到
dev@servicecomb.apache.org
,announce@apache.org
。