如果您不想在 Jenkins 插件或定时任务中使用,这里介绍一种“groovy”的方法:
手动方式:
您可以使用 Jenkins 提供的 Groovy 脚本控制台,在 Jenkins > 管理 Jenkins > 脚本控制台中执行命令来为 Jenkins 服务映射网络驱动器。(必须在停止 Jenkins 服务后再次执行)
自动化方式:
将您的 Groovy 命令编写到名为“init.groovy”的文件中,并将其放置在 JENKINS_HOME 目录中。这样,在 Jenkins 启动时就会映射网络驱动器。
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
然后,执行您的查询。
打开您的作业。 进入“预步骤” 从下拉菜单中选择“执行Windows批处理命令” 输入以下命令: net use E:\[服务器名称][文件夹名称]“[密码]”/user:“[用户ID]” 点击保存 执行该作业
按照上述步骤,我能够从我的网络驱动器中读取文件。
这似乎是一次性的活动,因为在最初运行之后,我已经从我的作业中删除了批处理命令,并且它似乎记住了映射驱动器命令。
只需在命令提示符中使用该命令即可。
pushd "\sharedDrive\Folder1\DestinationFolder"
mkdir 文件夹名称
popd
pushd >> 它通过创建虚拟驱动器导航到共享驱动器。 popd >> 将您带回本地目录。
尝试将调试命令添加到批处理文件中,或作为单独的构建步骤,例如net use
,set
(注意像HOMEPATH
和USERNAME
这样的变量)和纯粹的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
我们在安装在Windows Server 2008上的Jenkins从机上遇到了类似的问题,参考了这个文档。即使配置了正确的用户凭据,Jenkins代理仍无法访问已挂载的网络驱动器。
故障排除:
services.msc
停止代理服务,然后通过运行命令jenkins-slave.exe uninstall
卸载代理。此时从机已断开连接。简介:
不要将从属代理作为 Windows 服务安装,以便使用驱动器字母访问已挂载的网络驱动器。但这是非常不可靠的,因为代理可能在机器重新启动后无法重新启动。或者,尝试通过\\<ip_address\of\network\drive>
让 Jenkins 访问它们。我试图从一个远程计算机复制文件到另一个,对我有效的简单解决方案是COPY iphone.exe \192.xx.xx.xx\dev(dev是该IP地址上C驱动器中的文件夹名称)