liusheng / liusheng.github.io

Liusheng's blog
http://liusheng.github.io
5 stars 1 forks source link

发布软件包到Maven 中心仓库 #42

Open liusheng opened 2 years ago

liusheng commented 2 years ago

背景

在尝试在aarch64的虚拟机上执行Hadoop YARN的测试用例时候,会发现缺少PhantomJS包,导致用例失败,Hadoop所引用的该软件包,没有对应于ARM64平台的release,于是,尝试在建立私有Maven仓库来发布对应于ARM平台的包。

环境信息:

root@ubuntu:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:        16.04
Codename:       xenial
root@ubuntu:~# uname  -a
Linux ubuntu 4.15.0-58-generic #64~16.04.1-Ubuntu SMP Wed Aug 7 14:13:08 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux

1. 在Sonatype上创建issue

为了在Maven上面创建自己的软件包仓库,需要在Sonatype的JIRA页面上提交一个issue,创建Issue的信息可以参照下图中的信息,主要包括Issue type, Group Id, Project URL, SCM url等信息。注意创建的时候类型选择OSSRH。 image

提交好Issue以后,稍等一会儿,可以发现系统提示你在自己的github仓库里面创建一个临时的repo用于验证是否管理权限。完成以后,恢复评论,可以发现Issue的状态变为已解决

注意: 这里使用的是github仓库域名作为Group Id,若使用的是其他类型的域名,验证权限的方式可能有所不同。

在Maven stagging仓库可以看到已上传包。

image

生成GPG 公私钥:

gpg --version
gpg --gen-key

一路回车用默认值即可,需要填上自己的用户名、邮箱等信息。

查询生成的gpg公私钥:

root@ubuntu:/home/zuul# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   2048R/C3A2E383 2019-08-27
uid                  liusheng (liusheng's gpg key for maven repo) <liusheng2048@gmail.com>
sub   2048R/0E79AACE 2019-08-27

用生成好的gpg key签名文件:

gpg -ab phantomjs-2.1.1-linux-aarch64.tar.bz2

验证文件签名:

root@ubuntu:/home/phantomjs# gpg --verify phantomjs-2.1.1-linux-aarch64.tar.bz2.asc
gpg: assuming signed data in `phantomjs-2.1.1-linux-aarch64.tar.bz2'
gpg: Signature made Tue Aug 27 12:19:07 2019 UTC using RSA key ID C3A2E383
gpg: Good signature from "liusheng (liusheng's gpg key for maven repo) <liusheng2048@gmail.com>"

导出公私钥并保存:

gpg --armor --output public-key-liusheng.txt --export liusheng
gpg --armor --output private-key-liusheng.txt --export-secret-keys liusheng

将公钥发布到keyserver上

gpg --keyserver hkp://keys.gnupg.net --send-keys C3A2E383

image

从上面的keyserver上获取自己已经上传的public key

gpg --keyserver hkp://keys.gnupg.net --recv-keys C3A2E383
root@liusheng-arm:/home/netty-all-aarch64/netty-all/4.1.48.Final# gpg --list-public-keys
/root/.gnupg/pubring.kbx
------------------------
pub   rsa2048 2019-08-27 [SC]
      E217E4FFF373A701BF3F9A31A27BFB9CC3A2E383
uid           [ unknown] liusheng (liusheng's gpg key for maven repo) <liusheng2048@gmail.com>
sub   rsa2048 2019-08-27 [E]