Hudson:更新当前正在运行的作业的config.xml,并使运行的作业立即知道更新的config.xml

时间:2010-12-29 02:07:02

标签: java hudson

我的情况是我的hudson服务器当前正在运行构建,并且需要将新的config.xml更新为当前正在运行的构建。如何实现这一目标?

其次,一旦新的config.xml被POST,我如何让当前运行的构建知道新的config.xml并继续构建?

例如,以下config.xml指定运行

java -cp Test.jar argument1

Build开始并正在运行。

将新的config.xml发布到当前正在运行的作业。

java -cp Test.jar newargument1

如何让Test.jar知道config.xml文件中已更新的newargument1?

基本上,我试图避免使用新的config.xml更新从头开始重新构建新版本。

2 个答案:

答案 0 :(得分:1)

我们假设第一个config.xml文件名为file1,第二个config.xml文件名为file2。

为什么要在构建过程中将file1更改为file2? 或者必须有一个你能够实现的理由(henece a condition) 它使用PowerShell或Bash脚本

-OR -

没有特定的原因,在这种情况下,您可以将file2(不是字面意思)附加到file1,这意味着将两个xml文件合并,让构建从头到尾运行。

为了在另一个xml上发布xml,意味着file1位于file1之上,然后将xml发布到以下网址:

http://<HUDSON_URL>/job/<JOB_NAME>/config.xml

但是,在构建运行时,这将无效。它只能在作业停止和/或完成运行file1后执行。

如果您使用curl,请确保使用--data-binary选项将config.xml(file2)发送到hudson服务器。

答案 1 :(得分:0)

你没有机会使用Hudson的功能。您需要取消构建并重新启动它。

那就是说,有一个丑陋的解决方法。您需要从文件中读取参数。这样,您就可以更改文件。当作业处于读取文件时,它将获得最新的参数。不幸的是,每个构建步骤都需要从文件中读取参数,因为无法将数据从一个构建步骤传递到另一个构建步骤。如果您只有一个构建步骤,那么此解决方案是无用的。所以从本质上讲,你需要让你的构建本身意识到这些变化。

当我在执行过程中改变一些构建参数时,我发现这里存在危险(不可重现)结果的危险。所以我的建议是取消并重启。

可能有其他解决方案可以解决您的问题。你能解释一下大局吗?为什么要避免重启?结账需要那么久吗?