我想从网络共享驱动器(安装在我的本地机器上作为驱动器 Z)复制一些文件。我已经编写了一个批处理文件来将 Z 驱动器的内容复制到我的本地驱动器中。这个批处理文件在 cmd 上成功运行,但是当我通过 Jenkins 触发它时遇到问题。詹金斯给出以下错误:
“系统找不到指定的驱动器”
对此的任何帮助,将不胜感激。
谢谢,努曼。
我想从网络共享驱动器(安装在我的本地机器上作为驱动器 Z)复制一些文件。我已经编写了一个批处理文件来将 Z 驱动器的内容复制到我的本地驱动器中。这个批处理文件在 cmd 上成功运行,但是当我通过 Jenkins 触发它时遇到问题。詹金斯给出以下错误:
“系统找不到指定的驱动器”
对此的任何帮助,将不胜感激。
谢谢,努曼。
如果您不想使用 Jenkins-plugins 或 schedule-Tasks 这是一种“常规”方式:
用手:
您可以使用 Jenkins>Manage Jenkins>Script Console 提供的 Groovy Script-Console 并执行命令在 Jenkins-service 中映射网络驱动器。(必须重复,一旦 Jenkins 服务停止)
自动化:
将 Groovy 命令写入名为“init.groovy”的文件,并将其放在 JENKINS_HOME 目录中。所以网络驱动器被映射到 Jenkins-startup 上。
Groovy 命令 - Windows:
使用 Script-Console 检查可用的网络驱动器:
println "net use".execute().getText()
你的 init.groovy 看起来像这样:
def mapdrive = "net use z: \\\\YOUR_REMOTE_MACHINE\\SHARED_FOLDERNAME"
mapdrive.execute()
是的 Jenkins 使用不同的登录凭据。要通过 Jenkins 映射驱动器,请在 Jenkins 命令提示符中使用以下命令:
替代 U:\驱动器\文件夹
然后你的查询。
您可能会遇到权限问题。Jenkins 可能会使用不同的用户凭据执行;所以它不知道为 Windows 共享配置的驱动器。我建议不要使用 shell 脚本,而是使用插件。有一组Publish-over插件允许通过几个协议(ssh、cfis 等)部署到远程系统。查看允许将工件发送到 Windows 共享的CFIS 插件。一旦配置了插件(即在Manage Jenkins部分中指定了主机),您可以添加到后期构建步骤将文件发送到 Windows 共享,您可以在其中指定应将哪些文件发送到哪个位置。
尝试将调试命令添加到该 bat 文件,或作为单独的构建步骤,例如net use
, set
(注意像HOMEPATH
和这样的变量USERNAME
)和 plain dir Z:\
。
正如在另一个答案中所说,最可能的原因是 Jenkins 以SYSTEM
用户身份运行,该用户具有不同的权限。一种解决方法是,转到服务(例如打开任务管理器,转到其中的“服务”选项卡,单击该选项卡右下角的“服务”按钮),找到 Jenkins 服务,打开它的属性,转到“登录" 选项卡并将您的普通用户帐户设置为运行 Jenkins 的帐户。
基本上,您可以使用 jenkins 命令中的服务器名或 IP 访问您的网络共享驱动器 (Z)。写 \\192.168.x.xxx\Your_Folder
而不是z:\Your_Folder
.
例如:
mkdir \\192.168.x.xxx\Your_Folder
只需在 cmd 提示符下使用命令
pushd "\sharedDrive\Folder1\DestinationFolder"
mkdir 文件夹名称
流行音乐
pushd >> 它通过创建虚拟驱动器导航到共享驱动器.. popd >> 让您回到本地目录
在本文档之后,我们在 Windows Server 2008 上设置的 Jenkins slave 上出现了类似的问题。即使在使用正确的用户凭据配置代理服务后,Jenkins 代理也无法访问已安装的网络驱动器。
故障排除:
services.msc
,然后通过运行命令将其卸载jenkins-slave.exe uninstall
。从站此时断开连接。概要:
不要将从代理安装为 Windows 服务,以继续使用驱动器号访问已安装的网络驱动器。但这是非常不可靠的,因为代理可能无法在机器重新启动后重新启动。或者,查看 Jenkins 是否可以通过\\<ip_address\of\network\drive>
.
我试图将文件从一台远程计算机复制到另一台,对我有用的简单解决方案是 COPY iphone.exe \192.xx.xx.xx\dev(dev 是该 IP 地址中 c 驱动器上的文件夹名称)
有这个问题,我的詹金斯工作无法读取网络驱动器上存在的文件。我通过在预构建步骤中添加“net use”命令解决了这个问题。IE
打开你的工作。转到 Pre Steps 从下拉列表中选择 Execute Windows Batch Command 输入以下命令:net use E:\[server name][Folder name] "[password]" /user:"[userid]" 点击 Save 执行作业
按照上面提到的步骤,我能够从我的网络驱动器中读取文件。
这似乎是一次活动,因为在初次运行之后,我已经从我的工作中删除了批处理命令,它似乎记住了映射的驱动器命令。