当尝试在Jenkins中执行构建时,我得到以下错误:
Started by user anonymous
Building in workspace C:UsersmryangitAML
[AML] $ cmd /c call C:UsersMRYAN~1.ASAAppDataLocalTemphudson3772834793680550098.bat
C:UsersmryangitAML>asc-tree -v cs1 .
Array @filter_prune missing the @ in argument 1 of push() at C:ascascwin2k/asc-tree. line 293.
asc-tree.: ASC (=Z:asc) is not a directory!
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE
当我打开一个正常的命令提示符并运行相同的命令(asc-tree -v cs1 .)时,它工作正常。
我在这里看了一下,并尝试在我的环境变量中使用UNC符号而不是"Z:",但这只是给了我相同的错误,机器名称而不是驱动器。
我还尝试更改服务以使用我的帐户登录详细信息而不是"本地系统帐户",但似乎没有做到这一点。
有人有什么想法吗?
根据这个答案,我设法使它工作。
解决方案可以在aspa Support的文章中找到:如何将网络共享永久映射到驱动器到Windows服务。
解决方案:
为了将网络共享映射到驱动器并可访问在Windows服务中,您需要以NT AUTHORITYSYSTEM的身份登录帐户。
要做到这一点,从微软下载Sysinternals套件,并解压缩它到一个目录,比如C:TEMP以下步骤假设您已经将SysInternals解压缩到C:TEMP,并且所有可执行文件都在其中。
- 以管理员身份启动命令提示符
-
CD TEMP
-
psexec -i -s cmd.exe
这会启动一个新的命令提示符窗口,步骤4应该在这个新窗口中执行。 -
net use Z: \servername_OR_IPsharedfolder /u:username /persistent:yes
提供具有访问权限的用户的凭证共享文件夹。 -
创建一个在计算机启动时运行的脚本,该脚本只有第4行根据微软的文章:分配计算机启动脚本。
在Windows Server 2008上面临同样的问题。在Jenkins代理服务上配置正确的用户凭据并重新启动它,但这也没有帮助。
最后的工作是通过Java Web Start 启动代理,而不将其安装为Windows服务。
不确定步骤1到3对于TomSellek的答案有什么意义,您只需要步骤4。在安全选项中,在创建任务时选择用户'system'。