1

我喜欢时髦。它是非常强大的脚本,我们到处都在使用它。最近在 Jenkins 服务器上,我们试图获取一些驻留在虚拟驱动器上的文件,这些文件由 subst 命令创建。问题是 groovy 似乎不支持虚拟驱动器,但我没有找到任何确认。这是真的吗,有什么解决方法吗?

这是我们使用的示例代码:

import groovy.io.FileType

def list = []
//the original file path for T: is C:\Users\MyUser\workspace\MyProject\src\test\data
def dir = new File("T:" + "\\")
dir.eachFile (FileType.FILES) { file ->
  list << file
}

list.each{
  println "${it}"
}

我们得到的结果是:

[EnvInject] - 评估 Groovy 脚本内容 [EnvInject] - [错误] - 注入构建包装器中定义的环境变量时出现问题:org.jenkinsci.lib.envinject.EnvInjectException:无法评估脚本。java.io.FileNotFoundException: T:. 有关更多信息,请参阅系统日志

任何帮助表示赞赏。

4

1 回答 1

2

我自己找到了答案,但@Hugues Moreau 9 的输入是引导我找到答案的那个。

这是一个许可问题。Jenkins 在我的默认帐户下运行,但问题是由 Apache (httpd.exe) 引起的。httpd.exe 作为系统帐户运行,它没有访问 T: 的权限。我所做的是从https://technet.microsoft.com/en-us/sysinternals/bb897553.aspx下载 PSEXEC.EXE并通过此工具以 SYSTEM 用户身份打开命令行:

PSEXEC -i -s -d CMD

之后,我为 SYSTEM 用户创建了一个子目录 T:。现在 Jenkins 和 Apache 可以访问虚拟驱动器了。

正如 Hugues 指出的更精确的描述和问题在这里:https ://stackoverflow.com/questions/182750/map-a-network-drive-to-be-used-by-a-service

于 2017-05-10T07:46:34.390 回答