我试图在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
。
以下是jenkins的输出:
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
任何帮助都将不胜感激。
答案 0 :(得分:14)
我也曾遇到过类似的问题。尝试授予Jenkins服务"以此帐户登录"在services.msc
下方,并确保您在其中输入的帐户与用于运行cmd.exe
的帐户相同。
答案 1 :(得分:3)
这些基于Java JAR文件的命令对我有用:
CMD
净使用x:\\
xcopy“dist \”x:\ / Y.
就是这样!我花了很多时间弄清楚这个问题,直到我写了CMD和NET USE才有效!
我既不需要更改jenkins服务的权限也不需要使用runas命令。
但我必须提到每个人都有对网络驱动器的读写权限。
答案 2 :(得分:1)
我的Windows任务运行批处理文件时遇到了同样的问题(我知道它并不完全相同)我试图将文件复制到网络位置,即共享驱动器。我也使用了UNC路径和映射驱动器,但错误是一样的。对我来说这是错误号4 - MS DOS错误代码。 解决方案是使用 net use 命令!希望它有所帮助。
答案 3 :(得分:1)
轻松修复大多数事情。
:)
答案 4 :(得分:0)
adarshr的解决方案(即,修改服务的登录凭据)对我来说已经解决了部分问题:在我的情况下,这使我能够成功检出一个mercurial存储库(使用ssh协议),使用“本地系统帐户”时我无法做到。
但是,在构建部分中运行命令行脚本或从jenkins的“执行shell”脚本运行相同的脚本之间,我仍然有不同的行为。在我的例子中,我编译了一个Python扩展。在Jenkins中,我无法导入扩展名(我没有看到任何错误,但执行只是停止,所以我怀疑它崩溃了。)
如果我卸载服务并将从属代理作为Java Web Start运行,我的行为也是如此。这对我来说是一个临时修复,但这意味着当我重新启动Windows构建机器时,我必须手动重新启动Java Web Start应用程序。
所以 - 至少在我的情况下 - 很明显这是一个凭证问题。
凭据使用文档:https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI
答案 5 :(得分:0)
我已使用CIFS plugin解决了我的问题。
答案 6 :(得分:0)
面对类似的问题,找到了两种解决方法。
类型1: 告诉詹金斯关于映射驱动器。 1.Goto - >管理Jenkins - >脚本控制台(Groovy脚本)。 2.按命令运行
def mapdrive = "net use Y: \\\\copy_nework_address"
mapdrive.execute();
println "net use".execute().getText()
类型:2 1.Goto - > cmd - >运行"净使用"了解网络地址
xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Copy_Network_Address\Extraction_Zone\Jenkins\" /E
结论: - 我更喜欢第二种类型,因为每次重启后我都应该运行Groovy Script。