18

我试图在 MSbuild 之后在 jenkins 中运行这个命令

xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Y:\Extraction_Zone\Jenkins\" /E 

Y:是映射的网络驱动器。这在 cmd.exe 中运行良好,但是当尝试在 Jenkins 中运行它时,我得到了错误Invalid drive specification

这是詹金斯的输出:

Time Elapsed 00:00:04.03
[trunk] $ cmd /c call C:\Windows\TEMP\hudson3389873107474371072.bat

C:\Program Files (x86)\Jenkins\workspace\trunk>xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Y:\Extraction_Zone\Jenkins\" /E 
Invalid drive specification
0 File(s) copied

C:\Program Files (x86)\Jenkins\workspace\trunk>exit 4 
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

任何帮助,将不胜感激。

4

7 回答 7

17

我也曾经有过类似的问题。尝试在下面授予 Jenkins 服务“以此帐户登录”,services.msc并确保您在此处键入的帐户与您用于运行的帐户相同cmd.exe

在此处输入图像描述

于 2012-06-08T16:05:15.680 回答
4

这些基于 Java JAR 文件的命令对我有用:
cmd
net use x: \\
xcopy "dist\" x:\ /Y

就是这样!我花了很多时间来解决这个问题,直到我写了 CMD 和 NET USE!
我既不需要更改对 jenkins 服务的权限,也不需要使用 runas 命令。

但我必须提到,每个人都对网络驱动器具有读写权限。

于 2014-04-06T16:36:43.107 回答
1

我的 Windows 任务运行批处理文件时遇到了同样的问题(我知道它不完全相同),我试图将文件复制到网络位置,即共享驱动器。我也使用了 UNC 路径和映射驱动器,但错误是一样的。对我来说,这是错误号 4 - MS DOS 错误代码。解决方案是使用net use命令!希望它有所帮助。

于 2013-12-17T05:48:39.033 回答
1

大多数事情都很容易解决。

  1. 使用您尝试运行的内容创建一个批处理命令,filename.bat 并在其中包含命令提示符文本。
  2. 为批处理命令创建一个普通的 Windows 快捷方式,编辑快捷方式高级属性并检查“以管理员身份运行”(棘手棘手)。
  3. 现在从 jenkins 命令行调用中运行 filename.lnk 快捷方式,这将使您了解所有爵士乐。

:)

于 2017-07-27T20:47:36.753 回答
0

我已经用CIFS 插件解决了我的问题。

于 2015-03-19T11:59:39.030 回答
0

adarshr 的解决方案(即修改服务的登录凭据)对我来说解决了部分问题:就我而言,这使我能够成功签出一个 mercurial 存储库(使用 ssh 协议),我可以使用“本地系统帐户”时不这样做。

但是,在运行命令行脚本或从构建部分中的 jenkins 'execute shell' 脚本运行相同的脚本之间,我仍然有不同的行为。就我而言,我编译了一个 Python 扩展。在 Jenkins 中,我无法导入扩展(我没有看到任何错误,但执行只是停止了,所以我怀疑它崩溃了)。

如果我卸载该服务并将从代理作为 Java Web Start 运行,我会得到相同的行为。这对我来说是一个临时修复,但这意味着当我重新启动 Windows 构建机器时,我必须手动重新启动 Java Web Start 应用程序。

所以 - 至少在我的情况下 - 很明显这是一个凭证问题。

凭证使用文档:https ://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI

于 2013-05-14T09:51:00.433 回答
0

遇到类似问题,找到了两种解决方法。

类型 1:告诉 Jenkins 映射驱动器。1.转到 -> 管理 Jenkins -> 脚本控制台(Groovy 脚本)。2.运行以下命令

 def mapdrive = "net use Y: \\\\copy_nework_address"
 mapdrive.execute();
 println "net use".execute().getText()

类型:2 1.Goto -> cmd -> 运行“net use”以了解网络地址

xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Copy_Network_Address\Extraction_Zone\Jenkins\" /E

结论:- 我更喜欢第二种类型,因为每次重新启动后我都应该运行 Groovy 脚本。

于 2017-01-25T10:50:48.490 回答