前言
要把自己的 JAVA 项目发布到 Maven 中央仓库上,这个过程非常的麻烦,而且由于 Maven 中央仓库的严谨性,每次发布都需要登录到Nexus
网站手动进行流程确认,并不支持纯命令行式的部署,导致无法做到真正的CI/CD
,为了弥补这一点,我抓包分析了一下Nexus API
并且开发了一个Github Action
(maven-nexus-release)用于自动的Close
和Release
,从而达到真正的全自动部署。
- 效果图
已经有发布 jar 包到中央仓库的老司机应该都明白发布 jar 包有多麻烦,没有发布过但是想把自己开源项目发布到
Maven
中央仓库的可以先参考下我之前的一篇文章:发布 jar 包到 maven 中央仓库
使用
首先最好是对 Github Action 有一定的了解,如果不了解也没关系,可以通过我之前的文章快速过一遍:Github Actions 尝鲜
准备
托管在 Github 上的 Maven 项目
需要调整pom.xml
中maven-gpg-plugin
插件的配置,示例:
1 | <plugin> |
Nexus 用户名和密码
登录到https://oss.sonatype.org
的账号和密码。
gpg private key
Base64
编码的 gpg 私钥,通过命令行导出:
- 列出秘钥
1 | gpg --list-secret-keys --keyid-format LONG |
找到用于发布 jar 包的 key,这里示例中的是2A6B618785DD7899
。
- 导出私钥
1 | gpg --armo --export-secret-keys 2A6B618785DD7899 |
注意私钥是从-----BEGIN PGP PRIVATE KEY BLOCK-----
一直到-----END PGP PRIVATE KEY BLOCK-----
,而不是仅仅是中间这一段文本。
gpg passphrase
在生成 gpg 秘钥的时候会需要输入一个短密码,应该还记得吧。
将秘钥配置到 Github Secrets 中
进入 Github 项目主页,然后找到 Settings 选项。
进入
Secrets
菜单把刚刚准备好的秘钥一一创建
在右边有New secret
按钮用于创建秘钥,将刚刚的秘钥内容创建并给定对应的名称,示例:
最终 Secrets 如下:
编写 Github Action 配置文件
在项目根目录下新建.github/workflows/deploy.yml
文件,内容如下:
1 | name: deploy |
把代码推送到 Github 上,就可以看到对应的Action
了,上面示例中有两种方式来触发构建:
手动触发
通过 Github 可以手动的触发构建,方便测试,操作如下图:发布 release 时自动触发
在 Github 项目中创建 release,会自动的触发构建,适用于项目稳定之后。
后记
以上步骤都在我的项目proxyee中通过验证,另外maven-nexus-release项目还是刚起步,功能可能不够完善,大家如果有什么好的想法和建议欢迎提出 issue 和 pr。
顺便小小的安利下proxyee
,它是基于netty
编写的 HTTP 代理服务器,支持代理HTTP
+HTTPS
+WebSocket
,并且支持HTTP
和HTTPS
抓包,感兴趣的可以 Star 一下。