2015-03-02 54 views
0

您好,我需要一些帮助来覆盖詹金斯的蚂蚁的user.home属性。我在jenkins上创建了一个简单的工作,它在主服务器的辅助机器上运行构建脚本。脚本的任务之一是使用ant的user.home属性并访问某些文件。问题是,当我尝试在从机的命令行中回显此属性时,我看到C:\Users\Administrator,但是当我从Jenkins服务器运行完全相同的脚本时,我看到C:\。这种差异导致构建在Jenkins上失败。任何人都可以告诉我这种差异的原因是什么?有什么办法可以重写这个吗?如何从Jenkins服务器覆盖ant的user.home属性?

我试过在我的作业的配置文件中有一个名为user.home的属性,但似乎没有选中它。另一个有趣的一点是,当我在配置文件中改变了user.home值一些胡言乱语并运行在从服务器上的命令行蚂蚁,它仍然把它捡起为C:\Users\Administrator

我使用ant 1.7.1Jenkins 1.598

回答

1

你jenkins可能会以与管理员不同的身份运行。这是一件好事。

ant中的属性是不可变的,所以你可以从jenkins中的ant插件中指定这些属性,并且它们将覆盖任何其他值。 (点击invoke ant buildstep下的高级查看属性文本框)。

,我建议你不要覆盖user.home而是重构你的蚂蚁所以有config.location属性,默认为user.home,但可以overidden,无论你从詹金斯希望。这看起来似乎不自然ovrride user.home

+0

所以这是有点复杂。我会尽量以最好的方式解释它。我创建了一个调用'BUILDA.xml'并使用'CONFIGA.INI'的简单作业。在这个构建文件中,我基本上下载了一些文件并做了一些重构。现在,在其中一个目标中,我更改了ant build dir几次,并使用不同的配置文件。这些是我没有编写的构建脚本,它们使用属性'user.home'来访问某些文件。我尝试在'CONFIGA.INI'中添加'user.home',但没有帮助。另外,我在不同的从站上运行与其他用户相同的工作。 – 2015-03-02 23:34:16

+0

我发现的唯一解决方法是以管理员用户身份启动Jenkins和奴隶服务,并将奴隶重新连接到主服务器,以便它获取最新的'user.home'。 你说使用与管理员不同的ID来启动Jenkins是件好事。这是为什么? – 2015-03-02 23:34:20

+0

这是一件安全的事情。随着奴隶进程本身和它运行的代码。如果从服务器以管理员身份运行,则错误或恶意用户可能会导致问题。考虑是否有人在您的ant构建脚本中添加了一个exed'cmd rmdir/s/r c:\'。我知道这不太可能,但最好限制管理员帐户的使用。 – thekbb 2015-03-03 02:34:59