Versions Compared

Key

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

...

(注意:本文是如何作为一个新RM的实践指导,因此并未对所有步骤进行“为什么需要这个步骤”的解释)

本文大量参考了如下教程:

  1. https://plc4x.apache.org/developers/release.html
  2. 进行gpg签名的教程

1. 创建一个 gpg KEY

对于第一次当RM的人来说,需要将进行这个步骤。

...

Code Block
languagexml
title~/.m2/settings.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <servers>
    <!-- Apache Repo Settings -->
    <server>
        <id>apache.snapshots.https</id>
        <username>{user-id}</username>
        <password>{user-pass}</password>
    </server>
    <server>
        <id>apache.releases.https</id>
        <username>{user-id}</username>
        <password>{user-pass}</password>
    </server>
  </servers>
</settings>
<profiles>
    <profile>
      <id>apache-release</id>
      <properties>
        <gpg.keyname>你的KEYID</gpg.keyname><!-- Your GPG Keyname here -->
        <!-- Use an agent: Prevents being asked for the password during the build -->
        <gpg.useagent>true</gpg.useagent>
        <gpg.passphrase>你的私钥的密码</gpg.passphrase>
      </properties>
    </profile>
</profiles>


f. 上传GPG公钥到Github账户上传GPG公钥到Github账户s v

!!重要!! 许多教程中都没提及这一步,而如果不坐着一步的话,你在做一些步骤的时候,maven会告诉你没有权限。。

...

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

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

5. 投票通过后怎么办

在孵化器阶段,需要发邮件给general邮件列表,交给IPMC们投票,通过后才可以。



6. General列表投票也通过后怎么办

把发布好的文件从dev仓库中移动到release的svn项目中。

release的svn地址是:https://dist.apache.org/repos/dist/release/incubator/iotdb

如果第一次的话,可以clone这个仓库,然后增加文件,然后提交。

$svn co https://dist.apache.org/repos/dist/release/incubator/iotdb

$cd iotdb

$拷贝文件过来,放在 版本-incubating下,例如 下面的0.8.1-incubating就是我刚刚放过去的。


MacBook-Pro-3:iotdb-rel hxd$ tree .
.
├── 0.8.0-incubating
│   ├── README.md
│   ├── RELEASE_NOTES.md
│   ├── apache-iotdb-0.8.0-incubating-bin.zip
│   ├── apache-iotdb-0.8.0-incubating-bin.zip.asc
│   ├── apache-iotdb-0.8.0-incubating-bin.zip.sha512
│   ├── apache-iotdb-0.8.0-incubating-source-release.zip
│   ├── apache-iotdb-0.8.0-incubating-source-release.zip.asc
│   └── apache-iotdb-0.8.0-incubating-source-release.zip.sha512
├── 0.8.1-incubating
│   ├── README.md
│   ├── RELEASE_NOTES.md
│   ├── 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
│   ├── 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
└── KEYS


然后提交:

$svn add 0.8.1-incubating

$svn commit -m "upload 0.8.1 release files"


如果你的keys也修改了,可能还要在更新下keys文件。


注意:所有的apache 镜像都会开始同步这些文件了,一般会在24小时内同步完成。之后就可以发声明邮件了。


7. 删除旧版本的发布文件

Apache似乎要求当新版本都同步好后,删除掉旧版本的文件(例如本例中是0.8.0-incubating),但是我查看了几个项目,这个不是绝对要求的。。建议保留一些版本。

删除方法是用 svn delete命令删除文件夹即可。

例如:$svn delete https://dist.apache.org/repos/dist/release/incubator/iotdb/0.8.0-incubating/ -m"deleted version 0.8.0"


8. 正式发布Maven文件


进入https://repository.apache.org/#welcome,登录账号,然后到Staging Repositories中选中你之前close的版本,选择release。完事儿。


9. 将release分支的代码更新到最新


我们项目中,release分支始终指向最新的发布版本。

git checkout release
git merge release/0.8.1

如果有有冲突,那么全盘接收tag上的修改,可以使用如下命令:

git merge -X theirs release/0.8.1

10. 更新JIRA

  1. Set the released version to "released" and set the "release-date"

  2. Add the next version to the versions.

目前我没有权限,所以还没测试


11. 更新官网的下载链接



12. 昭告天下!

当你确认多数镜像都同步好了之后,可以昭告天下发布新版本的信息了:

发邮件的邮箱:务必是apache.org的邮箱,否则会被拒收。

发送邮件到:announce@apache.org

抄送邮件到:dev@iotdb.apache.org

消息主题:[ANNOUNCE] Apache IoTDB (incubating) 0.8.1 released

消息内容示例:

The Apache PLC4X team is pleased to announce the release of Apache PLC4X 0.6.0

PLC4X is a set of libraries for communicating with industrial programmable
logic controllers (PLCs) using a variety of protocols but with a shared API.

The current release contains drivers able to communicate with industrial PLCs using one of the following protocols:

* Siemens S7 (0x32)
* Beckhoff ADS
* Modbus
* EtherNet/IP

Beyond that we also provide integration modules for the following Apache projects and frameworks:

* Apache Edgent (Incubating)
* Apache Camel
* Apache Kafka (Kafka Connect)

Visit the Apache PLC4X website [1] for general information or
the downloads page [2] for release notes and download information.

Regards,
The Apache PLC4X team

[1] http://plc4x.apache.org
[2] http://plc4x.apache.org/users/download.html


That is all.