SCP Jenkins插件不会有选择地复制

时间:2014-03-26 19:55:27

标签: jenkins jenkins-plugins scp

我想使用Jenkins SCP插件将目录中的特定文件仅复制到远程服务器。

我有文件夹结构/X/Y/...在Y下,我只需要b c d e f中的文件a b c。这可能......?

当然,要复制所有文件,只需要X / Y / **即可。但是有选择地复制呢。 我正在读某个地方,这是插件中的一种错误。

我有一个字符串参数,$ FILES = x,y,z在" BUILD WITH PARAMETERS"

中突出显示

SCP配置:

来源:some / path / $ FILES(相对于$ WORKSPACE) 目的地:/ var / lib / some / path

1 个答案:

答案 0 :(得分:0)

您应该可以说X/Y/a; X/Y/b; X/Y/c 还要记住,这些文件必须在工作${WORKSPACE}

之下

或者,您可以在中间执行另一个构建步骤,仅将您想要的文件复制到暂存文件夹,然后将暂存文件夹提供给SCP插件

在OP澄清后进行编辑:

您的$FILES变量包含x,y,z当您将此作为 Source 提供给SCP插件时,它变为:

some/path/x,y,z

或者如果我们每行打破这一项:

some/path/x
y
z

第一项有效,接下来的两项不是完整路径,因此找不到。

修复它的几种方法(选择一个):

参数变量中的完整路径。

  • 在您的FILES 字符串参数下,列出完整路径,例如:
    some/path/x, some/path/y, some/path/z
  • SCP来源下,仅使用$FILES

专业人士:快速稳定 缺点:长路径看起来很丑陋。

参数变量中的通配符路径。

  • 在您的FILES 字符串参数下,列出全局通配符路径(可在任何目录下找到文件),例如:
    **/x, **/y, **/z
  • SCP来源下,仅使用$FILES

专业人士:快速查找 比长路径更快 如果文件xyz在您的整个工作区中都是唯一的,那么缺点: 才有效。如果有$WORKSPACE/x$WORKSPACE/some/path/x,则最终会覆盖另一个。

准备MYFILES变量并注入它。

  • 您需要添加执行Shell 构建步骤。在那里写下以下内容:
    mypath=some/path/ echo MYFILES=${mypath}${files//,/,$mypath} > myfiles.props
  • 然后添加 Inject environment variables 构建步骤(在链接中获取插件)。在属性文件路径下,指定myfiles.props
  • SCP来源下,仅使用$MYFILES(请注意,您正在阅读已修改和注入的变量,而非原始$FILES

专业人士:在用户界面看起来很好,适当且可进一步定制 缺点:维护配置的更多构建步骤。

<强> P.S。
在所有这些情况下,多选 Extended Choice Parameter 可能看起来比字符串参数更好。