「开源人的福音」一键部署Java构件到Sonatype
2022-05-30 freedom
「开源人的福音」一键部署Java构件到Sonatype
作者:freedom 发布时间:2022-05-30 10:00:00

介绍

作为一个java开发人员,我相信大家都有这样的需求,将自己的构件(例如jar包)部署到中央仓库,以便与其他开发人员和项目共享。如果我们使用maven作为java项目管理工具,通常我们的做法大致有以下几步:

  1. 在项目pom里面配置相关的远程仓库信息以及一些必要的插件
  2. 在setting.xml里配置远程仓库的账号密码
  3. 使用gnupg生成公私钥对部署的文件进行签名

看整个过程显得冗长复杂,但是现在大家不用担心,因为建木CI给大家提供了节点去完成这一系列的事情,只需要一些声明式的配置,即可大大缩短配置java构件的部署时间,让开发人员专注于业务开发,所以让我们搭上建木CI的小船驶向远方

以下流程省略开发者在Sonatype上注册账号提交工单(提一个上传jar包的申请) 的流程,快进到部署环境

部署构件到中央仓库

想必大家对如此复杂冗长的流程已经开始不满了,下面将介绍如何使用建木CI来自动化、声明式地完成这一切。

建木CI是一个节点编排工具,通过编排节点来实现一系列的需求。此次部署构件到远程仓库也是通过编排节点来达到目的

编排节点就像大厨炒菜,首先要进行原材料的选择,下面介绍一下本次自动化部署使用的三个节点

  • git clone节点

    git是一个版本管理工具,git clone节点用于将我们的项目从远端仓库上拉取下来,版本选用最新的1.2.3

  • gnupg节点

    如果我们需要对jar进行签名,我们可能需要使用gnupg来生成公私钥(如果我们事先已经准备好了,则不需要此节点)。既然要生成公私钥,那么我们选用此节点生成公私钥,版本为1.0.0_gen-key

  • sonatype节点

    我们选用此节点来进行项目的部署,目前仅支持使用maven工具管理的项目发布到远程仓库,版本为1.0.0-maven3.8.5_jdk11

选好的节点如下图所示:

image-20220527211412958

原材料准备好了那么我们开始准备加调料,也就是填充参数构建流程的过程:

此次我们使用图形化编排功能编辑此测试流程(ps:图形化编排是建木CI 2.4.0推出的重磅级功能,详见「v2.4」千呼万唤的图形化编排,来了!

首先编辑项目信息

image-20220527161744908.png

然后开始往所有节点填充参数

  • git clone节点

    点击节点图标往右侧抽屉里填充参数,如下图:

    image-20220527155218542.png

    配置好我们项目的git地址即可

  • gnupg节点

    同样,点击节点图标往右侧抽屉里填充参数,如下图:

    image-20220527155842326

    配置好必要的参数,用于生成公私钥

  • sonatype节点

    重复上述的操作,点击节点图标往右侧抽屉里填充参数

    image-20220527161212253.png
    image-20220527161236380

    这里有一个小细节,聪明的小伙伴都看出来sonatype节点某些输入参数使用了前面节点的输出参数(比如,项目目录、gpg路径参数)这里想要使用前面节点的输出参数,那么必须先将这几个节点连上线,如下图:

    image-20220527161454159.png

    然后选择上游节点的输出参数,如下图

    image-20220527211114110.png

到这里我们就完成了图形化编排maven部署java构件的流程

那么既准备好了原材料(节点选型),又加好了调料,接下来就到了激动人心的炒菜环节,启动流程:

image-20220527161822291.png

流程正在运行中:

image-20220527161902447.png

流程运行成功,查看每个节点的运行日志

git_clone节点:

image-20220527162300844.png

gnupg节点:

image-20220527162405399.png

sonatype节点:

image-20220527162452103.png

到中央仓库查看刚刚部署的java构件:

image-20220527162630753.png

至此,我们已经使用建木CI成功将java构件部署到了中央仓库上!

结尾

想必大家对图形化编排非常感兴趣,其实图形化编排流程底层也是生成了一个流程DSL,如果想参考本次测试流程具体生成的DSL,可以移步此处java构件部署到中央仓库流程DSL