通过SSH将文件与jenkins一起移动到工作区之外

通过SSH将文件与jenkins一起移动到工作区之外,ssh,jenkins,liferay,Ssh,Jenkins,Liferay,我正在尝试为liferay插件制作一份工作,让它构建war,然后通过插件将其传输到远程liferay门户 我的作业的工作区位于SDK Portlet目录中。问题是liferay SDK的构建脚本正在更高级别的工作区外的目录上创建war,因此相对路径是../dist 目录结构如下所示 - SDK root + - ... - dist (the dir where the war is being created) - ... - portlets (the workspace of

我正在尝试为liferay插件制作一份工作,让它构建war,然后通过插件将其传输到远程liferay门户

我的作业的工作区位于SDK Portlet目录中。问题是liferay SDK的构建脚本正在更高级别的工作区外的目录上创建war,因此相对路径是../dist 目录结构如下所示

- SDK root
+ - ...
  - dist (the dir where the war is being created)
  - ...
  - portlets (the workspace of my job)
  - ...
因此,当我将相对路径[../dist/portlet\u name.war]指定给SSH发布服务器的“源文件”字段时,它会找到0个要传输的文件:

SSH: Connecting SFTP channel ...
SSH: Connected
SSH: cd [/opt/liferay-portal]
SSH: OK
SSH: Disconnecting configuration [server_name [liferay]] ...
SSH: Transferred 0 file(s)
我也试图给出绝对路径,但没有成功

有办法得到文件吗?提前感谢。

找到此案例

最简单的解决方案可能是使用构建步骤将文件复制到您的工作区中

因此,在传输文件之前,您需要添加“执行Shell”步骤:

# current dir is your job's workspace
rm -fr your.file
cp ../../anotherJob/workspace/target/your.file

我已经找到了一个可能的解决办法,但它似乎不是很优雅。在“高级项目选项”中,我将自定义工作区设置为liferay SDK根目录,然后在Subversion部分的“源代码管理”中,我将“本地模块选项”设置为“Portlet/ModulePortletName”。旧值为“ModulePortletName”。使用这个技巧,我将工作区目录移到了更高的一级,因此现在我可以根据需要使用SSH“查看”dist目录。但我相信有一个更好的解决这个问题的方法…一个符号链接就足够了。。。ln-s.././anotherJob/workspace/target/your.file your.file