ServiceComb发版指南

本文向大家介绍如何在Apache上进行ServiceComb项目发版.

前期准备

  • 项目CI应该是正常的(绿色的)。
  • 确定相关的项目版本号。
  • 因为发版的过程中需要签名,请确保签名用密钥对应公钥已经发布到公开公钥服务器。
  • 熟悉POM文件中版本发行相关的设置。

配置Maven

ServiceComb Java-Chassis和Saga使用Maven进行版本发布,我们需要在发布前对Maven进行一些配置。

在使用Maven把发行包发布到仓库之前,我们应当在~/.m2/settings.xml文件中配置制品为组群可写的,否则其它开发人员将无法提交相同制品的新SNAPSHOT版本。本项目参考了Maven项目的设定指南。请特别注意加密密码

  1. <settings>
  2. ...
  3. <servers>
  4. <!-- Per http://maven.apache.org/developers/committer-settings.html -->
  5. <!-- To publish a snapshot of some part of Maven -->
  6. <server>
  7. <id>apache.snapshots.https</id>
  8. <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
  9. <password> <!-- YOUR APACHE LDAP PASSWORD --> </password>
  10. </server>
  11. <!-- To publish a website of some part of Maven -->
  12. <server>
  13. <id>apache.website</id>
  14. <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
  15. <filePermissions>664</filePermissions>
  16. <directoryPermissions>775</directoryPermissions>
  17. </server>
  18. <!-- To stage a release of some part of Maven -->
  19. <server>
  20. <id>apache.releases.https</id>
  21. <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
  22. <password> <!-- YOUR APACHE LDAP PASSWORD --> </password>
  23. </server>
  24. <!-- To stage a website of some part of Maven -->
  25. <server>
  26. <id>stagingSite</id> <!-- must match hard-coded repository identifier in site:stage-deploy -->
  27. <username> <!-- YOUR APACHE LDAP USERNAME --> </username>
  28. <filePermissions>664</filePermissions>
  29. <directoryPermissions>775</directoryPermissions>
  30. </server>
  31. </servers>
  32. ...
  33. <profiles>
  34. <profile>
  35. <id>apache-release</id>
  36. <properties>
  37. <gpg.useagent>false</gpg.useagent>
  38. <gpg.passphrase><!-- YOUR GPG PASSPHRASE --></gpg.passphrase>
  39. <test>false</test>
  40. </properties>
  41. </profile>
  42. </profiles>
  43. ...
  44. </settings>

发行Service-Center

准备和校验发行包

  • 克隆service-center代码。
  1. git clone https://github.com/apache/servicecomb-service-center.git
  2. cd servicecomb-service-center
  3. gvt restore
  • 在master分支上打上准备发布版本的标签。

  • 运行RAT工具,检查所有源文件头都有合法的ASF声明, 请参考该文档

  • 运行make_release.sh脚本,请参考该文档

  • 上一步将会在根目录下生成发行包。

  • 在Linux与Windows环境下运行前端与service-center。

  • 进行集成测试

  • 如果以上全部测试都通过了,将发行包分发给同事在不同机器上进行验证。

  • 将标签推送到主仓库。 给发行包签名

  • 从Github下载要发行版本标签的源码包。

  • 生成Linux发行包,Windows发行包和源码包的签名和校验和。

  • 上传发行版到Apache发行开发仓库.

  • 从SVN下载发行包,验证签名和校验。

PMC批准

通告

发行Java-Chassis

准备和校验发行包

  • 克隆java-chassis代码。
  1. git clone https://github.com/apache/servicecomb-java-chassis.git
  • 使用以下perl命令,替换所有pom.xml文件中的版本号并提交改动至本地。
  1. find . -name 'pom.xml'|xargs perl -pi -e 's/1.0.0-m2-SNAPSHOT/1.0.0-m2/g'
  • 在master分支上打上准备发布版本的标签。

  • 清理repository.apache.org中所有冗余的发行版。

  • 将GPG密钥文件拷贝至文件夹备用。

  • 更新~/.m2/settings.xml文件中的GPG密钥文件路径和密码.

  • 更新设置内Apache帐户用户名和密码。

  • 运行以下命令。

  1. mvn deploy -DskipTests -Prelease -Pdistribution -Ppassphrase
  • 上述命令执行成功,所有的jar包都成功上传至临时仓库后,运行Company Workshop作基本的功能验证。

  • 将临时仓库共享给多人,在不同的机器和环境上进行验证。

  • 如果验证全部通过,将标签提交至主仓库。

  • 清理Apache临时仓库。 给发行包签名

  • 从临时仓库下载二进制包和源码包。

  • 生成二进制包和源码包的签名和校验和。

  • 上传发行包到Apache发行开发仓库..

  • 从SVN下载发行包,验证签名和校验。

PMC批准

通告

发行Saga

准备和校验发行包

  • 克隆Saga代码。
  1. git clone https://github.com/apache/servicecomb-saga.git
  • 使用以下perl命令,替换所有pom.xml文件中的版本号并提交改动至本地。
  1. find . -name 'pom.xml'|xargs perl -pi -e 's/1.0.0-m2-SNAPSHOT/1.0.0-m2/g'
  • 在master分支上打上准备发布版本的标签。

  • 清理repository.apache.org中所有冗余的发行版。

  • 将GPG密钥文件拷贝至文件夹备用。

  • 更新~/.m2/settings.xml文件中的GPG密钥文件路径和密码.

  • 更新设置内Apache帐户用户名和密码。

  • 运行以下命令。

  1. mvn deploy -DskipTests -Prelease -Pdistribution -Ppassphrase
  • 上述命令执行成功,所有的jar包都成功上传至临时仓库后,运行门槛测试以验证基本功能。

  • 将临时仓库共享给多人,在不同的机器和环境上进行验证。

  • 如果验证全部通过,将标签提交至主仓库。

  • 清理Apache临时仓库。 给发行包签名

  • 从临时仓库下载二进制包和源码包。

  • 生成二进制包和源码包的签名和校验和。

  • 上传发行包到Apache发行开发仓库..

  • 从SVN下载发行包,验证签名和校验。

PMC批准

通告

注意整个发行过程通常需要2周时间,如果PMC全部都一次性通过。因此请提前准备发行活动。

标签: 发版