发布指南

GPG 设置


安装 GPG

在 GnuPG 官网下载安装包。 GnuPG 的 1.x 版本和 2.x 版本的命令有细微差别,下列说明以 GnuPG-2.1.23 版本为例。

安装完成后,执行以下命令查看版本号。

1
2
    gpg --version
    

创建 Key

安装完成后,执行以下命令创建key。

GnuPG-2.x可使用:

1
2
    gpg --full-gen-key
    

GnuPG-1.x可使用:

1
2
    gpg --gen-key
    

根据提示完成key:

注意:请使用Apache mail生成GPG的Key。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    gpg (GnuPG) 2.0.12; Copyright (C) 2009 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
  (1) RSA and RSA (default)
  (2) DSA and Elgamal
  (3) DSA (sign only)
  (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
        0 = key does not expire
    <n>  = key expires in n days
    <n>w = key expires in n weeks
    <n>m = key expires in n months
    <n>y = key expires in n years
Key is valid for? (0) 
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: ${输入用户名}
Email address: ${输入邮件地址}
Comment: ${输入注释}
You selected this USER-ID:
  "${输入的用户名} (${输入的注释}) &lt;${输入的邮件地址}>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key. # 输入密码
    

查看生成的key

1
2
    gpg --list-keys
    

执行结果:

1
2
3
4
5
6
7
8
    // 笔者本地电脑
    $ gpg --list-keys
    /home/resty/.gnupg/pubring.gpg
    ------------------------------
    pub   4096R/30B5FD72 2020-01-02
    uid   Yuansheng Wang <membphis@apache.org>
    sub   4096R/3D2F913D 2020-01-02
    

其中 30B5FD72 为公钥 ID。

将公钥同步到服务器

命令如下:

1
2
3
4
    // 最后参数是上面生成的公钥 ID。
    $ gpg --keyserver hkp://pool.sks-keyservers.net --send-key 30B5FD72
    gpg: sending key 30B5FD72 to hkp server pool.sks-keyservers.net
    

pool.sks-keyservers.net为随意挑选的公钥服务器,每个服务器之间是自动同步的,选任意一个即可。

id.apache.org 中录入 Key Fingerprint

获取 Key Fingerprint

1
2
3
4
5
6
7
8
9
    # 注意下方 Key fingerprint 部分
    $ gpg --list-keys --fingerprint
    /home/resty/.gnupg/pubring.gpg
    ------------------------------
    pub   4096R/30B5FD72 2020-01-02
          Key fingerprint = 0F91 BE0A 55A7 B22F DE1A  CEEC 3352 48FD 30B5 FD72
    uid                  Yuansheng Wang <membphis@apache.org>
    sub   4096R/3D2F913D 2020-01-02
    

登录 id.apache.org 填写 Key Fingerprint

点击左下角的 Submit changes... 按钮提交保存。

Apache svn 中添加自己的 GPG 公钥

下载 svn 目录

1
2
    $ svn --username=${Apache 用户名} co https://dist.apache.org/repos/dist/dev/apisix
    

进入 apisix 目录并查看其中文件:

1
2
3
4
    $ cd apisix
    $ ls
    KEYS
    

导出公钥到追加到 KEYS 文件:

1
2
    $ gpg -a --export ${GPG用户名}  >> KEYS
    

提交修改后的 KEYS 文件,把公钥信息保存到 svn 服务器:

1
2
3
4
5
6
7
8
    $ svn --username=${Apache 用户名} commit -m "added ${Apache 邮箱} gpg pub key"
    Authentication realm: <https://dist.apache.org:443> ASF Committers
    Password for 'membphis': # 输入密码
    Store password unencrypted (yes/no)? yes
    Sending        KEYS
    Transmitting file data .
    Committed revision 37434.
    

制作安装包并上传到 Apache svn

每个安装包都有版本,这里以准备 1.0-rc1 版本为例。在制作安装包之前,先确保在 github 上已经准备好分支 v1.0。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
    # 进入 Apache svn  apisix 目录应只有一个 KEYS 文件
    $ ls
    KEYS

    # 新建版本号目录并进入比如1.0-rc1
    $ mkdir 1.0-rc1 && cd 1.0-rc1

    # 下载安装包
    git clone -b v1.0 git@github.com:apache/apisix.git apache-apisix-1.0

    # 检查版本号
    $ cd apache-apisix-1.0 && ./utils/check-version.sh 1.0 && cd ..

    # 删除 .git 文件夹
    $ rm -rf apache-apisix-1.0/.git

    # 制作压缩包
    $ tar zcvf apache-apisix-1.0-rc1-src.tar.gz apache-apisix-1.0

    # 制作签名这步会弹出对话框提示你输入生成 gpg 时录入的密码
    $ gpg --armor --detach-sign apache-apisix-1.0-rc1-src.tar.gz

    # 生成 sha512 校验文件
    $ shasum -a512 apache-apisix-1.0-rc1-src.tar.gz > apache-apisix-1.0-rc1-src.tar.gz.sha512

    # 删除 apache-apisix-1.0-rc1
    $ rm -rf apache-apisix-1.0

    # 后退到 Apache svn  apisix 根目录并确认文件目录
    $ cd .. && tree
    .
    ├── 1.0-rc1
       ├── apache-apisix-1.0-rc1-src.tar.gz
       ├── apache-apisix-1.0-rc1-src.tar.gz.asc
       └── apache-apisix-1.0-rc1-src.tar.gz.sha512
    └── KEYS

    1 directory, 4 files

    # 添加新文件到 svn
    $ svn add *
    A         1.0-rc1
    A  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.asc
    A  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz
    A         1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.sha512
    svn: warning: W150002: '/home/resty/git/apache_svn/apisix/KEYS' is already under version control
    svn: E200009: Could not add all targets because some targets are already versioned
    svn: E200009: Illegal target for the requested operation

    # 提交修改到 Apache svn 服务器
    $ svn --username=${Apache 用户名} commit -m "release 1.0-rc1"
    Adding         1.0-rc1
    Adding  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz
    Adding  (bin)  1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.asc
    Adding         1.0-rc1/apache-apisix-1.0-rc1-src.tar.gz.sha512
    Transmitting file data ...
    Committed revision 37435.
    

发投票邮件到 dev 邮件列表

点击此处查看参考邮件 主要参考内容:邮件发送人(apache 邮箱)、邮件标题、邮件正文(主要是修改版本号和链接地址)。

统计投票结果

点击此处查看参考邮件 发起投票邮件后需要等待72小时,然后统计投票结果并发送一封 result 邮件到 dev@apisix.apache.org。

发 announce 邮件

点击此处查看参考邮件 在 dev@apisix.apache.org 和 announce@apache.org 两个邮件列表发起 announce 邮件

将安装包从 dev 移动到 release 目录下

去掉包名中的 RC,将 KEYS 文件以及安装包移动到 此地址

更新下载信息

更新此地址 的下载信息,源码在 https://github.com/apache/apisix-website