一.背景
java项目要求,通过jenkins把 maven工程编译打包后的war部署到另一台linux server上的glassfish(Ver3.1)中,在网上搜索的时候看到有人使用Jenkins的插件,可以通过插件直接把war包部署到linux,然后按照网说文章说的安装插件,打包部署,但是总是部署失败,项目需要尽快部署,所以只能改用其它方法来实现
二.解决方法
在网上搜到了一个软件, pscp,软件下载地址(可能需要FQ) 下载 pscp, 这个软件和 putty是一家的, 所以可以放心使用,pscp可以上传文件和文件夹,可以满足我的要求
具体步骤
1.下载后,是一个exe文件:pscp.exe,把这个软件直接复制到C:WindowsSystem32下(我的jenkins安装在一台win7上),这样使用时不能带上pscp软件的完整路径,简单省事
2.上传文件夹使用命令 pscp -r -l root -pw xxyyzz D:jenkins的home文件平workspace构建的项目名(是个文件夹)xxxyyy 192.168.20.200:/xxx/zzz,
也可以上传文件 pscp -r -l root -pw xxyyzz D:jenkins的home文件平workspace构建的项目名(是个文件夹)xxxyyy123.war 192.168.20.200:/xxx/zzz
解释:
-r 递归文件夹(上传时连子文件夹一起上传)
-l 指定用户名
-pw 用户密码
之后是需要上传的文件夹或文件名
最后是linux的 IP:目标文件夹
如果没有错误(如用户名或密码不正确, 路径或文件不存在等)整个命令在 cmd下执行就可以上传文件到linux了, 我所使用的方法是把命令(有多个)写在一个bat文件里, 在jenkins里调用bat, 也可以在kenkins的构建项目中设置
三.问题
第一次执行上面的命令时会提示问你是否要缓存一个什么信息,当时没有截图,,否则在jenkins下构建时执行这个命令会每一条都问一次,而且你还没有输入Y的地方,结果就是构建失败.
Fix问题: 在Jenkins所在的windows的cmd窗口执行一下这个命令,上传任意一个文件到任意目录,,根据提示输入Y,回车,以后就再也没会要求输入确认了