Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

我的一个成功经验是,在以下三个网页中点击submit key按钮来手动上传:

[1] ipv4.pool.sks-keyservers.net[2] p80.pool.sks-keyservers.net
[3] http://keys.gnupg.net

手动上传的KEY内容形如:

Code Block
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBF2LLTABEACRM0lzt9BMSsIg9cCfcEBRH6Fc2etS7vrOt8NPq2VTuHYHUMzA
...
-----END PGP PUBLIC KEY BLOCK-----

然后知道你可以在[3] 中查找到你的key,才算成功。(注意,我发现查找的时候只能输入你的邮箱查找才靠谱)


c.2 寻找你认识的Apache社区的Committer来给你的公钥认证

参考链接 https://gist.github.com/F21/b0e8c62c49dfab267ff1d0c6af39ab84 主要都是对方有事情要做,所以就不详细解释了。


d. 将你的gpg 公钥加入KEYS文件中

这个步骤需要使用SVN。MacOS已经默认安装了SVN。

...

建议先将这些文件夹都删除(根据PLC4X的文档介绍,不删除的话,这些文件都会被打包到source.zip中。。。。)


!然后!务必检查所有的版本是否正确。比如如果你是从0.8.0升级成0.8.1,那就:

  • 搜索 /0.8.0/ (包含左右两边的”/“),这样可以把所有文档中的链接替换成/0.8.1/
  • 搜索0.8.0,检查所有文档中出现的和0.8.0版本相关的功能描述是否正确,并修改为0.8.1
  • 搜索0.8.0,注意Java代码中的控制台输出是否需要修改(例如CLI会打印版本号)
  • 注意TsFile的magic number不一定要修改。这个需要讨论着来。

然后开始正式的发版。

3.发布版本

3.1 自动在github上打tag,并生成各种签名文件

...

a. 希望发布的版本号,默认值为pom中的版本号去掉“-SNAPSHOT”SNAPSHOT”,一般可以不修改

b. 希望在github打的tag名字是什么,默认值为rel/0.8.1,注意我们目前使用的命名风格是: release-/0.8.1

c. 下一个版本号是什么,默认值一般也是对的。

...

然而这个rollback并不会删除你本地刚才自动创建的tag,所以要手动删除,例如:$git tag -d release 0release/0.8.1

删除远端tag:git push origin :refs/tags/release/0.8.1


如果成功了,根据PLC4X的文档,还应该去apache的仓库看一看是否有最新的记录。地址是 https://gitbox.apache.org/repos/asf?p=incubator-iotdb.git;a=shortlog;h=refs/heads/rel/0.8 注意分支名。

应该能看到刚才mvn release:prepare自动做的git操作,commit日志是:[maven-release-plugin] prepare release release/0.8.1 和 [maven-release-plugin] prepare for next development iteration


另外,如果成功,在本地的目录下,有如下文件生成:

target目录下:

apache-iotdb-0.8.1-incubating-source-release.zip
apache-iotdb-0.8.1-incubating-source-release.zip.asc
apache-iotdb-0.8.1-incubating-source-release.zip.sha512

distribution/target/目录下:

apache-iotdb-0.8.1-incubating-bin.zip
apache-iotdb-0.8.1-incubating-bin.zip.asc 
apache-iotdb-0.8.1-incubating-bin.zip.sha512

进行下验证吧(不是必须操作):

gpg2 --verify apache-iotdb-0.8.1-incubating-source-release.zip.asc apache-iotdb-0.8.1-incubating-source-release.zip

gpg2 --verify apache-iotdb-0.8.1-incubating-bin.zip.asc apache-iotdb-0.8.1-incubating-bin.zip

shasum -a512 apache-iotdb-0.8.1-incubating-source-release.zip

shasum -a512 apache-iotdb-0.8.1-incubating-bin.zip

然后和.sha512文件对比下,确认一致。


3.2 从github上下载下来源码,并重新编译后上传到Apache Nexus仓库

...

再从Iotdb源码/distribution/target/apache-iotdb-0.8.1-incubating-bin.zip* (zip, zip.asc, zip.sha512三个文件)拷贝进来;

然后用svn命令提交:

$ svn add 0.8.1

$ svn commit -m "perparing RC1 of 0.8.1 of IoTDB release"


3.4 标记github上的release为pre-release

https://github.com/apache/incubator-iotdb/releases,找到刚打的release,点击edit,选中这是个pre-release,然后保存。


3.5 写邮件

邮件标题:[VOTE] Apache IoTDB 0.8.1 (incubating) RC2 release

邮件模板:

Hi all,

(这一句是可选的) Apache IoTDB (incubating) 0.8.1 is a bug-fix version from 0.8.0. You can get its mainly changes from [5]. 

Apache IoTDB (Incubating) 0.8.1 has been staged under [2] and it’s time to vote
on accepting it for release.  All Maven artifacts are available under [1].
If approved we will seek final release approval from the IPMC.
Voting will be open for 72hr.
A minimum of 3 binding +1 votes and more binding +1 than binding -1
are required to pass.

Release tag: release/0.8.1
Hash for the release tag: 37b213b6ab6fc8ca13ab60f21dff099042a0e295

Per [3] "Before voting +1 PMC/PPMC members are required to download
the signed source code package, compile it as provided, and test
the resulting executable on their own platform, along with also
verifying that the package meets the requirements of the ASF policy
on releases."

You can achieve the above by following [4].

[ ]  +1 accept (indicate what you validated - e.g. performed the non-RM items in [4])
[ ]  -1 reject (explanation required)


(这也是可选的)Difference with RC1:

[1] https://repository.apache.org/content/repositories/orgapacheiotdb-1005
[2] https://dist.apache.org/repos/dist/dev/incubator/iotdb/0.8.1/rc2
[3] https://www.apache.org/dev/release.html#approving-a-release
[4] https://cwiki.apache.org/confluence/display/IOTDB/Validating+a+staged+Release

[5] https://dist.apache.org/repos/dist/dev/incubator/iotdb/0.8.1/rc2/RELEASE_NOTES.md


上面红色的字都是需要改的。

其中tag的hash值可以通过如下命令拿到:

$ git show release/0.8.1 --name-only

4 投票失败了怎么办

投票失败时,需要先清理战场,然后重新发布。

首先把Nexus上的发布关闭掉,方法是登录到repository.apache.org后,然后选中刚才的行,点击close按钮。

然后手动删除github上的release和tag,以及本地的tag。

删除远端tag:git push origin :refs/tags/release/0.8.1

本地的tag删除方法:

$git tag -d release/0.8.1

然后把github上rel/0.8上的最新代码中的pom中的版本号降低回0.8.1-SNAPSHOT (之前mvn release:perform的时候,被自动改成了0.8.2-SNAPSHOT了)

当然这一步你也可以用git revert 来实现。

然后开始修改各种投票中大家发现的问题。并提交到rel/0.8.

之后跳转到步骤3重新开始。

5. 投票通过后怎么办