我有一个Jenkins作业,它调用ClearCase驱动器上的批处理文件(V :)。
我的Jenkins slave代理使用本地管理员帐户作为服务运行。 Jenkins的工作如下:
cleartool startview MY_VIEW
cd /d "V:\MY_VIEW\Build"
call PrepareBuild.bat
当我运行Jenkins工作时,我不断收到“访问被拒绝”。在控制台输出中尝试调用批处理文件时。但是,如果我在命令提示符下手动运行上面的命令,它会成功完成。
我在Windows XP下没有这个问题。有人知道为什么会在Windows 7(32位)上发生这种情况吗?
感谢。
答案 0 :(得分:3)
V:\
是使用windows command subst
获得的虚拟驱动器
它是动态视图(M:\yourView
)的根目录与虚拟驱动器之间的快捷方式
(即,V:\
与ClearCase没有特别的关联。它只是用户希望与某个ClearCase视图根目录关联的驱动器号)
但是,ClearCase在注册表HKCU/software/atria/...
中注册了该关联。
这意味着在Jenkins的本地管理员帐户下运行的ClearCase会话不会知道所述关联以及恢复该虚拟驱动器的需要。
解决方法是使用 psubst 使该驱动器永久化
这会在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices]
中注册路径,并且HKLM
可以从所有帐户访问
见" How to make SUBST mapping persistent across reboots?"
答案 1 :(得分:1)
我遇到了同样的问题。有一个更简单的解决方案。
Jenkins无法访问只有用户有权访问的文件夹(即使它由用户运行)。因此,获取访问权限的文件夹您需要为每个人而不是用户设置文件夹权限