title: “ServiceComb发版指南” lang: cn ref: release_guide permalink: /cn/developers/release-guide/ excerpt: “ServiceComb发版指南 介绍如何在Apache发版” last_modified_at: 2018-05-08T09:55:44+08:00 author: Asif Siddiqui tags: [发版] redirect_from:

  • /theme-setup/

{% include toc %}

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

前期准备

  1. 项目CI应该是正常的(绿色的)。
  2. 确定发布版本号。
  3. 因为发版的过程中需要使用密钥发布版本进行签名,请确保密钥中的公钥已经发布到公钥服务器。
  4. 熟悉maven版本发行相关的设置。

配置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

准备和校验发行包

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

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

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

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

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

  6. 进行集成测试

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

  8. 将标签推送到主仓库。

给发行包签名

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

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

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

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

PMC批准

  1. 发送投票邮件至 dev@servicecomb.apache.org, 发起PMC批准.

  2. 等待72小时,或者获得3票+1并且没有-1。如果有-1票,修正问题并从第1步重新开始。

  3. 将投票结果发布到dev@servicecomb.apache.org。

通告

  1. 上传发行包至Apache发行仓库

  2. 等待24小时,让所有镜像同步。

  3. dev的文件移动到release目录中,同时确认已经被存档,同时更新网站上相关链接。

  4. 上传发行页面至ServiceComb网站。

  5. 发送发行通告邮件到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 中央库上传文件。

  1. 如果~/.gnupg中没有GPG密钥文件,则将GPG密钥文件拷贝至~/.gnupg文件夹。

    gpg.conf
    pubring.gpg
    random_seed
    secring.gpg
    trustdb.gpg
    
  2. 更新~/.m2/settings.xml文件中的GPG密码。

  3. 更新~/.m2/settings.xml文件中的Apache帐户用户名和密码。

  4. 克隆java-chassis代码

    git clone https://github.com/apache/servicecomb-java-chassis.git
    
  5. 运行以下命令

    mvn clean deploy -DskipTests -Prelease -Pdistribution -Ppassphrase
    
  6. 如果执行失败,需要解决问题。 并参考第7步关闭临时仓库,重新执行第5步。

  7. 如果步骤5命令执行成功,则所有的jar包都已经成功上传至maven临时仓库。
    使用apache帐号登录到Apache Nexus,点击“Staging Repositories”,搜索“servicecomb”,根据时间找到最近的java-chassis相关的记录,close该条记录,得到maven临时仓库的链接,例如:https://repository.apache.org/content/repositories/orgapacheservicecomb-1385

  8. 在 servicecomb-java-chassis 的 github 的 release 页面,点击 release, 发布 pre release 版本, 打上 tag 。

给发行包签名

  1. 从临时仓库下载二进制包及签名
    例如:
    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

  2. 从临时仓库下载源码包及签名
    例如:
    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

  3. 生成二进制包和源码包的校验和
    例如:
    sha512sum -b apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip > apache-servicecomb-java-chassis-distribution-1.2.0-bin.zi.sha512
    sha512sum -b apache-servicecomb-java-chassis-distribution-1.2.0-src.zip > apache-servicecomb-java-chassis-distribution-1.2.0-src.zip.sha512

  4. 将上述步骤相关的文件,上传到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
    
  5. 从SVN下载发行包,验证签名和校验。

PMC批准

  1. 发送投票邮件至 dev@servicecomb.apache.org, 发起PMC批准.

  2. 等待72小时,或者获得3票+1并且没有-1。如果有-1票,修正问题,并删除主仓库的release版本对应的标签,重新开始版本发布流程。

  3. 将投票结果发布到dev@servicecomb.apache.org。

更新文档和通告

  1. 在 servicecomb-java-chassis 的 github 的 release 页面,将 pre release 修改为正式 release。完成 release notes书写。

  2. dev的文件移动到release目录中。

    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 -r 1.2.0
    svn ci .
    
  3. 使用apache帐号登录到Apache Nexus,点击“Staging Repositories”,搜索“servicecomb”,找到需要发布的java-chassis记录,点击“Release”。

  4. 等待24小时,让所有镜像同步。

  5. 更新官网发布信息。 修改内容可以参考 1.3.0 RP 或者 2.0.0 RP

  6. 发送发行通告邮件到dev@servicecomb.apache.org, announce@apache.org。

发行Pack

准备和校验发行包

  1. 如果~/.gnupg中没有GPG密钥文件,则将GPG密钥文件拷贝至~/.gnupg文件夹。
gpg.conf
pubring.gpg
random_seed
secring.gpg
trustdb.gpg
  1. 更新~/.m2/settings.xml文件中的GPG密码。

  2. 更新~/.m2/settings.xml文件中的Apache帐户用户名和密码。

  3. 克隆Pack代码。

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

  2. 运行以下命令。

mvn deploy -DskipTests -Prelease -Pdistribution -Ppassphrase
  1. 上述命令执行成功,所有的jar包都成功上传至临时仓库后,运行门槛测试以验证基本功能, 如果执行失败,需要解决问题,从步骤7重新开始。

  2. 如果步骤7命令执行成功,则所有的jar包都已经成功上传至maven临时仓库。
    使用apache帐号登录到Apache Nexus,点击“Staging Repositories”,搜索“servicecomb-pack”,根据时间找到最近的pack相关的记录,close该条记录,得到maven临时仓库的链接,例如:https://repository.apache.org/content/repositories/orgapacheservicecomb-1385

  3. 将release分支以及标签分别push至主仓库。

给发行包签名

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

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

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

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

PMC批准

  1. 发送投票邮件至 dev@servicecomb.apache.org, 发起PMC批准.

  2. 等待72小时,或者获得3票+1并且没有-1。如果有-1票,修正问题并从第1步重新开始。

  3. 将投票结果发布到dev@servicecomb.apache.org。

通告

  1. 上传发行包至Apache发行仓库

  2. 等待24小时,让所有镜像同步。

  3. dev的文件移动到release目录中,同时确认已经被存档,同时更新网站上相关链接。

  4. 上传发行页面至ServiceComb网站。

  5. 发送发行通告邮件到dev@servicecomb.apache.org, announce@apache.org。