我想从网络共享驱动器复制一些文件(作为驱动器Z安装在我的本地计算机上)。我写了一个批处理文件,将Z盘的内容复制到我的本地驱动器中。此批处理文件在cmd上成功运行,但是当我通过Jenkins触发它时,我遇到了问题。 Jenkins给出以下错误:
“系统无法找到指定的驱动器”
对此有任何帮助,将不胜感激。
谢谢,努曼。
如果你不想使用Jenkins-plugins或schedule-Tasks,这里是一种“groovy”方式:
用手:
您可以使用Jenkins> Manage Jenkins> Script Console提供的Groovy Script-Console,并执行命令以在Jenkins服务中映射网络驱动器。 (一旦Jenkins服务停止,必须重复)
自动化:
将Groovy命令写入名为“init.groovy”的文件,并将其放在JENKINS_HOME目录中。所以网络驱动器映射到Jenkins-startup上。
Groovy命令 - Windows:
使用脚本控制台检查可用的网络驱动器:
println "net use".execute().getText()
你的init.groovy看起来像这样:
def mapdrive = "net use z: \\\\YOUR_REMOTE_MACHINE\\SHARED_FOLDERNAME"
mapdrive.execute()
是Jenkins使用不同的登录凭据。要通过Jenkins映射驱动器,请在Jenkins命令提示符中使用以下命令:
Subst U:\ drive \ folder
之后你的查询。
您可能会遇到权限问题。 Jenkins可能会使用不同的用户凭据执行;所以它不知道配置的Windows共享驱动器。我建议使用插件而不是使用shell脚本。有一组Publish-over插件,允许通过几个协议(ssh,cfis等)部署到远程系统。看看允许将工件发送到Windows共享的CFIS plugin。一旦配置了插件(即在Manage Jenkins部分中指定了主机),您就可以添加到后期构建步骤。将文件发送到Windows共享,您可以在其中指定将哪些文件发送到哪个位置。
尝试将调试命令添加到该bat文件中,或者作为单独的构建步骤,例如net use
,set
(注意像HOMEPATH
和USERNAME
这样的变量)和普通的dir Z:\
。
正如在另一个答案中所说,最可能的原因是Jenkins运行为SYSTEM
用户,它具有不同的权限。一种方法是,转到服务(例如打开任务管理器,转到其中的服务选项卡,单击该选项卡右下角的服务按钮),找到Jenkins服务,打开它的属性,转到“登录“选项卡并将您的普通用户帐户设置为运行Jenkins的帐户。
基本上,您可以使用servername或jenkins命令的IP访问网络共享驱动器(Z)。写\\192.168.x.xxx\Your_Folder
而不是z:\Your_Folder
。
例如:
mkdir \\192.168.x.xxx\Your_Folder
我试图将文件从一台远程计算机复制到另一台,对我来说简单的解决方案是COPY iphone.exe \ 192.xx.xx.xx \ dev(dev是该IP地址中c驱动器上的文件夹名称)
在这个documentation之后,在Windows Server 2008上设置的Jenkins奴隶上出现了类似的问题。即使在使用正确的用户凭据配置代理服务后,Jenkins代理也无法访问已装入的网络驱动器。
故障排除:
services.msc
停止代理服务,然后通过运行命令jenkins-slave.exe uninstall
将其卸载。此时从站断开连接。概要:
不要将从属代理安装为Windows服务,以便使用驱动器号访问已安装的网络驱动器。但这非常不可靠,因为代理可能在机器重启后无法重启。或者,看看Jenkins是否可以通过\\<ip_address\of\network\drive>
访问它们。