0

我正在编写一个小 java 程序来执行复杂代码组织的完整发布。简而言之,我的程序需要通过Jenkins发布(“执行 Maven 发布”)项目“ProjectA” 。然后,一旦此发布过程完成并成功,程序将检测生成的新版本号。然后它将这个新版本号更新到其他项目的 pom 文件的属性中(比如依赖于该 ProjectA 的“ProjectB”和“ProjectC”,并在 SVN 中提交这些修改过的文件。然后我的程序将触发“在项目 B 和 C 上执行 Maven 发布”工作。

我确切地说我希望发布过程在 Jenkins 内部/由 Jenkins 执行,因为我想在历史中拥有这些操作的痕迹......我不想直接使用“maven-release-plugin”(外部Jenkins),因为在 Jenkins 构建的历史中不会有任何痕迹......

为此,我需要从此 Java 程序中调用 Jenkins 中可用的操作“执行 Maven 发布”。我怎样才能做到这一点?(我已经编写了所有其他步骤)。

在我的测试中,我设法将“构建”工作称为“纯”詹金斯,如下所示:

WindowsCommandLineExecutor windowsCommandLineExecutor = new WindowsCommandLineExecutor();
int exitCode = windowsCommandLineExecutor.execCmd("java -jar lib/jenkins-cli.jar -s http://MyJenkinsUrl.com:1234/ build \"MyProjectName\" -s --username MyJenkinsUserName --password MyJenkinsPassword", true);

但是“执行 Maven 发布”工作(如果我没记错的话)仅在 Jenkins 中可用,因为我们集成了插件“Maven-release-plugin”,它不是“纯粹的”Jenkins 工作(开箱即用) )... 这解释了为什么在这个 JenkinsCLI 工具中没有任何命令,例如“performRelease”:http://javadoc.jenkins-ci.org/?hudson/cli/ CLICommand.html

有什么想法,有什么建议吗?

4

1 回答 1

1

一种选择是使用 HTTP Post 到 Jenkins 作业,如此处所述Trigger Maven Release Remotely

我刚刚记录了如何从一个 Jenkins 工作到另一个工作,因此您还可以参考这篇文章了解更多详细信息从另一个工作触发詹金斯工作的“执行 maven 发布”

于 2016-12-05T18:22:54.123 回答