仅当存在新版本的文件

时间:2018-05-08 16:26:54

标签: jenkins groovy master-slave

我们有一个主人和两个奴隶。 在Master上有一项工作可以检查Nexus上是否有新版本,如果是,则下载最新的jar并在文本文件VERSION.TXT中更新最新版本(即xxx-0.012.jar)。 (只能从master访问nexus。)

我们需要在奴隶上运行下载的jar,因此我们需要从master中复制它。

我们的工作几乎没有其他工作: 1)CHECK_LATEST_JAR:在master上运行的作业,检查nexus上是否有新版本的jar,下载它。 2)GET_JAR_TO_SLAVE:在slave上运行的作业,应该从master复制最新的jar 3)RUN_JAR:从文件VERSION.TXT获取最新jar名称并运行具有此名称的jar的作业。

在CHECK_LATEST_JAR中,如果在nexus上找到更新版本,我们会将其下载到工作区和存档工件(jar +带有最新版本的文本文件)。

现在在GET_JAR_TO_SLAVE中,我们想要使用"复制来自其他工作的工件"插件 - 但是这里我们需要添加一个条件来运行这个步骤只有在有更新的版本时好像CHECK_LATEST_JAR中没有工件这个工作失败了..

有没有办法比较位于主服务器上的文件和位于服务器上的文件? 尝试使用groovy脚本的条件步骤 - 但如果作业在slave上运行,则无法弄清楚如何告诉它访问master上的文件。

刚刚遇到可能会使用的FSTrigger插件 - 但同样的问题是如何告诉它在master上监视文件VERSION.TXT以及是否有更改在slave上运行作业。

会对我们如何实现目标的任何想法表示感谢。 感谢

1 个答案:

答案 0 :(得分:0)

我们找到了插件Copy Data to Workspace并使用它将包含最新版本的文件从Master上的文件夹复制到在其中一个从属服务器上运行的作业的工作空间。 之后,我们使用Conditional BuildStep plugin字符串与Token宏进行比较来比较文件内容,如果文件内容不同,我们会复制下载jar的作业的工件。 files content comparison