系统无法在Jenkins中找到指定的驱动器

时间:2012-11-29 07:02:17

标签: batch-file jenkins cmd hudson jenkins-plugins

我想从网络共享驱动器复制一些文件(在我的本地计算机上安装为驱动器Z)。我写了一个批处理文件,将Z盘的内容复制到我的本地驱动器中。此批处理文件在cmd上成功运行,但是当我通过Jenkins触发它时,我遇到了问题。 Jenkins给出了以下错误:

“系统无法找到指定的驱动器”

对此有任何帮助,将不胜感激。

谢谢, Nouman。

9 个答案:

答案 0 :(得分:8)

如果您不想使用Jenkins-plugins或schedule-Tasks,这里的方式是“groovy”:

手动

您可以使用Jenkins提供的Groovy脚本控制台>管理Jenkins>脚本控制台并执行命令以在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()

答案 1 :(得分:1)

您可能会遇到权限问题。 Jenkins可能会使用不同的用户凭据执行;所以它不知道配置的Windows共享驱动器。我建议使用插件而不是使用shell脚本。有一组Publish-over插件允许通过几个协议(ssh,cfis等)部署到远程系统。查看允许将工件发送到Windows共享的CFIS plugin。一旦配置了插件(即主机在 Manage Jenkins 部分中指定),您就可以添加到后期构建步骤将文件发送到Windows共享,您可以在其中指定文件应发送到哪个位置。

答案 2 :(得分:1)

是Jenkins使用不同的登录凭据。要通过Jenkins映射驱动器,请在Jenkins命令提示符下使用以下命令:

Subst U:\ drive \ folder

然后是你的查询。

答案 3 :(得分:0)

尝试向该bat文件添加调试命令,或者作为单独的构建步骤,例如net useset(注意像HOMEPATHUSERNAME这样的变量和普通dir Z:\

正如另一个回答所说,最有可能的原因是Jenkins以SYSTEM用户身份运行,该用户具有不同的权限。一种方法是,转到服务(例如打开任务管理器,转到其中的服务选项卡,单击该选项卡右下角的服务按钮),找到Jenkins服务,打开它的属性,转到“登录“选项卡并将您的普通用户帐户设置为运行Jenkins的帐户。

答案 4 :(得分:0)

基本上,您可以使用jenkins命令中的服务器名或IP使用网络共享驱动器(Z)。写\\192.168.x.xxx\Your_Folder而不是z:\Your_Folder

例如:

mkdir \\192.168.x.xxx\Your_Folder

答案 5 :(得分:0)

我试图将文件从一台远程计算机复制到另一台,对我有用的简单解决方案是COPY iphone.exe \ 192.xx.xx.xx \ dev(dev是该ip中c驱动器上的文件夹名称地址)

答案 6 :(得分:0)

在此documentation之后,在Windows Server 2008上设置的Jenkins从属服务器上也出现了类似的问题。即使使用正确的用户凭据配置了代理服务,Jenkins代理仍无法访问已安装的网络驱动器。

故障排除:

  1. Jenkins通过JNLP代理(通过Java Web Start启动代理)连接时,可以通过驱动器号访问已安装的网络驱动器。
  2. 在将代理安装为Windows服务后不久,它将停止识别驱动器号。配置正确的用户凭据并重新启动代理无济于事。
  3. 以上述用户身份登录到计算机后,我们仍然可以通过命令行访问驱动器。
  4. services.msc停止代理服务,然后通过运行命令jenkins-slave.exe uninstall将其卸载。此时,从属服务器已断开连接。
  5. 通过Java Web Start启动JNLP代理,重新连接从属服务器。代理现在可以再次访问网络驱动器。

简介:

请勿将从属代理安装为Windows服务,以继续使用驱动器号访问已安装的网络驱动器。但这非常不可靠,因为代理可能在计算机重新启动后无法重新启动。或者,查看詹金斯是否可以通过\\<ip_address\of\network\drive>访问它们。

答案 7 :(得分:0)

为了访问您的远程驱动器

只需在cmd提示符下使用命令


  • 按下“ \ sharedDrive \ Folder1 \ DestinationFolder”

  • mkdir FolderName

  • 弹出


pushd >>通过创建虚拟驱动器导航到共享驱动器。 popd >>让您回到本地目录

答案 8 :(得分:0)

出现此问题,我的詹金斯工作无法读取网络驱动器上存在的文件。 我通过在预构建步骤中添加“ net use”命令来解决此问题。即

打开您的工作。 转到预备步骤 从下拉菜单中选择“执行Windows批处理命令” 输入以下命令: 净用途E:\ [服务器名称] [文件夹名称]“ [密码]” /用户:“ [用户ID]” 点击保存 执行作业

通过执行上述步骤,我能够从网络驱动器中读取文件。

这似乎是一次活动,因为在初次运行后,我从工作中删除了批处理命令,并且似乎还记得映射的驱动器命令。