使用Jenkins中的SSH插件传输0个文件

时间:2014-11-20 23:25:43

标签: ssh jenkins

我已经阅读了thisthis以及this的答案,但是他们没有帮助我。 我正在为Jenkins使用Windows机器

我的工作区只有以下文件

C:\詹金斯\工作空间\ COPY_FILE \的DevOps \资源\ FILE1.TXT C:\詹金斯\工作空间\ COPY_FILE \的DevOps \资源\ FILE2.TXT

我想通过ssh发布file1.txt

我将插件添加到Publish Over SSH:

Source files  DevOps\resource\file1.txt
Remove prefix DevOps\resource
Remote directory /tmp/

但是我在结果中看到了:

C:\Jenkins\workspace\Copy_file\DevOps\resource\file1.txt
SSH: Connecting from host [hhhhh]
SSH: Connecting with configuration [Redhat1] ...
SSH: Creating session: username [hhhh], hostname [iiiiii], port [22]
SSH: Connecting session ...
SSH: Connected
SSH: Opening SFTP channel ...
SSH: SFTP channel open
SSH: Connecting SFTP channel ...
SSH: Connected
SSH: Remote root is not absolute, getting absolute directory from PWD
SSH: Disconnecting configuration [Redhat1] ...
SSH: Transferred 0 file(s)
Build step 'Send files or execute commands over SSH' changed build result to SUCCESS
Finished: SUCCESS
  
      
  1. 为什么要发送0个文件?
  2.   
  3. 如何将路径设为绝对路径,以便将其放入/ tmp /而不是/ home / user / tmp?
  4.   

已更新

enter image description here

5 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,我在这篇文章中找到了解决方案。

  • 特别是我发生的事情是,我们在插件配置中使用的用户无权访问“根路径”(“/”),这导致连接默认位于“/ home” / usery /".

  • 确保您使用的用户可以访问绝对路径“/ tmp /”,因为当我尝试使用相同的配置时,您使用此用户创建了此路径(/ home / usery / tmp而不是在/ tmp / path中:

SSH:远程root不是绝对的,从PWD获取绝对目录 SSH:cd [/ home / usery] SSH:好的 SSH:mkdir [tmp] SSH:好的 SSH:cd [tmp] SSH:好的 SSH:把[myjar.jar]

也许您的用户无权创建新目录。

  • 尝试使用用户的“home”路径,例如,尝试创建路径“/ home / usery / localdir / anotherDir”,然后将“Remote directory”的配置更改为“localdir /” anotherDir”。

  • 最后,我们在Windows机器上安装了Jenkins,稍后我们将它移到Linux机器上,你必须小心路径分隔符“\”和“/”,记住这一点:< / p>

      

    源文件   和   删除前缀

我希望我的评论会帮助你。

答案 1 :(得分:2)

我一直在研究这个插件,但我找不到工作原因。

Q.A.我公司的团队使用this插件,工作正常。

通过尝试回答您的问题,我将尝试解释有关此新插件的配置:

  • 进入全局配置: Example global configuration

    • 主机名: is-bvt-rh-01.XXXXX.com
    • port: 22
    • 根存储库路径: / (允许将文件放在/ tmp /而不是/ home / user / tmp。根存储库路径必须存在才能引用它,并且应该可以由用户访问发布文件。)
    • 用户名: bvtuser
    • 密码: [YOUR_SSH_PASSWORD]
  • 进入特定于作业的配置: Example job configuration

    • SCP网站: is-bvt-rh-01.XXXXX.com
    • 来源: DevOps \ resource \ file1.txt (路径是从工作区根目录构建的。)
    • 目的地: tmp /

希望它有所帮助!

答案 2 :(得分:0)

我最终使用

  1. 执行Shell插件以传输文件。

  2. 然后使用Publish over SSH插件使用上传文件中包含的SQL脚本对我的RDS实例执行mysql命令。

答案 3 :(得分:0)

查看plugin source code,后,如果您的ssh服务器配置中未设置“ 远程目录”,则默认使用相对路径。

转到管理Jenkins / 配置系统,然后在用于通过ssh发布的插件设置下,将远程目录设置为” / “

答案 4 :(得分:0)

源文件路径将相对于Jenkins项目工作区。

例如,如果您创建一个名为rmr的作业,并且有一个名为file.zip的存档文件,则该文件的路径如下:

/var/lib/jenkins/workspace/ormr/file.zip

(rmr是项目名称)

...因此,您将需要提供相对于您的项目工作区的路径,如下所示

传输集

Source files: file.zip
Remove prefix:
Remote directory: //home//ec2-user//rmr//target
Exec command: 

请注意,目标路径分隔符已被两次转义。