在Jenkins中共享时间戳



我确实有一个jenkins工作,我从Maven插件内执行命令,执行ant构建脚本。该作业还执行2个ant调用,因为有2个镜像服务器。像这样:

usr/bin/ant -v -d -f /utils_repo/build.xml ${target} -propertyfile /tmp/myjob/install.properties

Maven连接到每个服务器并执行类似的操作。我的问题是我如何共享詹金斯作业在2个蚂蚁调用实例内开始的时间戳。在蚂蚁的工作我有一个备份构建步骤在轧制前一个新的代码,但是我需要把逻辑如果转储/第一个主机上备份完成,不做第二个像nfs挂载共享mysql实例和核心文件,现在发生的事情是没有逻辑,当第二个蚂蚁叫转储在第二台服务器上运行它从第一个实例覆盖前面的转储与新数据和更新的mysql。

所以我在考虑创建一个触摸任务来触摸一些文件,因为我在2台服务器之间共享目录,但是我对两个服务器实例都有相同的build.xml,所以触摸将在第二个蚂蚁调用上执行,并覆盖第一个蚂蚁调用的修改时间。

我想如果我可以共享jenkins的时间戳属性,当作业在2个蚂蚁作业中开始。我不知道这是否可能。

提前感谢您的建议。

我建议您应该使用Jenkins设置的环境变量BUILD_NUMBER,并将其存储在您的nfs上,例如作为属性文件。

因此,如果该属性文件不存在,或者从那里加载的属性值与Jenkins设置的环境变量不匹配,则意味着当前节点是第一个为Jenkins作业运行的节点。所以它可以做备份。该节点将使用当前构建号覆盖共享属性文件。

如果加载的属性与当前的构建号匹配,那么这意味着第一次运行已经完成,没有备份要做。

实现提示:

  • 将构建号添加到命令行

    usr/bin/ant -v -d -f /utils_repo/build.xml ${target} -propertyfile /tmp/myjob/install.properties -Dexpected.jenkins.build.number=$BUILD_NUMBER
    
  • 使用ant贡献if/then/else任务:http://ant-contrib.sourceforge.net/tasks/tasks/index.html

  • 写入属性文件:

    <echo file="/mnt/nfs/shared/jenkins.properties">jenkins.build.number=$expected.jenkins.build.number</echo>
    

相关内容

  • 没有找到相关文章

最新更新