我使用 Hudson 写入远程磁盘时遇到问题。当我手动写入时,它可以正常工作。
两台计算机意味着:一台在 Windows XP 上,另一台是 Mac mini 服务器。需要远程访问的磁盘在 Mac 上。我成功了以下操作:
- 在 Mac 上创建了一个用户
- 授予它对要安装在 WinXP 框上的文件夹的读/写访问权限
- 使用上面创建的用户的凭证在 WinXP 机器上挂载文件系统
- 远程创建了几个目录,移动了文件等(从 WinXP 计算机)
但是当 Hudson 运行构建脚本时(我编写了脚本来在挂载的文件夹中写入内容),它失败了,并显示
BUILD FAILED
C:\path\to\build.xml:62:
Directory Z:\mac\path creation was not successful for an unknown reason
我可以从同一台计算机(远程)创建 Z:\mac\path,它工作得很好。事实上,该目录已经存在,但我希望它无论如何都尝试创建它,以防它被删除。我在本地磁盘上做了同样的事情,它从来没有抱怨过(目录存在与否)。
相应的 Ant 指令为
<mkdir dir="Z:/mac/path/"/>
我怀疑存在某种权限问题。不太确定。在计算机上安装磁盘的用户不是 SYSTEM... 而 Hudson 由“他”运行。WinXP 计算机上的用户名与用于安装远程文件系统 (NTFS) 的 Mac 用户无关。
我能做什么?它被很好地安装为 Z:。我可以毫无问题地浏览和编辑它。不过那行在 Hudson 中仍然无法计算(而在 C: 上却可以通过)。我认为不可能使用 SYSTEM 来安装它...求助!
答案1
我刚刚解决了一个类似的问题,所以希望这个解决方案对你有用……但已经过去 9 个月了,所以也许它会对下一个人有所帮助。基本问题是,如果 Tomcat 作为服务运行,您的脚本将以 SYSTEM 身份执行。
以 SYSTEM 身份打开 cmd 提示符进行测试(将时间设置为从现在起一分钟)
at 12:34 /interactive "cmd.exe"
测试一下...
C:\.jenkins\jobs\test\workspace>dir \\remotemachine\folder
Access is denied.
通过将驱动器映射为具有足够权限(在本例中为写访问权限)的用户来解决
NET USE z: \\remotemachine\folder password /USER:username\domain
答案2
WinXP 计算机上的用户名与用于挂载远程文件系统 (NTFS) 的 Mac 用户无关。
尝试在两个系统上创建具有相同用户名/密码的帐户,并让您的 Hudson 进程(或服务,如果您已以这种方式安装)以该用户身份运行。
另一种方法是使用 KCD 提到的“NET USE”命令,但是 /USER 参数选项是 domain\username 而不是 username\domain。
我在我的环境中使用 NET USE 命令来映射然后在 NAS 上写入远程驱动器,因此绝对可以通过这种方式完成。